From 49e9c8e3f33aa337658e9d8618c76caf92b7dcc1 Mon Sep 17 00:00:00 2001 From: nagdahimanshu Date: Thu, 8 Jun 2023 12:33:52 +0200 Subject: [PATCH 01/71] Cache genesis height in coordinator Skip missing blocks scheduling job in some cases Add log messages --- services/blockchain-coordinator/config.js | 3 +- .../shared/eventsScheduler.js | 13 ++++++- .../shared/scheduler.js | 37 ++++++++++++------- .../shared/sources/connector.js | 14 ++++--- .../shared/sources/indexer.js | 3 -- 5 files changed, 47 insertions(+), 23 deletions(-) diff --git a/services/blockchain-coordinator/config.js b/services/blockchain-coordinator/config.js index ae2c9ddf6e..aeb7dfae2a 100644 --- a/services/blockchain-coordinator/config.js +++ b/services/blockchain-coordinator/config.js @@ -75,8 +75,9 @@ config.queue = { config.job = { // Interval takes priority over schedule and must be greater than 0 to be valid indexMissingBlocks: { - interval: process.env.INDEX_MISSING_BLOCKS_INTERVAL || 0, + interval: process.env.INDEX_MISSING_BLOCKS_INTERVAL || 30, schedule: process.env.INDEX_MISSING_BLOCKS_SCHEDULE || '*/15 * * * *', + threshold: process.env.THRESHOLD || 100, // TODO: rename }, }; diff --git a/services/blockchain-coordinator/shared/eventsScheduler.js b/services/blockchain-coordinator/shared/eventsScheduler.js index 6947379ad9..6fb3e0a547 100644 --- a/services/blockchain-coordinator/shared/eventsScheduler.js +++ b/services/blockchain-coordinator/shared/eventsScheduler.js @@ -13,11 +13,16 @@ * Removal or modification of this copyright notice is prohibited. * */ -const { Signals } = require('lisk-service-framework'); +const { + Logger, + Signals, +} = require('lisk-service-framework'); const MessageQueue = require('bull'); const config = require('../config'); +const logger = Logger(); + const eventsQueue = new MessageQueue( config.queue.events.name, config.endpoints.messageQueue, @@ -26,17 +31,23 @@ const eventsQueue = new MessageQueue( const scheduleUpdatesOnNewBlock = async (payload) => { const { blockHeader } = payload; + logger.debug(`Scheduling indexing new block at height: ${blockHeader.height}.`); await eventsQueue.add({ blockHeader, isNewBlock: true }); + logger.info(`Finished scheduling indexing new block at height: ${blockHeader.height}.`); }; const scheduleDeleteBlock = async (payload) => { const { blockHeader } = payload; + logger.debug(`Scheduling updates for the delete block at height: ${blockHeader.height}.`); await eventsQueue.add({ blockHeader, isDeleteBlock: true }); + logger.info(`Finished scheduling updates for the delete block at height: ${blockHeader.height}.`); }; const scheduleUpdatesOnNewRound = async (payload) => { const { validators } = payload; + logger.debug('Scheduling updates on new round.'); await eventsQueue.add({ validators, isNewRound: true }); + logger.debug('Finished scheduling updates on new round}.'); }; const initEventsScheduler = async () => { diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 5b207b1ba5..2a40c7d24a 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -26,14 +26,13 @@ const { initEventsScheduler } = require('./eventsScheduler'); const { getMissingBlocks, getCurrentHeight, - getGenesisHeight, getIndexVerifiedHeight, setIndexVerifiedHeight, } = require('./sources/indexer'); const { - getRegisteredModules, getAllPosValidators, + getGenesisHeight, } = require('./sources/connector'); const config = require('../config'); @@ -50,8 +49,9 @@ const accountIndexQueue = new MessageQueue( { defaultJobOptions: config.queue.defaultJobOptions }, ); -let registeredLiskModules; -const getRegisteredModuleAssets = () => registeredLiskModules; +const { threshold } = config.job.indexMissingBlocks; + +const getJobCount = async (queue) => (await queue.getActiveCount() + await queue.getWaitingCount()); const scheduleBlocksIndexing = async (heights) => { const blockHeights = Array.isArray(heights) @@ -80,18 +80,17 @@ const scheduleValidatorsIndexing = async (validators) => { { concurrency: validators.length }, ); - logger.info('Finished scheduling of validators indexing.'); + logger.info(`Finished scheduling of validators indexing with ${validators.length} validators.`); }; const indexGenesisBlock = async () => { const genesisHeight = await getGenesisHeight(); + logger.debug('Scheduling genesis block indexing.'); await scheduleBlocksIndexing(genesisHeight); + logger.info('Finished scheduling genesis block indexing.'); }; const initIndexingScheduler = async () => { - // Retrieve enabled modules from connector - registeredLiskModules = await getRegisteredModules(); - // Get all validators and schedule indexing const { validators } = await getAllPosValidators(); if (Array.isArray(validators) && validators.length) { @@ -113,6 +112,15 @@ const scheduleMissingBlocksIndexing = async () => { const genesisHeight = await getGenesisHeight(); const currentHeight = await getCurrentHeight(); + const jobCount = await getJobCount(blockIndexQueue); + + // Skip missing blocks scheduling if Active+Waiting job count >= threshold or + // Active+Waiting job count <= (currentHeight - genesisHeight + 1 - configurableThreshold) + if (jobCount >= threshold || jobCount <= (currentHeight - genesisHeight + 1 - threshold)) { + logger.info('Skip scheduling missing blocks job.'); + return; + } + // Missing blocks are being checked during regular interval // By default they are checked from the blockchain's beginning const lastVerifiedHeight = await getIndexVerifiedHeight() || genesisHeight; @@ -140,18 +148,21 @@ const scheduleMissingBlocksIndexing = async () => { await scheduleBlocksIndexing(missingBlocksByHeight); } } catch (err) { - logger.warn(`Missed blocks indexing failed due to: ${err.message}.`); + logger.warn(`Missing blocks indexing failed due to: ${err.message}.`); } }; const init = async () => { - await indexGenesisBlock(); - await initIndexingScheduler(); - await initEventsScheduler(); + try { + await indexGenesisBlock(); + await initIndexingScheduler(); + await initEventsScheduler(); + } catch (error) { + logger.error(`Unable to initialize coordinator due to: ${error.message}`); + } }; module.exports = { init, - getRegisteredModuleAssets, scheduleMissingBlocksIndexing, }; diff --git a/services/blockchain-coordinator/shared/sources/connector.js b/services/blockchain-coordinator/shared/sources/connector.js index 2248c5ce22..2e63f4306a 100644 --- a/services/blockchain-coordinator/shared/sources/connector.js +++ b/services/blockchain-coordinator/shared/sources/connector.js @@ -15,14 +15,18 @@ */ const { requestConnector } = require('../utils/request'); -const getRegisteredModules = async () => { - const systemMetadata = await requestConnector('getSystemMetadata'); - return systemMetadata.modules; -}; +let genesisHeight; const getAllPosValidators = async () => requestConnector('getAllPosValidators'); +const getGenesisHeight = async () => { + if (typeof genesisHeight !== 'number') { + genesisHeight = await requestConnector('getGenesisHeight'); + } + return genesisHeight; +}; + module.exports = { - getRegisteredModules, getAllPosValidators, + getGenesisHeight, }; diff --git a/services/blockchain-coordinator/shared/sources/indexer.js b/services/blockchain-coordinator/shared/sources/indexer.js index 7465011a28..966b4fa128 100644 --- a/services/blockchain-coordinator/shared/sources/indexer.js +++ b/services/blockchain-coordinator/shared/sources/indexer.js @@ -22,8 +22,6 @@ const getMissingBlocks = async (from, to) => requestIndexer('getMissingBlocks', const getCurrentHeight = async () => requestIndexer('getCurrentHeight'); -const getGenesisHeight = async () => requestIndexer('getGenesisHeight'); - const getIndexVerifiedHeight = async () => requestIndexer('getIndexVerifiedHeight'); const setIndexVerifiedHeight = async (height) => requestIndexer('setIndexVerifiedHeight', { height }); @@ -31,7 +29,6 @@ const setIndexVerifiedHeight = async (height) => requestIndexer('setIndexVerifie module.exports = { getMissingBlocks, getCurrentHeight, - getGenesisHeight, getIndexVerifiedHeight, setIndexVerifiedHeight, }; From d5720c66d23a0b826659282e9de73e1ab0b8f7b7 Mon Sep 17 00:00:00 2001 From: nagdahimanshu Date: Thu, 8 Jun 2023 16:28:24 +0200 Subject: [PATCH 02/71] Make blocks indexing sequential --- .../shared/indexer/blockchainIndex.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 283d23e5b9..9e83a69609 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -89,6 +89,20 @@ const indexBlock = async job => { if (!validateBlock(block)) throw new Error(`Invalid block ${block.id} at height ${block.height}.`); const blocksTable = await getBlocksTable(); + + // Check if previous block is indexed, index previous block if not indexed + const prevBlockHeight = block.height === await getGenesisHeight() + ? block.height + : block.height - 1; + const prevBlockFromDB = await blocksTable.find({ height: prevBlockHeight }); + + /* eslint-disable no-use-before-define */ + if (!prevBlockFromDB.length) { + await addBlockToQueue(prevBlockHeight); + await addBlockToQueue(block.height); + } + /* eslint-enable no-use-before-define */ + const connection = await getDBConnection(MYSQL_ENDPOINT); const dbTrx = await startDBTransaction(connection); logger.debug(`Created new MySQL transaction to index block ${block.id} at height ${block.height}.`); From 403b91896017c56d2576b5a021103a339d9ef988 Mon Sep 17 00:00:00 2001 From: nagdahimanshu Date: Fri, 9 Jun 2023 11:39:36 +0200 Subject: [PATCH 03/71] :hammer: Update delete block implementation --- .../shared/indexer/blockchainIndex.js | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 9e83a69609..3666fdd4e1 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -96,12 +96,14 @@ const indexBlock = async job => { : block.height - 1; const prevBlockFromDB = await blocksTable.find({ height: prevBlockHeight }); - /* eslint-disable no-use-before-define */ if (!prevBlockFromDB.length) { + /* eslint-disable no-use-before-define */ await addBlockToQueue(prevBlockHeight); await addBlockToQueue(block.height); + /* eslint-enable no-use-before-define */ + + return; } - /* eslint-enable no-use-before-define */ const connection = await getDBConnection(MYSQL_ENDPOINT); const dbTrx = await startDBTransaction(connection); @@ -258,6 +260,20 @@ const deleteIndexedBlocks = async job => { await BluebirdPromise.map( blocks, async block => { + // Check if deleted block is indexed + const [deletedBlockFromDB] = await blocksTable.find({ height: block.height }); + + // Reschedule job if not deleted block is not indexed + if (!deletedBlockFromDB) { + /* eslint-disable no-use-before-define */ + await deleteBlock(block); + /* eslint-enable no-use-before-define */ + return; + } + // If deleted block is indexed, check for the blockID + // Continue only when blockID matches else skip + if (deletedBlockFromDB.id !== block.id) return; + let forkedTransactions; const transactionsTable = await getTransactionsTable(); const events = await getEventsByHeight(block.height); From d944a747e9802409dc3b28de748ff37e87eccdec Mon Sep 17 00:00:00 2001 From: nagdahimanshu Date: Mon, 12 Jun 2023 08:21:18 +0200 Subject: [PATCH 04/71] Use common constants between MySQL/KVStore --- framework/src/mysql/kvStore.js | 3 +-- framework/src/mysql/mysql.js | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/mysql/kvStore.js b/framework/src/mysql/kvStore.js index 1c32531e7f..69fa4ba4c7 100644 --- a/framework/src/mysql/kvStore.js +++ b/framework/src/mysql/kvStore.js @@ -13,13 +13,12 @@ * Removal or modification of this copyright notice is prohibited. * */ -const { getTableInstance } = require('./mysql'); +const { getTableInstance, CONN_ENDPOINT_DEFAULT } = require('./mysql'); const keyValueStoreSchema = require('./schema/kvStore'); const Logger = require('../logger').get; const logger = Logger(); -const CONN_ENDPOINT_DEFAULT = 'mysql://lisk:password@localhost:3306/lisk'; const KV_STORE_ALLOWED_VALUE_TYPES = ['boolean', 'number', 'bigint', 'string', 'undefined']; const kvStoreConfig = { diff --git a/framework/src/mysql/mysql.js b/framework/src/mysql/mysql.js index fb200a0ed4..02d16cd0f5 100644 --- a/framework/src/mysql/mysql.js +++ b/framework/src/mysql/mysql.js @@ -570,6 +570,7 @@ module.exports = { commitDBTransaction, rollbackDBTransaction, createTableIfNotExists, + CONN_ENDPOINT_DEFAULT, // For backward compatibility getDbConnection: getDBConnection, From 6bcd5c81006c85d018f77f068360445abbe09018 Mon Sep 17 00:00:00 2001 From: nagdahimanshu Date: Mon, 12 Jun 2023 09:33:26 +0200 Subject: [PATCH 05/71] Revert change --- services/blockchain-coordinator/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/blockchain-coordinator/config.js b/services/blockchain-coordinator/config.js index aeb7dfae2a..06ae705db7 100644 --- a/services/blockchain-coordinator/config.js +++ b/services/blockchain-coordinator/config.js @@ -75,7 +75,7 @@ config.queue = { config.job = { // Interval takes priority over schedule and must be greater than 0 to be valid indexMissingBlocks: { - interval: process.env.INDEX_MISSING_BLOCKS_INTERVAL || 30, + interval: process.env.INDEX_MISSING_BLOCKS_INTERVAL || 0, schedule: process.env.INDEX_MISSING_BLOCKS_SCHEDULE || '*/15 * * * *', threshold: process.env.THRESHOLD || 100, // TODO: rename }, From 4e50834c5cfc86917c71817803956ab810902d91 Mon Sep 17 00:00:00 2001 From: nagdahimanshu Date: Tue, 13 Jun 2023 13:59:49 +0200 Subject: [PATCH 06/71] Code refactor --- .../shared/indexer/blockchainIndex.js | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 3666fdd4e1..ed09e6d960 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -91,18 +91,18 @@ const indexBlock = async job => { const blocksTable = await getBlocksTable(); // Check if previous block is indexed, index previous block if not indexed - const prevBlockHeight = block.height === await getGenesisHeight() - ? block.height - : block.height - 1; - const prevBlockFromDB = await blocksTable.find({ height: prevBlockHeight }); - - if (!prevBlockFromDB.length) { - /* eslint-disable no-use-before-define */ - await addBlockToQueue(prevBlockHeight); - await addBlockToQueue(block.height); - /* eslint-enable no-use-before-define */ - - return; + if (block.height !== await getGenesisHeight()) { + const prevBlockHeight = block.height - 1; + const prevBlockFromDB = await blocksTable.find({ height: prevBlockHeight }); + + if (!prevBlockFromDB.length) { + /* eslint-disable no-use-before-define */ + await addBlockToQueue(prevBlockHeight); + await addBlockToQueue(block.height); + /* eslint-enable no-use-before-define */ + + return; + } } const connection = await getDBConnection(MYSQL_ENDPOINT); From a9fe6330d0a75c6c66764757a7875e34a7b8fea3 Mon Sep 17 00:00:00 2001 From: nagdahimanshu Date: Tue, 13 Jun 2023 18:05:35 +0200 Subject: [PATCH 07/71] Dispatch events for nodeInfo from connector --- services/blockchain-connector/events/blockchain.js | 6 ++++++ .../blockchain-connector/events/controller/blockchain.js | 6 ++++++ services/blockchain-connector/shared/sdk/endpoints_1.js | 3 ++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/services/blockchain-connector/events/blockchain.js b/services/blockchain-connector/events/blockchain.js index 84a16c49f7..d9f7432073 100644 --- a/services/blockchain-connector/events/blockchain.js +++ b/services/blockchain-connector/events/blockchain.js @@ -23,6 +23,7 @@ const { chainValidatorsChangeController, chainNewBlockController, chainDeleteBlockController, + systemNodeInfoEventController, } = require('./controller/blockchain'); const sdkEvents = [ @@ -71,6 +72,11 @@ const sdkEvents = [ get description() { return `Event ${this.name}`; }, controller: chainDeleteBlockController, }, + { + name: 'systemNodeInfo', + get description() { return `Event ${this.name}`; }, + controller: systemNodeInfoEventController, + }, ]; module.exports = sdkEvents; diff --git a/services/blockchain-connector/events/controller/blockchain.js b/services/blockchain-connector/events/controller/blockchain.js index a1303940f5..3abe4657e4 100644 --- a/services/blockchain-connector/events/controller/blockchain.js +++ b/services/blockchain-connector/events/controller/blockchain.js @@ -60,6 +60,11 @@ const chainDeleteBlockController = async (cb) => { Signals.get('chainDeleteBlock').add(chainDeleteBlockListener); }; +const systemNodeInfoEventController = async (cb) => { + const systemNodeInfoEventListener = async (payload) => cb(payload); + Signals.get('systemNodeInfo').add(systemNodeInfoEventListener); +}; + module.exports = { appReadyController, appShutdownController, @@ -70,4 +75,5 @@ module.exports = { chainValidatorsChangeController, chainNewBlockController, chainDeleteBlockController, + systemNodeInfoEventController, }; diff --git a/services/blockchain-connector/shared/sdk/endpoints_1.js b/services/blockchain-connector/shared/sdk/endpoints_1.js index a63831ccd0..d9f3dd084e 100644 --- a/services/blockchain-connector/shared/sdk/endpoints_1.js +++ b/services/blockchain-connector/shared/sdk/endpoints_1.js @@ -13,7 +13,7 @@ * Removal or modification of this copyright notice is prohibited. * */ -const { Exceptions: { TimeoutException } } = require('lisk-service-framework'); +const { Exceptions: { TimeoutException }, Signals } = require('lisk-service-framework'); const { invokeEndpoint } = require('./client'); const { engineEndpoints } = require('./constants/endpoints'); @@ -78,6 +78,7 @@ const getNodeInfo = async (isForceUpdate = false) => { try { if (isForceUpdate || !nodeInfo) { nodeInfo = await invokeEndpoint('system_getNodeInfo'); + Signals.get('systemNodeInfo').dispatch(nodeInfo); } return nodeInfo; } catch (err) { From 24d591124f9eb370f724c4abbda7f6ea2dc3a940 Mon Sep 17 00:00:00 2001 From: nagdahimanshu Date: Tue, 13 Jun 2023 18:07:38 +0200 Subject: [PATCH 08/71] Subscribe to nodeInfo event from connector Update node constants in cache on every new block --- services/blockchain-coordinator/app.js | 4 ++ .../shared/constants.js | 50 +++++++++++++++++++ .../shared/scheduler.js | 9 ++-- .../shared/sources/connector.js | 10 ---- .../shared/sources/indexer.js | 3 -- services/blockchain-indexer/app.js | 4 ++ .../blockchain-indexer/shared/constants.js | 21 +++++++- .../blockchain-indexer/shared/processor.js | 2 + 8 files changed, 85 insertions(+), 18 deletions(-) create mode 100644 services/blockchain-coordinator/shared/constants.js diff --git a/services/blockchain-coordinator/app.js b/services/blockchain-coordinator/app.js index 15e0b705ad..0dd6a274c5 100644 --- a/services/blockchain-coordinator/app.js +++ b/services/blockchain-coordinator/app.js @@ -49,6 +49,10 @@ const app = Microservice({ logger.debug('Received a \'chainValidatorsChange\' event from connecter.'); Signals.get('newRound').dispatch(payload); }, + systemNodeInfo: async (payload) => { + logger.debug('Received a \'systemNodeInfo\' event from connecter.'); + Signals.get('nodeInfo').dispatch(payload); + }, }, dependencies: [ 'connector', diff --git a/services/blockchain-coordinator/shared/constants.js b/services/blockchain-coordinator/shared/constants.js new file mode 100644 index 0000000000..1a48ac8e29 --- /dev/null +++ b/services/blockchain-coordinator/shared/constants.js @@ -0,0 +1,50 @@ +/* + * LiskHQ/lisk-service + * Copyright © 2023 Lisk Foundation + * + * See the LICENSE file at the top-level directory of this distribution + * for licensing information. + * + * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, + * no part of this software, including this file, may be copied, modified, + * propagated, or distributed except according to the terms contained in the + * LICENSE file. + * + * Removal or modification of this copyright notice is prohibited. + * + */ +const { Signals } = require('lisk-service-framework'); +const { requestConnector } = require('./utils/request'); + +let genesisHeight; +let currentHeight; + +const getGenesisHeight = async () => { + if (typeof genesisHeight !== 'number') { + genesisHeight = await requestConnector('getGenesisHeight'); + } + return genesisHeight; +}; + +const getCurrentHeight = async () => { + if (typeof currentHeight !== 'number') { + const networkStatus = await requestConnector('getNetworkStatus'); + currentHeight = networkStatus.height; + } + return currentHeight; +}; + +const initNodeConstants = async () => { + const nodeInfoListener = async (payload) => { + // Caching all node constants + genesisHeight = payload.genesisHeight; + currentHeight = payload.height; + }; + Signals.get('nodeInfo').add(nodeInfoListener); +}; + +module.exports = { + getGenesisHeight, + getCurrentHeight, + initNodeConstants, +}; diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 2a40c7d24a..759c767588 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -25,15 +25,17 @@ const logger = Logger(); const { initEventsScheduler } = require('./eventsScheduler'); const { getMissingBlocks, - getCurrentHeight, getIndexVerifiedHeight, setIndexVerifiedHeight, } = require('./sources/indexer'); +const { getAllPosValidators } = require('./sources/connector'); + const { - getAllPosValidators, + getCurrentHeight, getGenesisHeight, -} = require('./sources/connector'); + initNodeConstants, +} = require('./constants'); const config = require('../config'); @@ -157,6 +159,7 @@ const init = async () => { await indexGenesisBlock(); await initIndexingScheduler(); await initEventsScheduler(); + await initNodeConstants(); } catch (error) { logger.error(`Unable to initialize coordinator due to: ${error.message}`); } diff --git a/services/blockchain-coordinator/shared/sources/connector.js b/services/blockchain-coordinator/shared/sources/connector.js index 2e63f4306a..5cc68ddddd 100644 --- a/services/blockchain-coordinator/shared/sources/connector.js +++ b/services/blockchain-coordinator/shared/sources/connector.js @@ -15,18 +15,8 @@ */ const { requestConnector } = require('../utils/request'); -let genesisHeight; - const getAllPosValidators = async () => requestConnector('getAllPosValidators'); -const getGenesisHeight = async () => { - if (typeof genesisHeight !== 'number') { - genesisHeight = await requestConnector('getGenesisHeight'); - } - return genesisHeight; -}; - module.exports = { getAllPosValidators, - getGenesisHeight, }; diff --git a/services/blockchain-coordinator/shared/sources/indexer.js b/services/blockchain-coordinator/shared/sources/indexer.js index 966b4fa128..d309de6a8e 100644 --- a/services/blockchain-coordinator/shared/sources/indexer.js +++ b/services/blockchain-coordinator/shared/sources/indexer.js @@ -20,15 +20,12 @@ const getMissingBlocks = async (from, to) => requestIndexer('getMissingBlocks', to, }); -const getCurrentHeight = async () => requestIndexer('getCurrentHeight'); - const getIndexVerifiedHeight = async () => requestIndexer('getIndexVerifiedHeight'); const setIndexVerifiedHeight = async (height) => requestIndexer('setIndexVerifiedHeight', { height }); module.exports = { getMissingBlocks, - getCurrentHeight, getIndexVerifiedHeight, setIndexVerifiedHeight, }; diff --git a/services/blockchain-indexer/app.js b/services/blockchain-indexer/app.js index d5045b50c9..2c9b7170ea 100644 --- a/services/blockchain-indexer/app.js +++ b/services/blockchain-indexer/app.js @@ -43,6 +43,10 @@ const defaultBrokerConfig = { logger.debug('Received a \'chainNewBlock\' event from connecter.'); Signals.get('chainNewBlock').dispatch(); }, + systemNodeInfo: async (payload) => { + logger.debug('Received a \'systemNodeInfo\' event from connecter.'); + Signals.get('nodeInfo').dispatch(payload); + }, }, dependencies: [ 'connector', diff --git a/services/blockchain-indexer/shared/constants.js b/services/blockchain-indexer/shared/constants.js index 657c21184e..bb3293329f 100644 --- a/services/blockchain-indexer/shared/constants.js +++ b/services/blockchain-indexer/shared/constants.js @@ -13,10 +13,12 @@ * Removal or modification of this copyright notice is prohibited. * */ +const { Signals } = require('lisk-service-framework'); const { requestConnector } = require('./utils/request'); let genesisConfig; let genesisHeight; +let currentHeight; let moduleCommands; let registeredModules; let registeredEndpoints; @@ -45,8 +47,11 @@ const getGenesisHeight = async () => { }; const getCurrentHeight = async () => { - const { height } = await requestConnector('getNetworkStatus'); - return height; + if (typeof currentHeight !== 'number') { + const networkStatus = await requestConnector('getNetworkStatus'); + currentHeight = networkStatus.height; + } + return currentHeight; }; const getGenesisConfig = async () => { @@ -176,6 +181,17 @@ const TRANSACTION_VERIFY_RESULT = { OK: 1, }; +const initNodeConstants = async () => { + const nodeInfoListener = async (payload) => { + // Caching all node constants + genesisHeight = payload.genesisHeight; + genesisConfig = payload.genesis; + currentHeight = payload.height; + finalizedHeight = payload.finalizedHeight; + }; + Signals.get('nodeInfo').add(nodeInfoListener); +}; + module.exports = { updateFinalizedHeight, getFinalizedHeight, @@ -189,6 +205,7 @@ module.exports = { getSystemMetadata, getEngineEndpoints, getAllRegisteredEndpoints, + initNodeConstants, LENGTH_CHAIN_ID, PATTERN_ANY_TOKEN_ID, diff --git a/services/blockchain-indexer/shared/processor.js b/services/blockchain-indexer/shared/processor.js index a6c3a161e3..2e82828320 100644 --- a/services/blockchain-indexer/shared/processor.js +++ b/services/blockchain-indexer/shared/processor.js @@ -21,6 +21,7 @@ const { const logger = Logger(); +const { initNodeConstants } = require('./constants'); const { initEventsProcess } = require('./eventsProcessor'); const { addAccountToDirectUpdateQueue, @@ -81,6 +82,7 @@ const initProcess = async () => { }; const init = async () => { + await initNodeConstants(); await initProcess(); await initEventsProcess(); }; From 6597f5fc6dec67d3a7d8b0cf8057c48754ed95a0 Mon Sep 17 00:00:00 2001 From: nagdahimanshu Date: Tue, 13 Jun 2023 18:09:00 +0200 Subject: [PATCH 09/71] Update redis cache database in statistics service --- services/transaction-statistics/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/transaction-statistics/config.js b/services/transaction-statistics/config.js index e3be84ca38..abface39b1 100644 --- a/services/transaction-statistics/config.js +++ b/services/transaction-statistics/config.js @@ -32,7 +32,7 @@ config.brokerTimeout = Number(process.env.SERVICE_BROKER_TIMEOUT) || 10; // in s /** * External endpoints */ -config.endpoints.redis = process.env.SERVICE_STATISTICS_REDIS || 'redis://localhost:6379/2'; +config.endpoints.redis = process.env.SERVICE_STATISTICS_REDIS || 'redis://localhost:6379/6'; // Primary database. Used for both read-write operations. config.endpoints.mysql = process.env.SERVICE_STATISTICS_MYSQL || 'mysql://lisk:password@localhost:3306/lisk'; // DB replicas against the primary. Used for read-only operations. From 8152b6531d19055c3d3019b6a9bfdfaf14ac4d10 Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Tue, 20 Jun 2023 11:26:03 +0200 Subject: [PATCH 10/71] :bug: Fix request param for 'tokenHasUserAccount' --- .../shared/dataService/business/transactionsEstimateFees.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/blockchain-indexer/shared/dataService/business/transactionsEstimateFees.js b/services/blockchain-indexer/shared/dataService/business/transactionsEstimateFees.js index a9995980d8..de97ffc004 100644 --- a/services/blockchain-indexer/shared/dataService/business/transactionsEstimateFees.js +++ b/services/blockchain-indexer/shared/dataService/business/transactionsEstimateFees.js @@ -168,7 +168,7 @@ const calcAccountInitializationFees = async (transaction) => { const { data: { isExists } } = await tokenHasUserAccount({ tokenID, - publicKey: transaction.params.recipientAddress, + address: transaction.params.recipientAddress, }); // Account already exists, no extra fee necessary From d9f6fd6450581f33cfb5822289001cb0a894195f Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Wed, 21 Jun 2023 23:59:46 +0200 Subject: [PATCH 11/71] :zap: Paginate DB queries when checking for missing blocks --- services/blockchain-coordinator/config.js | 2 +- .../shared/scheduler.js | 35 +++++++++++++------ .../shared/indexer/blockchainIndex.js | 33 +++++++++++------ 3 files changed, 47 insertions(+), 23 deletions(-) diff --git a/services/blockchain-coordinator/config.js b/services/blockchain-coordinator/config.js index 06ae705db7..a4b04c8636 100644 --- a/services/blockchain-coordinator/config.js +++ b/services/blockchain-coordinator/config.js @@ -77,7 +77,7 @@ config.job = { indexMissingBlocks: { interval: process.env.INDEX_MISSING_BLOCKS_INTERVAL || 0, schedule: process.env.INDEX_MISSING_BLOCKS_SCHEDULE || '*/15 * * * *', - threshold: process.env.THRESHOLD || 100, // TODO: rename + skipThreshold: process.env.INDEX_MISSING_BLOCKS_SKIP_THRESHOLD || 100, }, }; diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 759c767588..411a2708b7 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -51,15 +51,19 @@ const accountIndexQueue = new MessageQueue( { defaultJobOptions: config.queue.defaultJobOptions }, ); -const { threshold } = config.job.indexMissingBlocks; - -const getJobCount = async (queue) => (await queue.getActiveCount() + await queue.getWaitingCount()); +const getInProgressJobCount = async (queue) => { + const jobCount = await queue.getJobCounts(); + const count = jobCount.active + jobCount.waiting; + return count; +}; const scheduleBlocksIndexing = async (heights) => { const blockHeights = Array.isArray(heights) ? heights : [heights]; + blockHeights.sort((h1, h2) => h1 - h2); // sort by ascending height + await BluebirdPromise.map( blockHeights, async height => { @@ -94,32 +98,41 @@ const indexGenesisBlock = async () => { const initIndexingScheduler = async () => { // Get all validators and schedule indexing + logger.debug('Initializing validator indexing scheduler.'); const { validators } = await getAllPosValidators(); if (Array.isArray(validators) && validators.length) { await scheduleValidatorsIndexing(validators); } + logger.debug('Validator indexing initialization completed successfully.'); // Check for missing blocks + logger.debug('Initializing block indexing scheduler.'); const genesisHeight = await getGenesisHeight(); const currentHeight = await getCurrentHeight(); - const missingBlocksByHeight = await getMissingBlocks(genesisHeight + 1, currentHeight); + const lastVerifiedHeight = await getIndexVerifiedHeight() || genesisHeight + 1; + + logger.trace(`Checking for missing blocks between heights: ${lastVerifiedHeight} - ${currentHeight}.`); + const missingBlockHeights = await getMissingBlocks(lastVerifiedHeight, currentHeight); // Schedule indexing for the missing blocks - if (Array.isArray(missingBlocksByHeight) && missingBlocksByHeight.length) { - await scheduleBlocksIndexing(missingBlocksByHeight); + if (Array.isArray(missingBlockHeights) && missingBlockHeights.length) { + logger.trace(`Missing blocks found between heights: ${lastVerifiedHeight} - ${currentHeight}.\n${missingBlockHeights.join(' ,')}`); + await scheduleBlocksIndexing(missingBlockHeights); + } else { + logger.trace(`No missing blocks found between heights: ${lastVerifiedHeight} - ${currentHeight}.`); } + logger.debug('Block indexing initialization completed successfully.'); }; const scheduleMissingBlocksIndexing = async () => { const genesisHeight = await getGenesisHeight(); const currentHeight = await getCurrentHeight(); - const jobCount = await getJobCount(blockIndexQueue); + const jobCount = await getInProgressJobCount(blockIndexQueue); - // Skip missing blocks scheduling if Active+Waiting job count >= threshold or - // Active+Waiting job count <= (currentHeight - genesisHeight + 1 - configurableThreshold) - if (jobCount >= threshold || jobCount <= (currentHeight - genesisHeight + 1 - threshold)) { - logger.info('Skip scheduling missing blocks job.'); + // Skip job scheduling when the jobCount is greater than the threshold + if (jobCount > config.job.indexMissingBlocks.skipThreshold) { + logger.info('Skipping missing blocks job run.'); return; } diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index d66ef3a8db..c293b786c9 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -421,7 +421,7 @@ const indexNewBlock = async block => { }; const findMissingBlocksInRange = async (fromHeight, toHeight) => { - let result = []; + const result = []; const totalNumOfBlocks = toHeight - fromHeight + 1; logger.info(`Checking for missing blocks between height ${fromHeight}-${toHeight} (${totalNumOfBlocks} blocks).`); @@ -436,21 +436,32 @@ const findMissingBlocksInRange = async (fromHeight, toHeight) => { // This block helps determine empty index if (indexedBlockCount < 3) { - result = [{ from: fromHeight, to: toHeight }]; + result.push({ from: fromHeight, to: toHeight }); } else if (indexedBlockCount !== totalNumOfBlocks) { - const missingBlocksQueryStatement = ` - SELECT - (SELECT COALESCE(MAX(b0.height), ${fromHeight}) FROM blocks b0 WHERE b0.height < b1.height) AS 'from', + const BATCH_SIZE = 25000; + const NUM_BATCHES = Math.ceil((toHeight - fromHeight) / BATCH_SIZE); + + for (let i = 0; i < NUM_BATCHES; i++) { + const batchStartHeight = fromHeight + i * BATCH_SIZE; + const batchEndHeight = Math.min(batchStartHeight + BATCH_SIZE, toHeight); + + const missingBlocksQueryStatement = ` + SELECT + (SELECT COALESCE(MAX(b0.height), ${batchStartHeight}) FROM blocks b0 WHERE b0.height < b1.height) AS 'from', (b1.height - 1) AS 'to' - FROM blocks b1 - WHERE b1.height BETWEEN ${fromHeight} + 1 AND ${toHeight} - AND b1.height != ${toHeight} + FROM blocks b1 + WHERE b1.height BETWEEN ${batchStartHeight} + 1 AND ${batchEndHeight} + AND b1.height != ${batchEndHeight} AND NOT EXISTS (SELECT 1 FROM blocks b2 WHERE b2.height = b1.height - 1) - `; + `; - const missingBlockRanges = await blocksTable.rawQuery(missingBlocksQueryStatement); + logger.trace(`Checking for missing blocks between heights: ${batchStartHeight} - ${batchEndHeight}.`); + // eslint-disable-next-line no-await-in-loop + const missingBlockRanges = await blocksTable.rawQuery(missingBlocksQueryStatement); + logger.trace(`Found the following missing block ranges between heights: ${missingBlockRanges}.`); - result = missingBlockRanges; + result.push(...missingBlockRanges); + } } const logContent = result.map(o => `${o.from}-${o.to} (${o.to - o.from + 1} blocks)`); From 324508f0e199b9b13c64ee91751465cc6c60f21d Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Fri, 23 Jun 2023 01:20:43 +0200 Subject: [PATCH 12/71] :hammer: Ensure sequential indexing --- .../shared/scheduler.js | 59 ++++++++++--------- .../shared/indexer/blockchainIndex.js | 41 +++++++++---- 2 files changed, 63 insertions(+), 37 deletions(-) diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 411a2708b7..12b07bebf5 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -64,14 +64,13 @@ const scheduleBlocksIndexing = async (heights) => { blockHeights.sort((h1, h2) => h1 - h2); // sort by ascending height - await BluebirdPromise.map( - blockHeights, - async height => { - await blockIndexQueue.add({ height }); - logger.debug(`Scheduled indexing for block at height: ${height}.`); - }, - { concurrency: blockHeights.length }, - ); + // eslint-disable-next-line no-restricted-syntax + for (const height of blockHeights) { + logger.trace(`Scheduling indexing for block at height: ${height}.`); + // eslint-disable-next-line no-await-in-loop + await blockIndexQueue.add({ height }); + logger.debug(`Scheduled indexing for block at height: ${height}.`); + } }; const scheduleValidatorsIndexing = async (validators) => { @@ -103,34 +102,40 @@ const initIndexingScheduler = async () => { if (Array.isArray(validators) && validators.length) { await scheduleValidatorsIndexing(validators); } - logger.debug('Validator indexing initialization completed successfully.'); - - // Check for missing blocks - logger.debug('Initializing block indexing scheduler.'); - const genesisHeight = await getGenesisHeight(); - const currentHeight = await getCurrentHeight(); - const lastVerifiedHeight = await getIndexVerifiedHeight() || genesisHeight + 1; + logger.info('Validator indexing initialization completed successfully.'); - logger.trace(`Checking for missing blocks between heights: ${lastVerifiedHeight} - ${currentHeight}.`); - const missingBlockHeights = await getMissingBlocks(lastVerifiedHeight, currentHeight); - - // Schedule indexing for the missing blocks - if (Array.isArray(missingBlockHeights) && missingBlockHeights.length) { - logger.trace(`Missing blocks found between heights: ${lastVerifiedHeight} - ${currentHeight}.\n${missingBlockHeights.join(' ,')}`); - await scheduleBlocksIndexing(missingBlockHeights); + // Skip scheduling jobs for missing blocks when the jobCount is greater than the threshold + const jobCount = await getInProgressJobCount(blockIndexQueue); + if (jobCount > config.job.indexMissingBlocks.skipThreshold) { + logger.info(`Skipping the check for missing blocks. ${jobCount} blocks already queued for indexing.`); } else { - logger.trace(`No missing blocks found between heights: ${lastVerifiedHeight} - ${currentHeight}.`); + // Check for missing blocks + logger.debug('Initializing block indexing scheduler.'); + const genesisHeight = await getGenesisHeight(); + const currentHeight = await getCurrentHeight(); + const lastVerifiedHeight = await getIndexVerifiedHeight() || genesisHeight + 1; + + logger.debug(`Checking for missing blocks between heights: ${lastVerifiedHeight} - ${currentHeight}.`); + const missingBlockHeights = await getMissingBlocks(lastVerifiedHeight, currentHeight); + + // Schedule indexing for the missing blocks + if (Array.isArray(missingBlockHeights) && missingBlockHeights.length) { + logger.info(`${missingBlockHeights.length} missing blocks found between heights: ${lastVerifiedHeight} - ${currentHeight}. Attempting to schedule indexing.`); + await scheduleBlocksIndexing(missingBlockHeights); + logger.info(`Finished scheduling indexing of ${missingBlockHeights.length} missing blocks between heights: ${lastVerifiedHeight} - ${currentHeight}.`); + } else { + logger.info(`No missing blocks found between heights: ${lastVerifiedHeight} - ${currentHeight}. Nothing to schedule.`); + } } - logger.debug('Block indexing initialization completed successfully.'); + logger.info('Block indexing initialization completed successfully.'); }; const scheduleMissingBlocksIndexing = async () => { const genesisHeight = await getGenesisHeight(); const currentHeight = await getCurrentHeight(); - const jobCount = await getInProgressJobCount(blockIndexQueue); - // Skip job scheduling when the jobCount is greater than the threshold + const jobCount = await getInProgressJobCount(blockIndexQueue); if (jobCount > config.job.indexMissingBlocks.skipThreshold) { logger.info('Skipping missing blocks job run.'); return; @@ -169,10 +174,10 @@ const scheduleMissingBlocksIndexing = async () => { const init = async () => { try { + await initNodeConstants(); await indexGenesisBlock(); await initIndexingScheduler(); await initEventsScheduler(); - await initNodeConstants(); } catch (error) { logger.error(`Unable to initialize coordinator due to: ${error.message}`); } diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index c293b786c9..3df52b18be 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -93,14 +93,31 @@ const indexBlock = async job => { // Check if previous block is indexed, index previous block if not indexed if (block.height !== await getGenesisHeight()) { - const prevBlockHeight = block.height - 1; - const prevBlockFromDB = await blocksTable.find({ height: prevBlockHeight }); - - if (!prevBlockFromDB.length) { - /* eslint-disable no-use-before-define */ - await addBlockToQueue(prevBlockHeight); - await addBlockToQueue(block.height); - /* eslint-enable no-use-before-define */ + const [{ height: lastIndexedHeight } = {}] = await blocksTable.find( + { + propBetweens: [{ + property: 'height', + to: block.height, + }], + sort: 'height:desc', + limit: 1, + }, + ['height'], + ); + + const heightsToIndex = range( + (lastIndexedHeight || await getGenesisHeight()) + 1, + block.height + 1, // '+ 1' as 'to' is non-inclusive + 1, + ); + + if (heightsToIndex.length > 1) { + await BluebirdPromise.map( + heightsToIndex, + // eslint-disable-next-line no-use-before-define + async (height) => addBlockToQueue(height, true), + { concurrency: 1 }, + ); return; } @@ -478,9 +495,13 @@ const getMissingBlocks = async (params) => { return listOfMissingBlocks; }; -const addBlockToQueue = async height => { +const addBlockToQueue = async (height, isIncreasedPriority = false) => { const block = await getBlockByHeight(height); - indexBlocksQueue.add({ block }); + if (isIncreasedPriority) { + await indexBlocksQueue.add({ block }, { priority: 1 }); + } else { + await indexBlocksQueue.add({ block }); + } }; const setIndexVerifiedHeight = ({ height }) => keyValueTable.set(INDEX_VERIFIED_HEIGHT, height); From a5d4801c83d43f8884df21985913e50b0990fb67 Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Fri, 23 Jun 2023 13:34:19 +0200 Subject: [PATCH 13/71] :zap: Split indexing into smaller batches to avoid OOM --- framework/src/mysql/mysql.js | 1 - .../blockchain-connector/shared/sdk/cache.js | 4 +- services/blockchain-coordinator/config.js | 2 +- .../shared/scheduler.js | 49 ++++++++++++++++--- .../shared/dataService/business/blocks.js | 2 +- .../shared/dataService/business/events.js | 10 ++-- .../shared/dataService/business/invoke.js | 4 +- .../shared/dataService/business/token.js | 8 ++- .../shared/dataService/pos/validators.js | 2 +- .../shared/indexer/blockchainIndex.js | 16 ++++-- .../shared/transactionStatistics.js | 2 +- 11 files changed, 73 insertions(+), 27 deletions(-) diff --git a/framework/src/mysql/mysql.js b/framework/src/mysql/mysql.js index 59fd4c94fa..e493f92b31 100644 --- a/framework/src/mysql/mysql.js +++ b/framework/src/mysql/mysql.js @@ -485,7 +485,6 @@ const getTableInstance = async (...tableParams) => { const trx = await createDefaultTransaction(knex); if (!column) { - logger.warn(`No SELECT columns specified in the query, returning the '${tableName}' table primary key: '${tableConfig.primaryKey}.'`); column = Array.isArray(tableConfig.primaryKey) ? [tableConfig.primaryKey[0]] : [tableConfig.primaryKey]; } else { diff --git a/services/blockchain-connector/shared/sdk/cache.js b/services/blockchain-connector/shared/sdk/cache.js index 25aa70e87f..725a36f2fd 100644 --- a/services/blockchain-connector/shared/sdk/cache.js +++ b/services/blockchain-connector/shared/sdk/cache.js @@ -72,7 +72,7 @@ const cacheBlocksFromWaitlist = async () => { const getBlockByIDFromCache = async (id) => { const blocksCache = await getBlocksCache(); - const resultSet = await blocksCache.find({ id }, ['block']); + const resultSet = await blocksCache.find({ id, limit: 1 }, ['block']); if (!resultSet.length) return null; const [{ block }] = resultSet; @@ -82,7 +82,7 @@ const getBlockByIDFromCache = async (id) => { const getTransactionByIDFromCache = async (transactionID) => { const trxIDToBlockIDCache = await getTrxIDtoBlockIDCache(); - const resultSet = await trxIDToBlockIDCache.find({ transactionID }, ['blockID']); + const resultSet = await trxIDToBlockIDCache.find({ transactionID, limit: 1 }, ['blockID']); if (!resultSet.length) return null; const [{ blockID }] = resultSet; diff --git a/services/blockchain-coordinator/config.js b/services/blockchain-coordinator/config.js index a4b04c8636..2a9cc69ce0 100644 --- a/services/blockchain-coordinator/config.js +++ b/services/blockchain-coordinator/config.js @@ -77,7 +77,7 @@ config.job = { indexMissingBlocks: { interval: process.env.INDEX_MISSING_BLOCKS_INTERVAL || 0, schedule: process.env.INDEX_MISSING_BLOCKS_SCHEDULE || '*/15 * * * *', - skipThreshold: process.env.INDEX_MISSING_BLOCKS_SKIP_THRESHOLD || 100, + skipThreshold: process.env.INDEX_MISSING_BLOCKS_SKIP_THRESHOLD || 1000, }, }; diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 12b07bebf5..1f35bafdd3 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -57,19 +57,54 @@ const getInProgressJobCount = async (queue) => { return count; }; +let intervalID; + +const waitForJobCountToFallBelowThreshold = (resolve) => new Promise((res) => { + if (!resolve) resolve = res; + if (intervalID) { + clearInterval(intervalID); + intervalID = null; + } + + return getInProgressJobCount(blockIndexQueue) + .then((count) => count < config.job.indexMissingBlocks.skipThreshold + ? resolve(true) + : (() => { + const REFRESH_INTERVAL = 30000; + logger.info(`In progress job count not yet below the threshold. Waiting for ${REFRESH_INTERVAL} ms to re-check the job count before scheduling the next batch.`); + intervalID = setInterval( + waitForJobCountToFallBelowThreshold.bind(null, resolve), + REFRESH_INTERVAL, + ); + })()); +}); + const scheduleBlocksIndexing = async (heights) => { const blockHeights = Array.isArray(heights) ? heights : [heights]; - blockHeights.sort((h1, h2) => h1 - h2); // sort by ascending height + blockHeights.sort((h1, h2) => h1 - h2); // sort heights in ascending order + + // Schedule indexing in batches when the list is too long to avoid OOM + const MAX_BATCH_SIZE = 20000; + const numBatches = Math.ceil(blockHeights.length / MAX_BATCH_SIZE); + if (numBatches > 1) logger.info(`Scheduling the blocks indexing in ${numBatches} smaller batches.`); + + for (let i = 0; i < numBatches; i++) { + /* eslint-disable no-await-in-loop */ + + const blockHeightsBatch = blockHeights.slice(i * MAX_BATCH_SIZE, (i + 1) * MAX_BATCH_SIZE); + + // eslint-disable-next-line no-restricted-syntax + for (const height of blockHeightsBatch) { + logger.trace(`Scheduling indexing for block at height: ${height}.`); + await blockIndexQueue.add({ height }); + logger.debug(`Scheduled indexing for block at height: ${height}.`); + } - // eslint-disable-next-line no-restricted-syntax - for (const height of blockHeights) { - logger.trace(`Scheduling indexing for block at height: ${height}.`); - // eslint-disable-next-line no-await-in-loop - await blockIndexQueue.add({ height }); - logger.debug(`Scheduled indexing for block at height: ${height}.`); + await waitForJobCountToFallBelowThreshold(); + /* eslint-enable no-await-in-loop */ } }; diff --git a/services/blockchain-indexer/shared/dataService/business/blocks.js b/services/blockchain-indexer/shared/dataService/business/blocks.js index 4dd6e04019..43bc750a08 100644 --- a/services/blockchain-indexer/shared/dataService/business/blocks.js +++ b/services/blockchain-indexer/shared/dataService/business/blocks.js @@ -77,7 +77,7 @@ const normalizeBlock = async (originalBlock) => { const { numberOfEvents, reward } = await (async () => { const [dbResponse] = await blocksTable.find( - { height: block.height }, + { height: block.height, limit: 1 }, ['numberOfEvents', 'reward'], ); diff --git a/services/blockchain-indexer/shared/dataService/business/events.js b/services/blockchain-indexer/shared/dataService/business/events.js index 9ed7039041..4f384ef5cb 100644 --- a/services/blockchain-indexer/shared/dataService/business/events.js +++ b/services/blockchain-indexer/shared/dataService/business/events.js @@ -54,10 +54,10 @@ const getEventsByHeight = async (height) => { // Get from DB only when isPersistEvents is enabled if (config.isPersistEvents) { const eventsTable = await getEventsTable(); - const dbEventStrs = await eventsTable.find({ height }, ['eventStr']); + const dbEventStrings = await eventsTable.find({ height }, ['eventStr']); - if (dbEventStrs.length) { - const dbEvents = dbEventStrs + if (dbEventStrings.length) { + const dbEvents = dbEventStrings .map(({ eventStr }) => eventStr ? JSON.parse(eventStr) : eventStr); await eventCache.set(height, JSON.stringify(dbEvents)); return dbEvents; @@ -122,7 +122,7 @@ const getEvents = async (params) => { if (params.blockID) { const { blockID, ...remParams } = params; params = remParams; - const [block] = await blocksTable.find({ id: blockID }, ['height']); + const [block] = await blocksTable.find({ id: blockID, limit: 1 }, ['height']); if ('height' in params && params.height !== block.height) { throw new NotFoundException(`Invalid combination of blockID: ${blockID} and height: ${params.height}`); } @@ -156,7 +156,7 @@ const getEvents = async (params) => { event = eventsFromCache.find(entry => entry.index === index); } - const [{ id, timestamp } = {}] = await blocksTable.find({ height }, ['id', 'timestamp']); + const [{ id, timestamp } = {}] = await blocksTable.find({ height, limit: 1 }, ['id', 'timestamp']); return parseToJSONCompatObj({ ...event, diff --git a/services/blockchain-indexer/shared/dataService/business/invoke.js b/services/blockchain-indexer/shared/dataService/business/invoke.js index 23d9f15e3f..c5639c606c 100644 --- a/services/blockchain-indexer/shared/dataService/business/invoke.js +++ b/services/blockchain-indexer/shared/dataService/business/invoke.js @@ -27,8 +27,8 @@ const { } = require('../../constants'); const checkIfEndpointRegistered = async (endpoint) => { - const allregisteredEndpoints = await getAllRegisteredEndpoints(); - return allregisteredEndpoints.includes(endpoint); + const allRegisteredEndpoints = await getAllRegisteredEndpoints(); + return allRegisteredEndpoints.includes(endpoint); }; const validateEndpointParams = async (invokeEndpointParams) => { diff --git a/services/blockchain-indexer/shared/dataService/business/token.js b/services/blockchain-indexer/shared/dataService/business/token.js index c2b7957b9b..c8555ec218 100644 --- a/services/blockchain-indexer/shared/dataService/business/token.js +++ b/services/blockchain-indexer/shared/dataService/business/token.js @@ -112,7 +112,10 @@ const getTokenTopBalances = async (params) => { }]; } - const tokenInfos = await accountBalancesTable.find(params, [`${accountBalancesTableSchema.tableName}.balance`, `${accountBalancesTableSchema.tableName}.address`, `${accountTableSchema.tableName}.publicKey`, `${accountTableSchema.tableName}.name`]); + const tokenInfos = await accountBalancesTable.find( + params, + [`${accountBalancesTableSchema.tableName}.balance`, `${accountBalancesTableSchema.tableName}.address`, `${accountTableSchema.tableName}.publicKey`, `${accountTableSchema.tableName}.name`], + ); const filteredTokenInfos = []; // eslint-disable-next-line no-restricted-syntax @@ -231,7 +234,8 @@ const getAvailableTokenIDs = async (params) => { const accountBalancesTable = await getAccountBalancesTable(); const tokenInfos = await accountBalancesTable.find( - { ...params, distinct: 'tokenID' }, ['tokenID'], + { ...params, distinct: 'tokenID' }, + ['tokenID'], ); response.data.tokenIDs = tokenInfos.map(tokenInfo => tokenInfo.tokenID); diff --git a/services/blockchain-indexer/shared/dataService/pos/validators.js b/services/blockchain-indexer/shared/dataService/pos/validators.js index bc5afb9d9d..83563fdf8f 100644 --- a/services/blockchain-indexer/shared/dataService/pos/validators.js +++ b/services/blockchain-indexer/shared/dataService/pos/validators.js @@ -212,7 +212,7 @@ const getPosValidators = async params => { filteredValidators, async validator => { const [validatorInfo = {}] = await validatorsTable.find( - { address: validator.address }, + { address: validator.address, limit: 1 }, ['generatedBlocks', 'totalCommission', 'totalSelfStakeRewards'], ); const { diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 3df52b18be..03937de2be 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -89,11 +89,13 @@ const indexBlock = async job => { const { block } = job.data; if (!validateBlock(block)) throw new Error(`Invalid block ${block.id} at height ${block.height}.`); + logger.info(block.height); + const blocksTable = await getBlocksTable(); // Check if previous block is indexed, index previous block if not indexed if (block.height !== await getGenesisHeight()) { - const [{ height: lastIndexedHeight } = {}] = await blocksTable.find( + const [lastIndexedBlock = {}] = await blocksTable.find( { propBetweens: [{ property: 'height', @@ -102,11 +104,17 @@ const indexBlock = async job => { sort: 'height:desc', limit: 1, }, - ['height'], + ['height', 'isFinal'], ); + // Skip the indexing process if the last indexed block's height is + // higher than or equal to current block's height and is already finalized + if (block.height <= lastIndexedBlock.height && lastIndexedBlock.isFinal) { + return; + } + const heightsToIndex = range( - (lastIndexedHeight || await getGenesisHeight()) + 1, + (lastIndexedBlock.height || await getGenesisHeight()) + 1, block.height + 1, // '+ 1' as 'to' is non-inclusive 1, ); @@ -279,7 +287,7 @@ const deleteIndexedBlocks = async job => { blocks, async block => { // Check if deleted block is indexed - const [deletedBlockFromDB] = await blocksTable.find({ height: block.height }); + const [deletedBlockFromDB] = await blocksTable.find({ height: block.height, limit: 1 }); // Reschedule job if not deleted block is not indexed if (!deletedBlockFromDB) { diff --git a/services/transaction-statistics/shared/transactionStatistics.js b/services/transaction-statistics/shared/transactionStatistics.js index 15d2c11aa5..e22c379429 100644 --- a/services/transaction-statistics/shared/transactionStatistics.js +++ b/services/transaction-statistics/shared/transactionStatistics.js @@ -200,7 +200,7 @@ const getTransactionsStatistics = async params => { transactionsStatistics.data = { timeline, distributionByType, distributionByAmount }; - const [{ date: minDate } = {}] = await transactionStatisticsTable.find({ sort: 'date:asc' }, 'date'); + const [{ date: minDate } = {}] = await transactionStatisticsTable.find({ sort: 'date:asc', limit: 1 }, 'date'); const total = minDate ? moment().diff(moment.unix(minDate), params.interval) : 0; transactionsStatistics.meta = { From 84fc82af14e1ad53e40da06b2a5fae7617f8799f Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Fri, 23 Jun 2023 16:55:15 +0200 Subject: [PATCH 14/71] :bug: Fix redundant pririoty scheduling --- .../jobs/missingBlocks.js | 2 - .../shared/scheduler.js | 37 ++++++++------ .../shared/indexer/blockchainIndex.js | 48 ++++++++++++------- 3 files changed, 53 insertions(+), 34 deletions(-) diff --git a/services/blockchain-coordinator/jobs/missingBlocks.js b/services/blockchain-coordinator/jobs/missingBlocks.js index 14ff4d2e18..92802d3aa0 100644 --- a/services/blockchain-coordinator/jobs/missingBlocks.js +++ b/services/blockchain-coordinator/jobs/missingBlocks.js @@ -29,9 +29,7 @@ module.exports = [ controller: async () => { logger.debug('Schedule missing blocks indexing...'); try { - // TODO: Do not schedule if the queue has jobs more than a specified threshold await scheduleMissingBlocksIndexing(); - logger.info('Successfully scheduled missing blocks indexing.'); } catch (err) { logger.warn(`Failed to schedule missing blocks indexing due to: ${err.message}.`); logger.trace(err.stack); diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 1f35bafdd3..7fcb31cbe5 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -67,16 +67,19 @@ const waitForJobCountToFallBelowThreshold = (resolve) => new Promise((res) => { } return getInProgressJobCount(blockIndexQueue) - .then((count) => count < config.job.indexMissingBlocks.skipThreshold - ? resolve(true) - : (() => { - const REFRESH_INTERVAL = 30000; - logger.info(`In progress job count not yet below the threshold. Waiting for ${REFRESH_INTERVAL} ms to re-check the job count before scheduling the next batch.`); - intervalID = setInterval( - waitForJobCountToFallBelowThreshold.bind(null, resolve), - REFRESH_INTERVAL, - ); - })()); + .then((count) => { + const { skipThreshold } = config.job.indexMissingBlocks; + return count < skipThreshold + ? resolve(true) + : (() => { + const REFRESH_INTERVAL = 30000; + logger.info(`In progress job count (${count}) not yet below the threshold (${skipThreshold}). Waiting for ${REFRESH_INTERVAL} ms to re-check the job count before scheduling the next batch.`); + intervalID = setInterval( + waitForJobCountToFallBelowThreshold.bind(null, resolve), + REFRESH_INTERVAL, + ); + })(); + }); }); const scheduleBlocksIndexing = async (heights) => { @@ -94,6 +97,7 @@ const scheduleBlocksIndexing = async (heights) => { for (let i = 0; i < numBatches; i++) { /* eslint-disable no-await-in-loop */ + logger.debug(`Scheduling batch ${i + 1}/${numBatches}.`); const blockHeightsBatch = blockHeights.slice(i * MAX_BATCH_SIZE, (i + 1) * MAX_BATCH_SIZE); // eslint-disable-next-line no-restricted-syntax @@ -103,6 +107,7 @@ const scheduleBlocksIndexing = async (heights) => { logger.debug(`Scheduled indexing for block at height: ${height}.`); } + logger.info(`Finished scheduling batch ${i + 1}/${numBatches}.`); await waitForJobCountToFallBelowThreshold(); /* eslint-enable no-await-in-loop */ } @@ -172,7 +177,7 @@ const scheduleMissingBlocksIndexing = async () => { // Skip job scheduling when the jobCount is greater than the threshold const jobCount = await getInProgressJobCount(blockIndexQueue); if (jobCount > config.job.indexMissingBlocks.skipThreshold) { - logger.info('Skipping missing blocks job run.'); + logger.info(`Skipping missing blocks job run. ${jobCount} indexing jobs already in the queue.`); return; } @@ -198,12 +203,15 @@ const scheduleMissingBlocksIndexing = async () => { if (missingBlocksByHeight.length === 0) { // Update 'indexVerifiedHeight' when no missing blocks are found await setIndexVerifiedHeight(blockIndexHigherRange); + logger.info(`No missing blocks found. Setting the index verified height to ${blockIndexHigherRange}.`); } else { // Schedule indexing for the missing blocks await scheduleBlocksIndexing(missingBlocksByHeight); + logger.info('Successfully scheduled missing blocks indexing.'); } } catch (err) { - logger.warn(`Missing blocks indexing failed due to: ${err.message}.`); + logger.warn(`Missing blocks indexing scheduling failed due to: ${err.message}.`); + logger.trace(err.stack); } }; @@ -213,8 +221,9 @@ const init = async () => { await indexGenesisBlock(); await initIndexingScheduler(); await initEventsScheduler(); - } catch (error) { - logger.error(`Unable to initialize coordinator due to: ${error.message}`); + } catch (err) { + logger.error(`Unable to initialize coordinator due to: ${err.message}`); + logger.trace(err.stack); } }; diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 03937de2be..7b671e1b60 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -85,16 +85,17 @@ const INDEX_VERIFIED_HEIGHT = 'indexVerifiedHeight'; const validateBlock = (block) => !!block && block.height >= 0; +let lastRescheduledBlockHeightWithPriority = -1; + const indexBlock = async job => { const { block } = job.data; if (!validateBlock(block)) throw new Error(`Invalid block ${block.id} at height ${block.height}.`); - logger.info(block.height); - const blocksTable = await getBlocksTable(); - // Check if previous block is indexed, index previous block if not indexed - if (block.height !== await getGenesisHeight()) { + // Check if the previous blocks are indexed, if not schedule them with priority + const genesisHeight = await getGenesisHeight(); + if (block.height !== genesisHeight) { const [lastIndexedBlock = {}] = await blocksTable.find( { propBetweens: [{ @@ -107,27 +108,38 @@ const indexBlock = async job => { ['height', 'isFinal'], ); + const { + height: lastIndexedHeight, + isFinal: isLastIndexedHeightFinal, + } = lastIndexedBlock; + // Skip the indexing process if the last indexed block's height is // higher than or equal to current block's height and is already finalized - if (block.height <= lastIndexedBlock.height && lastIndexedBlock.isFinal) { + if (block.height <= lastIndexedHeight && isLastIndexedHeightFinal) { + logger.trace(`Skipping block indexing at height ${block.height}. Last final block indexed is ${lastIndexedHeight}.`); return; } - const heightsToIndex = range( - (lastIndexedBlock.height || await getGenesisHeight()) + 1, - block.height + 1, // '+ 1' as 'to' is non-inclusive - 1, - ); - - if (heightsToIndex.length > 1) { - await BluebirdPromise.map( - heightsToIndex, - // eslint-disable-next-line no-use-before-define - async (height) => addBlockToQueue(height, true), - { concurrency: 1 }, + if (block.height >= lastRescheduledBlockHeightWithPriority) { + const heightsToIndex = range( + Math.max((lastIndexedHeight || genesisHeight), lastRescheduledBlockHeightWithPriority) + 1, + block.height + 1, // '+ 1' as 'to' is non-inclusive + 1, ); - return; + if (heightsToIndex.length > 1) { + logger.trace(`Adding ${heightsToIndex.length} blocks. Current block height: ${block.height}. Scheduled blocks between heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)}.`); + await BluebirdPromise.map( + heightsToIndex, + // eslint-disable-next-line no-use-before-define + async (height) => addBlockToQueue(height, true), + { concurrency: 1 }, + ); + + lastRescheduledBlockHeightWithPriority = Math.max(...heightsToIndex); + + return; + } } } From a614ca123fafbf4dfa08dd045086e2ebe8337b07 Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Fri, 23 Jun 2023 22:18:40 +0200 Subject: [PATCH 15/71] :seedling: Ensure genesis block is indexed before other blocks start indexing --- .../shared/scheduler.js | 45 ++++++++++++++++--- .../shared/sources/indexer.js | 3 ++ .../methods/indexer/indexer.js | 6 +++ .../shared/indexer/blockchainIndex.js | 19 ++++++-- 4 files changed, 63 insertions(+), 10 deletions(-) diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 7fcb31cbe5..fdf6697431 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -30,6 +30,7 @@ const { } = require('./sources/indexer'); const { getAllPosValidators } = require('./sources/connector'); +const { isGenesisBlockIndexed } = require('./sources/indexer'); const { getCurrentHeight, @@ -58,6 +59,37 @@ const getInProgressJobCount = async (queue) => { }; let intervalID; +const REFRESH_INTERVAL = 30000; + +const waitForGenesisBlockIndexing = (resolve) => new Promise((res) => { + if (!resolve) resolve = res; + if (intervalID) { + clearInterval(intervalID); + intervalID = null; + } + + return isGenesisBlockIndexed() + .then(async (isIndexed) => { + const jobCount = await getInProgressJobCount(blockIndexQueue); + + if (isIndexed) { + logger.info('Genesis block is indexed.'); + return resolve(true); + } + + if (jobCount === 1) { + logger.info(`Genesis block indexing is still in progress. Waiting for ${REFRESH_INTERVAL}ms to re-check the genesis block indexing status.`); + intervalID = setInterval( + waitForGenesisBlockIndexing.bind(null, resolve), + REFRESH_INTERVAL, + ); + return false; + } + + logger.warn('Genesis block indexing failed.'); + return resolve(false); + }); +}); const waitForJobCountToFallBelowThreshold = (resolve) => new Promise((res) => { if (!resolve) resolve = res; @@ -72,8 +104,7 @@ const waitForJobCountToFallBelowThreshold = (resolve) => new Promise((res) => { return count < skipThreshold ? resolve(true) : (() => { - const REFRESH_INTERVAL = 30000; - logger.info(`In progress job count (${count}) not yet below the threshold (${skipThreshold}). Waiting for ${REFRESH_INTERVAL} ms to re-check the job count before scheduling the next batch.`); + logger.info(`In progress job count (${String(count).padStart(5, ' ')}) not yet below the threshold (${skipThreshold}). Waiting for ${REFRESH_INTERVAL}ms to re-check the job count before scheduling the next batch.`); intervalID = setInterval( waitForJobCountToFallBelowThreshold.bind(null, resolve), REFRESH_INTERVAL, @@ -90,14 +121,14 @@ const scheduleBlocksIndexing = async (heights) => { blockHeights.sort((h1, h2) => h1 - h2); // sort heights in ascending order // Schedule indexing in batches when the list is too long to avoid OOM - const MAX_BATCH_SIZE = 20000; + const MAX_BATCH_SIZE = 15000; const numBatches = Math.ceil(blockHeights.length / MAX_BATCH_SIZE); if (numBatches > 1) logger.info(`Scheduling the blocks indexing in ${numBatches} smaller batches.`); for (let i = 0; i < numBatches; i++) { /* eslint-disable no-await-in-loop */ - logger.debug(`Scheduling batch ${i + 1}/${numBatches}.`); + if (numBatches > 1) logger.debug(`Scheduling batch ${i + 1}/${numBatches}.`); const blockHeightsBatch = blockHeights.slice(i * MAX_BATCH_SIZE, (i + 1) * MAX_BATCH_SIZE); // eslint-disable-next-line no-restricted-syntax @@ -107,7 +138,7 @@ const scheduleBlocksIndexing = async (heights) => { logger.debug(`Scheduled indexing for block at height: ${height}.`); } - logger.info(`Finished scheduling batch ${i + 1}/${numBatches}.`); + if (numBatches > 1) logger.info(`Finished scheduling batch ${i + 1}/${numBatches}.`); await waitForJobCountToFallBelowThreshold(); /* eslint-enable no-await-in-loop */ } @@ -133,6 +164,8 @@ const indexGenesisBlock = async () => { logger.debug('Scheduling genesis block indexing.'); await scheduleBlocksIndexing(genesisHeight); logger.info('Finished scheduling genesis block indexing.'); + + await waitForGenesisBlockIndexing(); }; const initIndexingScheduler = async () => { @@ -222,7 +255,7 @@ const init = async () => { await initIndexingScheduler(); await initEventsScheduler(); } catch (err) { - logger.error(`Unable to initialize coordinator due to: ${err.message}`); + logger.error(`Unable to initialize coordinator due to: ${err.message}.`); logger.trace(err.stack); } }; diff --git a/services/blockchain-coordinator/shared/sources/indexer.js b/services/blockchain-coordinator/shared/sources/indexer.js index d309de6a8e..43b2e13f7a 100644 --- a/services/blockchain-coordinator/shared/sources/indexer.js +++ b/services/blockchain-coordinator/shared/sources/indexer.js @@ -24,8 +24,11 @@ const getIndexVerifiedHeight = async () => requestIndexer('getIndexVerifiedHeigh const setIndexVerifiedHeight = async (height) => requestIndexer('setIndexVerifiedHeight', { height }); +const isGenesisBlockIndexed = async () => requestIndexer('isGenesisBlockIndexed'); + module.exports = { getMissingBlocks, getIndexVerifiedHeight, setIndexVerifiedHeight, + isGenesisBlockIndexed, }; diff --git a/services/blockchain-indexer/methods/indexer/indexer.js b/services/blockchain-indexer/methods/indexer/indexer.js index c5ec36beec..678d04508e 100644 --- a/services/blockchain-indexer/methods/indexer/indexer.js +++ b/services/blockchain-indexer/methods/indexer/indexer.js @@ -17,6 +17,7 @@ const { getMissingBlocks, getIndexVerifiedHeight, setIndexVerifiedHeight, + isGenesisBlockIndexed, } = require('../../shared/indexer/blockchainIndex'); const { @@ -55,4 +56,9 @@ module.exports = [ height: { optional: false, type: 'number' }, }, }, + { + name: 'isGenesisBlockIndexed', + controller: isGenesisBlockIndexed, + params: {}, + }, ]; diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 7b671e1b60..c3850eddd7 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -484,12 +484,12 @@ const findMissingBlocksInRange = async (fromHeight, toHeight) => { const missingBlocksQueryStatement = ` SELECT - (SELECT COALESCE(MAX(b0.height), ${batchStartHeight}) FROM blocks b0 WHERE b0.height < b1.height) AS 'from', - (b1.height - 1) AS 'to' + (SELECT COALESCE(MAX(b0.height), ${batchStartHeight}) FROM blocks b0 WHERE b0.height < b1.height) AS 'from', + (b1.height - 1) AS 'to' FROM blocks b1 WHERE b1.height BETWEEN ${batchStartHeight} + 1 AND ${batchEndHeight} - AND b1.height != ${batchEndHeight} - AND NOT EXISTS (SELECT 1 FROM blocks b2 WHERE b2.height = b1.height - 1) + AND b1.height != ${batchEndHeight} + AND NOT EXISTS (SELECT 1 FROM blocks b2 WHERE b2.height = b1.height - 1) `; logger.trace(`Checking for missing blocks between heights: ${batchStartHeight} - ${batchEndHeight}.`); @@ -528,6 +528,16 @@ const setIndexVerifiedHeight = ({ height }) => keyValueTable.set(INDEX_VERIFIED_ const getIndexVerifiedHeight = () => keyValueTable.get(INDEX_VERIFIED_HEIGHT); +const isGenesisBlockIndexed = async () => { + const blocksTable = await getBlocksTable(); + const [{ height } = {}] = await blocksTable.find( + { height: await getGenesisHeight(), limit: 1 }, + ['height'], + ); + + return height !== undefined; +}; + module.exports = { indexNewBlock, addBlockToQueue, @@ -536,4 +546,5 @@ module.exports = { setIndexVerifiedHeight, getIndexVerifiedHeight, getLiveIndexingJobCount, + isGenesisBlockIndexed, }; From ea18617c2c9f43c8494ef257e6a371357e56b3ba Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Wed, 28 Jun 2023 16:38:43 +0200 Subject: [PATCH 16/71] :hammer: Update event topics mapping --- .../shared/sdk/constants/eventTopics.js | 8 +++++++- .../blockchain-connector/shared/sdk/constants/names.js | 8 ++++++-- services/gateway/shared/moleculer-io/index.js | 6 +++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/services/blockchain-connector/shared/sdk/constants/eventTopics.js b/services/blockchain-connector/shared/sdk/constants/eventTopics.js index 18a339e665..93b4428629 100644 --- a/services/blockchain-connector/shared/sdk/constants/eventTopics.js +++ b/services/blockchain-connector/shared/sdk/constants/eventTopics.js @@ -15,8 +15,8 @@ */ const { MODULE_NAME_AUTH, - EVENT_NAME_MULTISIGNATURE_REGISTERED, EVENT_NAME_INVALID_SIGNATURE, + EVENT_NAME_MULTISIGNATURE_REGISTERED, MODULE_NAME_VALIDATORS, EVENT_NAME_GENERATOR_KEY_REGISTRATION, @@ -49,6 +49,7 @@ const { EVENT_NAME_RELAYER_FEE_PROCESSED, MODULE_NAME_INTEROPERABILITY, + EVENT_NAME_INVALID_CERTIFICATE_SIGNATURE, EVENT_NAME_INVALID_REGISTRATION_SIGNATURE, EVENT_NAME_CHAIN_ACCOUNT_UPDATED, EVENT_NAME_CCM_SENT_SUCCESS, @@ -67,6 +68,7 @@ const { MODULE_NAME_RANDOM, + MODULE_NAME_BLOCK_REWARDS, MODULE_NAME_DYNAMIC_BLOCK_REWARDS, EVENT_NAME_REWARD_MINTED, @@ -114,6 +116,7 @@ const EVENT_TOPIC_MAPPINGS_BY_MODULE = { [EVENT_NAME_RELAYER_FEE_PROCESSED]: ['transactionID', 'ccmID', 'relayerAddress'], }, [MODULE_NAME_INTEROPERABILITY]: { + [EVENT_NAME_INVALID_CERTIFICATE_SIGNATURE]: ['transactionID', 'chainID'], [EVENT_NAME_INVALID_REGISTRATION_SIGNATURE]: ['transactionID', 'chainID'], [EVENT_NAME_CHAIN_ACCOUNT_UPDATED]: ['transactionID', 'sendingChainID'], [EVENT_NAME_CCM_SENT_SUCCESS]: ['transactionID', 'sendingChainID', 'receivingChainID', 'sentCCMID'], @@ -133,6 +136,9 @@ const EVENT_TOPIC_MAPPINGS_BY_MODULE = { [MODULE_NAME_RANDOM]: { // No events defined in LIP }, + [MODULE_NAME_BLOCK_REWARDS]: { + [EVENT_NAME_REWARD_MINTED]: ['defaultTopic', 'generatorAddress'], + }, [MODULE_NAME_DYNAMIC_BLOCK_REWARDS]: { [EVENT_NAME_REWARD_MINTED]: ['defaultTopic', 'generatorAddress'], }, diff --git a/services/blockchain-connector/shared/sdk/constants/names.js b/services/blockchain-connector/shared/sdk/constants/names.js index 23de4b6870..871bd35dc7 100644 --- a/services/blockchain-connector/shared/sdk/constants/names.js +++ b/services/blockchain-connector/shared/sdk/constants/names.js @@ -56,6 +56,7 @@ const EVENT_NAME_RELAYER_FEE_PROCESSED = 'relayerFeeProcessed'; // Interoperability const MODULE_NAME_INTEROPERABILITY = 'interoperability'; +const EVENT_NAME_INVALID_CERTIFICATE_SIGNATURE = 'invalidCertificateSignature'; const EVENT_NAME_INVALID_REGISTRATION_SIGNATURE = 'invalidRegistrationSignature'; const EVENT_NAME_CHAIN_ACCOUNT_UPDATED = 'chainAccountUpdated'; const EVENT_NAME_CCM_SENT_SUCCESS = 'ccmSendSuccess'; @@ -76,7 +77,8 @@ const EVENT_NAME_REWARDS_ASSIGNED = 'rewardsAssigned'; // Random const MODULE_NAME_RANDOM = 'random'; -// Dynamic Block Rewards +// (Dynamic) Block Rewards +const MODULE_NAME_BLOCK_REWARDS = 'reward'; const MODULE_NAME_DYNAMIC_BLOCK_REWARDS = 'dynamicReward'; const EVENT_NAME_REWARD_MINTED = 'rewardMinted'; @@ -87,8 +89,8 @@ const EVENT_NAME_KEYS_REGISTERED = 'keysRegistered'; module.exports = { MODULE_NAME_AUTH, - EVENT_NAME_MULTISIGNATURE_REGISTERED, EVENT_NAME_INVALID_SIGNATURE, + EVENT_NAME_MULTISIGNATURE_REGISTERED, MODULE_NAME_VALIDATORS, EVENT_NAME_GENERATOR_KEY_REGISTRATION, @@ -122,6 +124,7 @@ module.exports = { EVENT_NAME_RELAYER_FEE_PROCESSED, MODULE_NAME_INTEROPERABILITY, + EVENT_NAME_INVALID_CERTIFICATE_SIGNATURE, EVENT_NAME_INVALID_REGISTRATION_SIGNATURE, EVENT_NAME_CHAIN_ACCOUNT_UPDATED, EVENT_NAME_CCM_SENT_SUCCESS, @@ -140,6 +143,7 @@ module.exports = { MODULE_NAME_RANDOM, + MODULE_NAME_BLOCK_REWARDS, MODULE_NAME_DYNAMIC_BLOCK_REWARDS, EVENT_NAME_REWARD_MINTED, diff --git a/services/gateway/shared/moleculer-io/index.js b/services/gateway/shared/moleculer-io/index.js index e099db7323..f8f0cf8470 100755 --- a/services/gateway/shared/moleculer-io/index.js +++ b/services/gateway/shared/moleculer-io/index.js @@ -21,7 +21,7 @@ const { BadRequestError } = require('./errors'); const { isValidNonEmptyResponse } = require('../utils'); const rpcCache = CacheRedis('rpcCache', config.volatileRedis); -const expireMiliseconds = config.rpcCache.ttl * 1000; +const expireMilliseconds = config.rpcCache.ttl * 1000; const rateLimiter = new RateLimiterMemory(config.websocket.rateLimit); @@ -184,8 +184,8 @@ module.exports = { if (handlerItem.onAfterCall) { res = (await handlerItem.onAfterCall.call(this, ctx, socket, request, res)) || res; } - // Store tranformed response in redis cache - if (isValidNonEmptyResponse(res)) await rpcCache.set(rpcRequestCacheKey, JSON.stringify(res), expireMiliseconds); + // Store transformed response in redis cache + if (isValidNonEmptyResponse(res)) await rpcCache.set(rpcRequestCacheKey, JSON.stringify(res), expireMilliseconds); } } else { res = await ctx.call(action, request.params, opts); From f5c7ea870c4ab455cd8efe1ba863010ff69124cc Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Wed, 12 Jul 2023 16:52:51 +0200 Subject: [PATCH 17/71] :seedling: Add support to subscribe all events --- framework/bin/socket_io_subscribe_client.js | 35 ++++++++++++++++----- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/framework/bin/socket_io_subscribe_client.js b/framework/bin/socket_io_subscribe_client.js index 5797ae7a5d..bc5d3ca19b 100644 --- a/framework/bin/socket_io_subscribe_client.js +++ b/framework/bin/socket_io_subscribe_client.js @@ -25,6 +25,14 @@ const socket = io(process.env.WS_ENDPOINT || webSocket.endpoint, { transports: ['websocket'], }); +const { onevent } = socket; +socket.onevent = function (packet) { + const args = packet.data || []; + onevent.call(this, packet); + packet.data = ['*'].concat(args); + onevent.call(this, packet); +}; + events.forEach(item => { socket.on(item, res => { console.log(`Event: ${item}, res: ${res || '-'}`); @@ -32,18 +40,31 @@ events.forEach(item => { }); ['status'].forEach(eventName => { - socket.on(eventName, newData => { + socket.on(eventName, eventPayload => { console.log( - `Received data from ${webSocket.endpoint}/${eventName}: ${newData}`, + `Received data from ${webSocket.endpoint}/${eventName}: ${eventPayload}`, ); }); }); -const subscribe = event => { - socket.on(event, answer => { - console.log(`====== ${event} ======`); - console.log(colorize(JSON.stringify(answer, null, 2))); - }); +const subscribe = subscribeEvent => { + socket.on( + subscribeEvent, + (...args) => { + let eventName; + let eventPayload; + + if (subscribeEvent === '*') { + [eventName, eventPayload] = args; + } else { + eventName = subscribeEvent; + [eventPayload] = args; + } + + console.log(`====== ${eventName} ======`); + console.log(colorize(JSON.stringify(eventPayload, null, 2))); + }, + ); }; // subscribe('*'); // Listen to all the events From 8a09cd5dea48e0a51b23e5f973c031eb41cb5732 Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Fri, 14 Jul 2023 18:08:22 +0200 Subject: [PATCH 18/71] :art: Update logs --- docker/example.env | 2 -- .../shared/indexer/blockchainIndex.js | 11 +++++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/docker/example.env b/docker/example.env index 5c6818be0a..bf5e252d1d 100644 --- a/docker/example.env +++ b/docker/example.env @@ -42,8 +42,6 @@ # Lisk ecosystem configuration LISK_APP_WS=ws://host.docker.internal:7887 -# USE_LISK_IPC_CLIENT=false -# LISK_APP_DATA_PATH='~/.lisk/lisk-core' # Lisk Service geolocation backend (empty = disabled) GEOIP_JSON='https://geoip.lisk.com/json' diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 1d3d4fd7a1..761ce4ca14 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -96,9 +96,9 @@ const indexBlock = async job => { const blocksTable = await getBlocksTable(); - // Check if the previous blocks are indexed, if not schedule them with priority + // Check if the previous blocks are indexed, if not schedule them with high priority const genesisHeight = await getGenesisHeight(); - if (block.height !== genesisHeight) { + if (block.height > genesisHeight) { const [lastIndexedBlock = {}] = await blocksTable.find( { propBetweens: [{ @@ -131,16 +131,16 @@ const indexBlock = async job => { ); if (heightsToIndex.length > 1) { - logger.trace(`Adding ${heightsToIndex.length} blocks. Current block height: ${block.height}. Scheduled blocks between heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)}.`); + logger.trace(`Current block height: ${block.height}. Attempting priority scheduling for heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} blocks).`); await BluebirdPromise.map( heightsToIndex, // eslint-disable-next-line no-use-before-define async (height) => addBlockToQueue(height, true), { concurrency: 1 }, ); + logger.debug(`Current block height: ${block.height}. Successfully priority scheduled for heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} blocks).`); lastRescheduledBlockHeightWithPriority = Math.max(...heightsToIndex); - return; } } @@ -505,8 +505,7 @@ const findMissingBlocksInRange = async (fromHeight, toHeight) => { } } - const logContent = result.map(o => `${o.from}-${o.to} (${o.to - o.from + 1} blocks)`); - logContent.forEach(o => logger.info(`Missing blocks in range: ${o}.`)); + result.forEach(({ from, to }) => logger.info(`Missing blocks in range: ${from}-${to} (${to - from + 1} blocks).`)); return result; }; From 5aebd35904bb18557543986919b67647495c099a Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Fri, 14 Jul 2023 18:14:26 +0200 Subject: [PATCH 19/71] :hammer: Remove fee-estimator as a indexer dependency --- services/blockchain-indexer/app.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/services/blockchain-indexer/app.js b/services/blockchain-indexer/app.js index a07d0c7831..4f0edc0595 100644 --- a/services/blockchain-indexer/app.js +++ b/services/blockchain-indexer/app.js @@ -60,10 +60,7 @@ const defaultBrokerConfig = { await setFeeEstimates(payload); }, }, - dependencies: [ - 'connector', - 'fees', - ], + dependencies: ['connector'], }; // Add routes, events & jobs From 8d5c80eb62ee5c0019bd8c3b672f9d8842041c27 Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Fri, 14 Jul 2023 18:52:30 +0200 Subject: [PATCH 20/71] :racehorse: Improve queue memory usage and reduce API calls --- .../shared/indexer/blockchainIndex.js | 37 +++++++++---------- .../blockchain-indexer/shared/processor.js | 4 +- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 761ce4ca14..efc5ae9615 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -91,19 +91,18 @@ const validateBlock = (block) => !!block && block.height >= 0; let lastRescheduledBlockHeightWithPriority = -1; const indexBlock = async job => { - const { block } = job.data; - if (!validateBlock(block)) throw new Error(`Invalid block ${block.id} at height ${block.height}.`); + const { height: currentBlockHeight } = job.data; const blocksTable = await getBlocksTable(); // Check if the previous blocks are indexed, if not schedule them with high priority const genesisHeight = await getGenesisHeight(); - if (block.height > genesisHeight) { + if (currentBlockHeight > genesisHeight) { const [lastIndexedBlock = {}] = await blocksTable.find( { propBetweens: [{ property: 'height', - to: block.height, + to: currentBlockHeight, }], sort: 'height:desc', limit: 1, @@ -118,27 +117,27 @@ const indexBlock = async job => { // Skip the indexing process if the last indexed block's height is // higher than or equal to current block's height and is already finalized - if (block.height <= lastIndexedHeight && isLastIndexedHeightFinal) { - logger.trace(`Skipping block indexing at height ${block.height}. Last final block indexed is ${lastIndexedHeight}.`); + if (currentBlockHeight <= lastIndexedHeight && isLastIndexedHeightFinal) { + logger.trace(`Skipping block indexing at height ${currentBlockHeight}. Last final block indexed is ${lastIndexedHeight}.`); return; } - if (block.height >= lastRescheduledBlockHeightWithPriority) { + if (currentBlockHeight >= lastRescheduledBlockHeightWithPriority) { const heightsToIndex = range( Math.max((lastIndexedHeight || genesisHeight), lastRescheduledBlockHeightWithPriority) + 1, - block.height + 1, // '+ 1' as 'to' is non-inclusive + currentBlockHeight + 1, // '+ 1' as 'to' is non-inclusive 1, ); if (heightsToIndex.length > 1) { - logger.trace(`Current block height: ${block.height}. Attempting priority scheduling for heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} blocks).`); + logger.trace(`Current block height: ${currentBlockHeight}. Attempting priority scheduling for heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} blocks).`); await BluebirdPromise.map( heightsToIndex, // eslint-disable-next-line no-use-before-define - async (height) => addBlockToQueue(height, true), + async (height) => addHeightToIndexBlocksQueue(height, true), { concurrency: 1 }, ); - logger.debug(`Current block height: ${block.height}. Successfully priority scheduled for heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} blocks).`); + logger.debug(`Current block height: ${currentBlockHeight}. Successfully priority scheduled for heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} blocks).`); lastRescheduledBlockHeightWithPriority = Math.max(...heightsToIndex); return; @@ -146,6 +145,9 @@ const indexBlock = async job => { } } + const block = await getBlockByHeight(currentBlockHeight); + if (!validateBlock(block)) throw new Error(`Invalid block ${block.id} at height ${block.height}.`); + const connection = await getDBConnection(MYSQL_ENDPOINT); const dbTrx = await startDBTransaction(connection); logger.debug(`Created new MySQL transaction to index block ${block.id} at height ${block.height}.`); @@ -518,14 +520,9 @@ const getMissingBlocks = async (params) => { return listOfMissingBlocks; }; -const addBlockToQueue = async (height, isIncreasedPriority = false) => { - const block = await getBlockByHeight(height); - if (isIncreasedPriority) { - await indexBlocksQueue.add({ block }, { priority: 1 }); - } else { - await indexBlocksQueue.add({ block }); - } -}; +const addHeightToIndexBlocksQueue = async (height, isHighPriority = false) => isHighPriority + ? indexBlocksQueue.add({ height }, { priority: 1 }) + : indexBlocksQueue.add({ height }); const setIndexVerifiedHeight = ({ height }) => keyValueTable.set(INDEX_VERIFIED_HEIGHT, height); @@ -543,7 +540,7 @@ const isGenesisBlockIndexed = async () => { module.exports = { indexNewBlock, - addBlockToQueue, + addHeightToIndexBlocksQueue, getMissingBlocks, deleteBlock, setIndexVerifiedHeight, diff --git a/services/blockchain-indexer/shared/processor.js b/services/blockchain-indexer/shared/processor.js index 2e82828320..74644d6be6 100644 --- a/services/blockchain-indexer/shared/processor.js +++ b/services/blockchain-indexer/shared/processor.js @@ -27,7 +27,7 @@ const { addAccountToDirectUpdateQueue, } = require('./indexer/accountIndex'); -const { addBlockToQueue } = require('./indexer/blockchainIndex'); +const { addHeightToIndexBlocksQueue } = require('./indexer/blockchainIndex'); const config = require('../config'); @@ -68,7 +68,7 @@ const initProcess = async () => { const { height } = job.data; logger.debug(`Scheduling indexing for block at height: ${height}`); - await addBlockToQueue(height); + await addHeightToIndexBlocksQueue(height); }); accountIndexQueue.process(async (job) => { From 191741eed61421d8e72db23087eed15543fb7f5c Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Sun, 16 Jul 2023 15:02:29 +0200 Subject: [PATCH 21/71] :bug: Fix waitForGenesisBlockIndexing --- .../blockchain-coordinator/jobs/missingBlocks.js | 6 ++---- services/blockchain-coordinator/shared/scheduler.js | 9 +++++++-- .../shared/sources/indexer.js | 13 ++++++++++--- .../shared/indexer/blockchainIndex.js | 8 +++++++- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/services/blockchain-coordinator/jobs/missingBlocks.js b/services/blockchain-coordinator/jobs/missingBlocks.js index 92802d3aa0..8ffb787e92 100644 --- a/services/blockchain-coordinator/jobs/missingBlocks.js +++ b/services/blockchain-coordinator/jobs/missingBlocks.js @@ -16,9 +16,7 @@ const logger = require('lisk-service-framework').Logger(); const config = require('../config'); -const { - scheduleMissingBlocksIndexing, -} = require('../shared/scheduler'); +const { scheduleMissingBlocksIndexing } = require('../shared/scheduler'); module.exports = [ { @@ -27,8 +25,8 @@ module.exports = [ interval: config.job.indexMissingBlocks.interval, schedule: config.job.indexMissingBlocks.schedule, controller: async () => { - logger.debug('Schedule missing blocks indexing...'); try { + logger.debug('Attempting to schedule indexing for the missing blocks.'); await scheduleMissingBlocksIndexing(); } catch (err) { logger.warn(`Failed to schedule missing blocks indexing due to: ${err.message}.`); diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index fdf6697431..c6bed5b104 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -77,7 +77,7 @@ const waitForGenesisBlockIndexing = (resolve) => new Promise((res) => { return resolve(true); } - if (jobCount === 1) { + if (jobCount <= 1) { logger.info(`Genesis block indexing is still in progress. Waiting for ${REFRESH_INTERVAL}ms to re-check the genesis block indexing status.`); intervalID = setInterval( waitForGenesisBlockIndexing.bind(null, resolve), @@ -123,7 +123,7 @@ const scheduleBlocksIndexing = async (heights) => { // Schedule indexing in batches when the list is too long to avoid OOM const MAX_BATCH_SIZE = 15000; const numBatches = Math.ceil(blockHeights.length / MAX_BATCH_SIZE); - if (numBatches > 1) logger.info(`Scheduling the blocks indexing in ${numBatches} smaller batches.`); + if (numBatches > 1) logger.info(`Scheduling the blocks indexing in ${numBatches} smaller batches of ${MAX_BATCH_SIZE}.`); for (let i = 0; i < numBatches; i++) { /* eslint-disable no-await-in-loop */ @@ -204,6 +204,11 @@ const initIndexingScheduler = async () => { }; const scheduleMissingBlocksIndexing = async () => { + if (!await isGenesisBlockIndexed()) { + logger.info('Genesis block is not yet indexed, skipping scheduleMissingBlocksIndexing run.'); + return; + } + const genesisHeight = await getGenesisHeight(); const currentHeight = await getCurrentHeight(); diff --git a/services/blockchain-coordinator/shared/sources/indexer.js b/services/blockchain-coordinator/shared/sources/indexer.js index 43b2e13f7a..dceca56666 100644 --- a/services/blockchain-coordinator/shared/sources/indexer.js +++ b/services/blockchain-coordinator/shared/sources/indexer.js @@ -15,6 +15,15 @@ */ const { requestIndexer } = require('../utils/request'); +let isGenesisBlockIndexedFlag = false; + +const isGenesisBlockIndexed = async () => { + if (isGenesisBlockIndexedFlag !== true) { + isGenesisBlockIndexedFlag = await requestIndexer('isGenesisBlockIndexed'); + } + return isGenesisBlockIndexedFlag; +}; + const getMissingBlocks = async (from, to) => requestIndexer('getMissingBlocks', { from, to, @@ -24,11 +33,9 @@ const getIndexVerifiedHeight = async () => requestIndexer('getIndexVerifiedHeigh const setIndexVerifiedHeight = async (height) => requestIndexer('setIndexVerifiedHeight', { height }); -const isGenesisBlockIndexed = async () => requestIndexer('isGenesisBlockIndexed'); - module.exports = { + isGenesisBlockIndexed, getMissingBlocks, getIndexVerifiedHeight, setIndexVerifiedHeight, - isGenesisBlockIndexed, }; diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index efc5ae9615..2758c6d8cd 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -95,6 +95,7 @@ const indexBlock = async job => { const blocksTable = await getBlocksTable(); + // Check if the previous blocks are indexed, if not skip indexing the current block // Check if the previous blocks are indexed, if not schedule them with high priority const genesisHeight = await getGenesisHeight(); if (currentBlockHeight > genesisHeight) { @@ -102,7 +103,7 @@ const indexBlock = async job => { { propBetweens: [{ property: 'height', - to: currentBlockHeight, + lowerThan: currentBlockHeight, }], sort: 'height:desc', limit: 1, @@ -143,6 +144,11 @@ const indexBlock = async job => { return; } } + + // if (lastIndexedHeight !== currentBlockHeight - 1) { + // eslint-disable-next-line max-len + // throw Error(`Last indexed height: ${lastIndexedHeight}. Parent block is not indexed yet. Cannot proceed with indexing the block at height ${currentBlockHeight}.`); + // } } const block = await getBlockByHeight(currentBlockHeight); From 01a5cb9c9cd75311e108ba2d1a78eaf85a2524d0 Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Sun, 16 Jul 2023 17:25:25 +0200 Subject: [PATCH 22/71] :bug: Fix index status report initialization --- services/blockchain-indexer/shared/indexer/indexStatus.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/blockchain-indexer/shared/indexer/indexStatus.js b/services/blockchain-indexer/shared/indexer/indexStatus.js index 86e48cdb50..28d762e840 100644 --- a/services/blockchain-indexer/shared/indexer/indexStatus.js +++ b/services/blockchain-indexer/shared/indexer/indexStatus.js @@ -109,6 +109,8 @@ const reportIndexStatus = async () => { }; const init = async () => { + // Initilalize index status reporting and schedule regular updates + await reportIndexStatus(); setInterval(reportIndexStatus, 15 * 1000); // ms // Register event listeners From 85726b979f347bbc4336bd283b6f8cde52c2ba7e Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Sun, 16 Jul 2023 19:41:09 +0200 Subject: [PATCH 23/71] :bug: Make block indexing sequential --- .../shared/indexer/blockchainIndex.js | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 2758c6d8cd..e864f14408 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -88,15 +88,14 @@ const INDEX_VERIFIED_HEIGHT = 'indexVerifiedHeight'; const validateBlock = (block) => !!block && block.height >= 0; -let lastRescheduledBlockHeightWithPriority = -1; +let lastPriorityRescheduledBlockHeight = -1; const indexBlock = async job => { const { height: currentBlockHeight } = job.data; + let blockHeightToIndex = currentBlockHeight; const blocksTable = await getBlocksTable(); - // Check if the previous blocks are indexed, if not skip indexing the current block - // Check if the previous blocks are indexed, if not schedule them with high priority const genesisHeight = await getGenesisHeight(); if (currentBlockHeight > genesisHeight) { const [lastIndexedBlock = {}] = await blocksTable.find( @@ -116,42 +115,42 @@ const indexBlock = async job => { isFinal: isLastIndexedHeightFinal, } = lastIndexedBlock; - // Skip the indexing process if the last indexed block's height is - // higher than or equal to current block's height and is already finalized - if (currentBlockHeight <= lastIndexedHeight && isLastIndexedHeightFinal) { - logger.trace(`Skipping block indexing at height ${currentBlockHeight}. Last final block indexed is ${lastIndexedHeight}.`); + // Skip if lastIndexedHeight is greater than currentBlockHeight and finalized + if (lastIndexedHeight >= currentBlockHeight && isLastIndexedHeightFinal) { return; } - if (currentBlockHeight >= lastRescheduledBlockHeightWithPriority) { + // Check if the parent block is indexed + // If not, schedule all the previous blocks with (medium) priority + // And, continue with next expected block (lastIndexedHeight + 1) instead of currentBlockHeight + if (lastIndexedHeight < currentBlockHeight - 1) { + // Skip if already priority scheduled + if (currentBlockHeight <= lastPriorityRescheduledBlockHeight) return; + + blockHeightToIndex = lastIndexedHeight + 1; const heightsToIndex = range( - Math.max((lastIndexedHeight || genesisHeight), lastRescheduledBlockHeightWithPriority) + 1, + Math.max((blockHeightToIndex || genesisHeight), lastPriorityRescheduledBlockHeight) + 1, currentBlockHeight + 1, // '+ 1' as 'to' is non-inclusive 1, ); - if (heightsToIndex.length > 1) { - logger.trace(`Current block height: ${currentBlockHeight}. Attempting priority scheduling for heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} blocks).`); + if (heightsToIndex.length) { + logger.trace(`Current block height: ${currentBlockHeight}. Attempting priority scheduling for heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} block(s)).`); await BluebirdPromise.map( heightsToIndex, + async (height) => { // eslint-disable-next-line no-use-before-define - async (height) => addHeightToIndexBlocksQueue(height, true), + await addHeightToIndexBlocksQueue(height); + lastPriorityRescheduledBlockHeight = height; + }, { concurrency: 1 }, ); - logger.debug(`Current block height: ${currentBlockHeight}. Successfully priority scheduled for heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} blocks).`); - - lastRescheduledBlockHeightWithPriority = Math.max(...heightsToIndex); - return; + logger.debug(`Current block height: ${currentBlockHeight}. Successfully priority scheduled for heights ${heightsToIndex.at(0)} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} block(s)).`); } } - - // if (lastIndexedHeight !== currentBlockHeight - 1) { - // eslint-disable-next-line max-len - // throw Error(`Last indexed height: ${lastIndexedHeight}. Parent block is not indexed yet. Cannot proceed with indexing the block at height ${currentBlockHeight}.`); - // } } - const block = await getBlockByHeight(currentBlockHeight); + const block = await getBlockByHeight(blockHeightToIndex); if (!validateBlock(block)) throw new Error(`Invalid block ${block.id} at height ${block.height}.`); const connection = await getDBConnection(MYSQL_ENDPOINT); @@ -217,7 +216,7 @@ const indexBlock = async job => { await eventsTable.upsert(eventsInfo, dbTrx); await eventTopicsTable.upsert(eventTopicsInfo, dbTrx); - // Update the generator's rewards + // Update block generator's rewards const blockRewardEvent = events.find( e => [MODULE.REWARD, MODULE.DYNAMIC_REWARD].includes(e.module) && e.name === EVENT.REWARD_MINTED, @@ -441,7 +440,7 @@ const indexNewBlock = async block => { // Or the indexed block is not final yet (chain fork) if (!blockInfo || !blockInfo.isFinal) { // Index if doesn't exist, or update if it isn't set to final - await indexBlocksQueue.add({ block }); + await indexBlocksQueue.add({ height: block.height }); // Update block finality status const finalizedBlockHeight = await getFinalizedHeight(); @@ -526,7 +525,7 @@ const getMissingBlocks = async (params) => { return listOfMissingBlocks; }; -const addHeightToIndexBlocksQueue = async (height, isHighPriority = false) => isHighPriority +const addHeightToIndexBlocksQueue = async (height, isPriority) => isPriority === true ? indexBlocksQueue.add({ height }, { priority: 1 }) : indexBlocksQueue.add({ height }); From 933b69f651e688bc5a4f6ed3bb7562c9c5ee406a Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Sun, 16 Jul 2023 21:53:12 +0200 Subject: [PATCH 24/71] :racehorse: Query for missing blocks in smaller batches --- framework/src/queue.js | 8 ++++---- framework/src/signals.js | 2 +- .../shared/scheduler.js | 20 ++++++++++++++----- services/blockchain-indexer/config.js | 16 +++++++-------- 4 files changed, 28 insertions(+), 18 deletions(-) diff --git a/framework/src/queue.js b/framework/src/queue.js index a53a6fe60c..678d908016 100644 --- a/framework/src/queue.js +++ b/framework/src/queue.js @@ -52,17 +52,17 @@ const queueInstance = (redisEndpoint, jobName = 'defaultJob', jobFn, concurrency logger.info(`Initialized queue ${queueName}`); queue.on('completed', job => { - logger.debug(`${jobName} Job completed ${job.name}`); + logger.debug(`${jobName} job completed ${job.name}`); job.remove(); }); queue.on('error', err => { - logger.error(`${jobName} Job error`, err); + logger.error(`${jobName} job error`, err); }); queue.on('failed', (job, err) => { - logger.warn(`${jobName} Job failed`, err.message); - logger.warn(`${jobName} Job failed`, err.stack); + logger.warn(`${jobName} job failed`, err.message); + logger.warn(`${jobName} job failed`, err.stack); }); setInterval(async () => { diff --git a/framework/src/signals.js b/framework/src/signals.js index 396893cbc7..3db254e197 100644 --- a/framework/src/signals.js +++ b/framework/src/signals.js @@ -35,7 +35,7 @@ const get = name => { add: listener => { const isListenerAdded = signal.has(listener, signal); if (!isListenerAdded) { - logger.info(`Adding listener: '${listener.name}' to signal: '${name}'`); + logger.info(`Attaching listener: '${listener.name}' to signal: '${name}'`); const binding = signal.add(listener, signal); return binding; } diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index c6bed5b104..c5fd4aa008 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -227,12 +227,22 @@ const scheduleMissingBlocksIndexing = async () => { const blockIndexHigherRange = currentHeight; const blockIndexLowerRange = lastVerifiedHeight; - const missingBlocksByHeight = await getMissingBlocks( - blockIndexLowerRange, - blockIndexHigherRange, - ); - try { + const missingBlocksByHeight = []; + const MAX_QUERY_RANGE = 25000; + const NUM_BATCHES = Math.ceil((blockIndexHigherRange - blockIndexLowerRange) / MAX_QUERY_RANGE); + + // Batch into smaller ranges to avoid microservice/DB query timeouts + for (let i = 0; i < NUM_BATCHES; i++) { + const batchStartHeight = blockIndexLowerRange + i * MAX_QUERY_RANGE; + const batchEndHeight = Math.min(batchStartHeight + MAX_QUERY_RANGE, blockIndexHigherRange); + + // eslint-disable-next-line no-await-in-loop + const result = await getMissingBlocks(batchStartHeight, batchEndHeight); + + missingBlocksByHeight.push(...result); + } + if (!Array.isArray(missingBlocksByHeight)) { logger.trace(`missingBlocksByHeight: ${missingBlocksByHeight}`); throw new Error(`Expected missingBlocksByHeight to be an array but found ${typeof missingBlocksByHeight}.`); diff --git a/services/blockchain-indexer/config.js b/services/blockchain-indexer/config.js index 9855e7771c..4c615b49c7 100644 --- a/services/blockchain-indexer/config.js +++ b/services/blockchain-indexer/config.js @@ -66,6 +66,11 @@ config.debug = process.env.SERVICE_LOG_LEVEL === 'debug'; * Message queue options */ config.queue = { + defaultJobOptions: { + attempts: 5, + timeout: 5 * 60 * 1000, // millisecs + removeOnComplete: true, + }, accountBalanceIndex: { name: 'AccountBalanceIndex', concurrency: 1, @@ -96,26 +101,21 @@ config.queue = { name: 'Events', }, indexBlocks: { - name: 'IndexBlocksQueue', + name: 'IndexBlocks', concurrency: 1, }, indexAccountPublicKey: { - name: 'pendingAccountPublicKeyUpdates', + name: 'PendingAccountPublicKeyUpdates', concurrency: 64, }, indexAccountAddress: { - name: 'pendingAccountAddressUpdates', + name: 'PendingAccountAddressUpdates', concurrency: 64, }, updateBlockIndex: { name: 'UpdateBlockIndexQueue', concurrency: 1, }, - defaultJobOptions: { - attempts: 5, - timeout: 5 * 60 * 1000, // millisecs - removeOnComplete: true, - }, }; config.operations = { From 8a6f2bf3051c2df52be8a4be0469ab71895f43ac Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Mon, 17 Jul 2023 10:05:59 +0200 Subject: [PATCH 25/71] :bug: Consider last indexed block when deleting the serialized events --- .../blockchain-indexer/jobs/indexer/events.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/services/blockchain-indexer/jobs/indexer/events.js b/services/blockchain-indexer/jobs/indexer/events.js index 54d8cda5d7..390d8f5f16 100644 --- a/services/blockchain-indexer/jobs/indexer/events.js +++ b/services/blockchain-indexer/jobs/indexer/events.js @@ -16,22 +16,33 @@ const logger = require('lisk-service-framework').Logger(); const { getFinalizedHeight } = require('../../shared/constants'); +const { getIndexStatus } = require('../../shared/dataService/indexStatus'); const { deleteEventStrTillHeight } = require('../../shared/indexer/utils/events'); const config = require('../../config'); module.exports = [ { name: 'delete.serializedEvents', - description: 'Delete the serialized events until finalized height.', + description: 'Delete the serialized events until the last indexed block or finalized height, whichever is lower.', interval: config.job.deleteSerializedEvents.interval, schedule: config.job.deleteSerializedEvents.schedule, controller: async () => { try { if (!config.db.isPersistEvents) { + const { + data: { genesisHeight, lastIndexedBlockHeight } = {}, + } = await getIndexStatus(); const finalizedHeight = await getFinalizedHeight(); - logger.debug(`Deleting the serialized events until the finalized height: ${finalizedHeight}.`); - await deleteEventStrTillHeight(finalizedHeight); - logger.info(`Deleted the serialized events until the finalized height: ${finalizedHeight}.`); + + // Default to 0, when getFinalizedHeight doesn't return response + const deleteTillHeight = Math.min( + lastIndexedBlockHeight || genesisHeight || 0, + finalizedHeight, + ); + + logger.debug(`Deleting the serialized events until the finalized height: ${deleteTillHeight}.`); + await deleteEventStrTillHeight(deleteTillHeight); + logger.info(`Deleted the serialized events until the finalized height: ${deleteTillHeight}.`); } } catch (err) { logger.warn(`Deleting serialized events failed due to: ${err.message}`); From 0bf282db049ab368a75cd6bc80428fb0bd7164ad Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Mon, 17 Jul 2023 10:13:43 +0200 Subject: [PATCH 26/71] :zap: Address deepscan issue --- services/blockchain-coordinator/shared/scheduler.js | 9 +++------ services/blockchain-indexer/jobs/indexer/events.js | 4 ++-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index c5fd4aa008..dfbfad35fb 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -240,12 +240,9 @@ const scheduleMissingBlocksIndexing = async () => { // eslint-disable-next-line no-await-in-loop const result = await getMissingBlocks(batchStartHeight, batchEndHeight); - missingBlocksByHeight.push(...result); - } - - if (!Array.isArray(missingBlocksByHeight)) { - logger.trace(`missingBlocksByHeight: ${missingBlocksByHeight}`); - throw new Error(`Expected missingBlocksByHeight to be an array but found ${typeof missingBlocksByHeight}.`); + if (Array.isArray(result)) { + missingBlocksByHeight.push(...result); + } } if (missingBlocksByHeight.length === 0) { diff --git a/services/blockchain-indexer/jobs/indexer/events.js b/services/blockchain-indexer/jobs/indexer/events.js index 390d8f5f16..331a9f41b6 100644 --- a/services/blockchain-indexer/jobs/indexer/events.js +++ b/services/blockchain-indexer/jobs/indexer/events.js @@ -40,9 +40,9 @@ module.exports = [ finalizedHeight, ); - logger.debug(`Deleting the serialized events until the finalized height: ${deleteTillHeight}.`); + logger.debug(`Deleting the serialized events until the height: ${deleteTillHeight}.`); await deleteEventStrTillHeight(deleteTillHeight); - logger.info(`Deleted the serialized events until the finalized height: ${deleteTillHeight}.`); + logger.info(`Deleted the serialized events until the height: ${deleteTillHeight}.`); } } catch (err) { logger.warn(`Deleting serialized events failed due to: ${err.message}`); From d1df1fb82240027a9916c4d8ac1c68705dc98d39 Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Tue, 18 Jul 2023 00:42:28 +0200 Subject: [PATCH 27/71] :art: Code cleanup --- docker/redis.persistent.conf | 2 +- services/blockchain-coordinator/config.js | 14 +-- .../shared/eventsScheduler.js | 10 +- .../shared/scheduler.js | 22 ++--- services/blockchain-indexer/config.js | 16 ++-- services/blockchain-indexer/shared/init.js | 4 +- ...eventsProcessor.js => messageProcessor.js} | 83 +++++++++++++++-- .../blockchain-indexer/shared/processor.js | 92 ------------------- 8 files changed, 105 insertions(+), 138 deletions(-) rename services/blockchain-indexer/shared/{eventsProcessor.js => messageProcessor.js} (52%) delete mode 100644 services/blockchain-indexer/shared/processor.js diff --git a/docker/redis.persistent.conf b/docker/redis.persistent.conf index 13a090198b..cd2d5968a8 100644 --- a/docker/redis.persistent.conf +++ b/docker/redis.persistent.conf @@ -13,5 +13,5 @@ aof-use-rdb-preamble yes save "" # Memory management -maxmemory 512mb +maxmemory 2gb maxmemory-policy volatile-lru diff --git a/services/blockchain-coordinator/config.js b/services/blockchain-coordinator/config.js index 2ff5ccb6d3..6dbc17adf9 100644 --- a/services/blockchain-coordinator/config.js +++ b/services/blockchain-coordinator/config.js @@ -56,20 +56,16 @@ config.debug = process.env.SERVICE_LOG_LEVEL === 'debug'; * Message queue options */ config.queue = { - accounts: { - name: 'Accounts', - }, - blocks: { - name: 'Blocks', - }, - events: { - name: 'Events', - }, defaultJobOptions: { attempts: 5, timeout: 5 * 60 * 1000, // millisecs removeOnComplete: true, }, + + // Inter-microservice message queues + account: { name: 'Account' }, + block: { name: 'Block' }, + event: { name: 'Event' }, }; config.job = { diff --git a/services/blockchain-coordinator/shared/eventsScheduler.js b/services/blockchain-coordinator/shared/eventsScheduler.js index 6fb3e0a547..4c8211c580 100644 --- a/services/blockchain-coordinator/shared/eventsScheduler.js +++ b/services/blockchain-coordinator/shared/eventsScheduler.js @@ -23,8 +23,8 @@ const config = require('../config'); const logger = Logger(); -const eventsQueue = new MessageQueue( - config.queue.events.name, +const eventMessageQueue = new MessageQueue( + config.queue.event.name, config.endpoints.messageQueue, { defaultJobOptions: config.queue.defaultJobOptions }, ); @@ -32,21 +32,21 @@ const eventsQueue = new MessageQueue( const scheduleUpdatesOnNewBlock = async (payload) => { const { blockHeader } = payload; logger.debug(`Scheduling indexing new block at height: ${blockHeader.height}.`); - await eventsQueue.add({ blockHeader, isNewBlock: true }); + await eventMessageQueue.add({ blockHeader, isNewBlock: true }); logger.info(`Finished scheduling indexing new block at height: ${blockHeader.height}.`); }; const scheduleDeleteBlock = async (payload) => { const { blockHeader } = payload; logger.debug(`Scheduling updates for the delete block at height: ${blockHeader.height}.`); - await eventsQueue.add({ blockHeader, isDeleteBlock: true }); + await eventMessageQueue.add({ blockHeader, isDeleteBlock: true }); logger.info(`Finished scheduling updates for the delete block at height: ${blockHeader.height}.`); }; const scheduleUpdatesOnNewRound = async (payload) => { const { validators } = payload; logger.debug('Scheduling updates on new round.'); - await eventsQueue.add({ validators, isNewRound: true }); + await eventMessageQueue.add({ validators, isNewRound: true }); logger.debug('Finished scheduling updates on new round}.'); }; diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index dfbfad35fb..38f2355112 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -40,14 +40,14 @@ const { const config = require('../config'); -const blockIndexQueue = new MessageQueue( - config.queue.blocks.name, +const blockMessageQueue = new MessageQueue( + config.queue.block.name, config.endpoints.messageQueue, { defaultJobOptions: config.queue.defaultJobOptions }, ); -const accountIndexQueue = new MessageQueue( - config.queue.accounts.name, +const accountMessageQueue = new MessageQueue( + config.queue.account.name, config.endpoints.messageQueue, { defaultJobOptions: config.queue.defaultJobOptions }, ); @@ -70,7 +70,7 @@ const waitForGenesisBlockIndexing = (resolve) => new Promise((res) => { return isGenesisBlockIndexed() .then(async (isIndexed) => { - const jobCount = await getInProgressJobCount(blockIndexQueue); + const jobCount = await getInProgressJobCount(blockMessageQueue); if (isIndexed) { logger.info('Genesis block is indexed.'); @@ -98,7 +98,7 @@ const waitForJobCountToFallBelowThreshold = (resolve) => new Promise((res) => { intervalID = null; } - return getInProgressJobCount(blockIndexQueue) + return getInProgressJobCount(blockMessageQueue) .then((count) => { const { skipThreshold } = config.job.indexMissingBlocks; return count < skipThreshold @@ -134,7 +134,7 @@ const scheduleBlocksIndexing = async (heights) => { // eslint-disable-next-line no-restricted-syntax for (const height of blockHeightsBatch) { logger.trace(`Scheduling indexing for block at height: ${height}.`); - await blockIndexQueue.add({ height }); + await blockMessageQueue.add({ height }); logger.debug(`Scheduled indexing for block at height: ${height}.`); } @@ -147,7 +147,7 @@ const scheduleBlocksIndexing = async (heights) => { const scheduleValidatorsIndexing = async (validators) => { await BluebirdPromise.map( validators, - async validator => accountIndexQueue.add({ + async validator => accountMessageQueue.add({ account: { ...validator, isValidator: true, @@ -178,7 +178,7 @@ const initIndexingScheduler = async () => { logger.info('Validator indexing initialization completed successfully.'); // Skip scheduling jobs for missing blocks when the jobCount is greater than the threshold - const jobCount = await getInProgressJobCount(blockIndexQueue); + const jobCount = await getInProgressJobCount(blockMessageQueue); if (jobCount > config.job.indexMissingBlocks.skipThreshold) { logger.info(`Skipping the check for missing blocks. ${jobCount} blocks already queued for indexing.`); } else { @@ -195,7 +195,7 @@ const initIndexingScheduler = async () => { if (Array.isArray(missingBlockHeights) && missingBlockHeights.length) { logger.info(`${missingBlockHeights.length} missing blocks found between heights: ${lastVerifiedHeight} - ${currentHeight}. Attempting to schedule indexing.`); await scheduleBlocksIndexing(missingBlockHeights); - logger.info(`Finished scheduling indexing of ${missingBlockHeights.length} missing blocks between heights: ${lastVerifiedHeight} - ${currentHeight}.`); + logger.info(`Finished scheduling indexing of ${missingBlockHeights.length} missing blocks between heights: ${lastVerifiedHeight} - ${currentHeight}.`); } else { logger.info(`No missing blocks found between heights: ${lastVerifiedHeight} - ${currentHeight}. Nothing to schedule.`); } @@ -213,7 +213,7 @@ const scheduleMissingBlocksIndexing = async () => { const currentHeight = await getCurrentHeight(); // Skip job scheduling when the jobCount is greater than the threshold - const jobCount = await getInProgressJobCount(blockIndexQueue); + const jobCount = await getInProgressJobCount(blockMessageQueue); if (jobCount > config.job.indexMissingBlocks.skipThreshold) { logger.info(`Skipping missing blocks job run. ${jobCount} indexing jobs already in the queue.`); return; diff --git a/services/blockchain-indexer/config.js b/services/blockchain-indexer/config.js index 4c615b49c7..cea3a5b901 100644 --- a/services/blockchain-indexer/config.js +++ b/services/blockchain-indexer/config.js @@ -71,13 +71,17 @@ config.queue = { timeout: 5 * 60 * 1000, // millisecs removeOnComplete: true, }, + + // Inter-microservice message queues + account: { name: 'Account' }, + block: { name: 'Block' }, + event: { name: 'Event' }, + + // Intra-microservice job queues accountBalanceIndex: { name: 'AccountBalanceIndex', concurrency: 1, }, - accounts: { - name: 'Accounts', - }, accountQueueByAddress: { name: 'AccountQueueByAddress', concurrency: 1, @@ -90,16 +94,10 @@ config.queue = { name: 'AccountQueueByPublicKey', concurrency: 1, }, - blocks: { - name: 'Blocks', - }, deleteIndexedBlocks: { name: 'DeleteIndexedBlocksQueue', concurrency: 1, }, - events: { - name: 'Events', - }, indexBlocks: { name: 'IndexBlocks', concurrency: 1, diff --git a/services/blockchain-indexer/shared/init.js b/services/blockchain-indexer/shared/init.js index acae60bf95..df0d4e8fa1 100644 --- a/services/blockchain-indexer/shared/init.js +++ b/services/blockchain-indexer/shared/init.js @@ -21,7 +21,7 @@ const config = require('../config'); const { getTokenConstants, getRewardConstants, getPosConstants } = require('./dataService'); const indexStatus = require('./indexer/indexStatus'); -const processor = require('./processor'); +const messageProcessor = require('./messageProcessor'); const logger = Logger(); @@ -36,7 +36,7 @@ const init = async () => { await indexStatus.init(); if (config.operations.isIndexingModeEnabled) { - await processor.init(); + await messageProcessor.init(); } } catch (error) { logger.error(`Unable to initialize due to: ${error.message}. Try restarting the application.`); diff --git a/services/blockchain-indexer/shared/eventsProcessor.js b/services/blockchain-indexer/shared/messageProcessor.js similarity index 52% rename from services/blockchain-indexer/shared/eventsProcessor.js rename to services/blockchain-indexer/shared/messageProcessor.js index 5ccc172f31..058a137c0a 100644 --- a/services/blockchain-indexer/shared/eventsProcessor.js +++ b/services/blockchain-indexer/shared/messageProcessor.js @@ -14,7 +14,20 @@ * */ const MessageQueue = require('bull'); -const { Logger, Signals } = require('lisk-service-framework'); + +const { + Logger, + Signals, +} = require('lisk-service-framework'); + +const config = require('../config'); + +const logger = Logger(); + +const { initNodeConstants } = require('./constants'); + +const { addAccountToDirectUpdateQueue } = require('./indexer/accountIndex'); +const { addHeightToIndexBlocksQueue, deleteBlock, indexNewBlock } = require('./indexer/blockchainIndex'); const { getBlocks, @@ -26,18 +39,46 @@ const { normalizeBlocks, } = require('./dataService'); -const { deleteBlock, indexNewBlock } = require('./indexer/blockchainIndex'); +const STATS_INTERVAL = 1 * 60 * 1000; // ms -const config = require('../config'); +const accountMessageQueue = new MessageQueue( + config.queue.account.name, + config.endpoints.messageQueue, + { defaultJobOptions: config.queue.defaultJobOptions }, +); -const logger = Logger(); +const blockMessageQueue = new MessageQueue( + config.queue.block.name, + config.endpoints.messageQueue, + { defaultJobOptions: config.queue.defaultJobOptions }, +); -const eventsQueue = new MessageQueue( - config.queue.events.name, +const eventMessageQueue = new MessageQueue( + config.queue.event.name, config.endpoints.messageQueue, { defaultJobOptions: config.queue.defaultJobOptions }, ); +const queueStatus = async (messageQueue) => { + setInterval( + async () => { + const jc = await messageQueue.getJobCounts(); + const logSuffix = (jc.waiting || jc.active || jc.failed || jc.paused) + ? `waiting: ${jc.waiting}, active: ${jc.active}, failed: ${jc.failed}, paused: ${jc.paused}` + : 'All scheduled jobs are done'; + + logger.info(`Message queue counters for ${messageQueue.name}: ${logSuffix}.`); + }, + STATS_INTERVAL, + ); +}; + +const initQueueStatus = async () => { + await queueStatus(accountMessageQueue); + await queueStatus(blockMessageQueue); + await queueStatus(eventMessageQueue); +}; + const newBlockProcessor = async (block) => { logger.debug(`New block arrived at height ${block.height}, id: ${block.id}`); const response = await getBlocks({ height: block.height }); @@ -74,8 +115,25 @@ const newRoundProcessor = async () => { Signals.get('newRound').dispatch(response); }; -const initEventsProcess = async () => { - eventsQueue.process(async (job) => { +const initMessageProcessors = async () => { + logger.info(`Registering job processor for ${accountMessageQueue.name} message queue.`); + accountMessageQueue.process(async (job) => { + const { account } = job.data; + logger.debug(`Scheduling indexing for account with address: ${account.address}.`); + await addAccountToDirectUpdateQueue(account); + }); + + logger.info(`Registering job processor for ${blockMessageQueue.name} message queue.`); + blockMessageQueue.process(async (job) => { + logger.debug('Subscribed to block index message queue.'); + const { height } = job.data; + + logger.debug(`Scheduling indexing for block at height: ${height}.`); + await addHeightToIndexBlocksQueue(height); + }); + + logger.info(`Registering job processor for ${eventMessageQueue.name} message queue.`); + eventMessageQueue.process(async (job) => { logger.debug('Subscribed to the events from coordinator.'); const { isNewBlock, isDeleteBlock, isNewRound } = job.data; @@ -89,8 +147,15 @@ const initEventsProcess = async () => { await newRoundProcessor(); } }); + + await initQueueStatus(); +}; + +const init = async () => { + await initNodeConstants(); + await initMessageProcessors(); }; module.exports = { - initEventsProcess, + init, }; diff --git a/services/blockchain-indexer/shared/processor.js b/services/blockchain-indexer/shared/processor.js deleted file mode 100644 index 74644d6be6..0000000000 --- a/services/blockchain-indexer/shared/processor.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * LiskHQ/lisk-service - * Copyright © 2022 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - * - */ -const MessageQueue = require('bull'); - -const { - Logger, -} = require('lisk-service-framework'); - -const logger = Logger(); - -const { initNodeConstants } = require('./constants'); -const { initEventsProcess } = require('./eventsProcessor'); -const { - addAccountToDirectUpdateQueue, -} = require('./indexer/accountIndex'); - -const { addHeightToIndexBlocksQueue } = require('./indexer/blockchainIndex'); - -const config = require('../config'); - -const STATS_INTERVAL = 1 * 60 * 1000; // ms - -const blockIndexQueue = new MessageQueue( - config.queue.blocks.name, - config.endpoints.messageQueue, - { defaultJobOptions: config.queue.defaultJobOptions }, -); - -const accountIndexQueue = new MessageQueue( - config.queue.accounts.name, - config.endpoints.messageQueue, - { defaultJobOptions: config.queue.defaultJobOptions }, -); - -const queueStatus = async (queueInstance) => { - setInterval(async () => { - const jc = await queueInstance.getJobCounts(); - if (Number(jc.waiting) > 0 || Number(jc.active) > 0 - || Number(jc.failed) > 0 || Number(jc.paused) > 0) { - logger.info(`Queue counters for ${queueInstance.name}: waiting: ${jc.waiting}, active: ${jc.active}, failed: ${jc.failed}, paused: ${jc.paused}`); - } else { - logger.info(`Queue counters for ${queueInstance.name}: All scheduled jobs are done.`); - } - }, STATS_INTERVAL); -}; - -const initQueueStatus = async () => { - await queueStatus(blockIndexQueue); - await queueStatus(accountIndexQueue); -}; - -const initProcess = async () => { - blockIndexQueue.process(async (job) => { - logger.debug('Subscribed to block index message queue'); - const { height } = job.data; - - logger.debug(`Scheduling indexing for block at height: ${height}`); - await addHeightToIndexBlocksQueue(height); - }); - - accountIndexQueue.process(async (job) => { - logger.debug('Subscribed to account index message queue'); - const { account } = job.data; - logger.debug(`Scheduling indexing for account with address: ${account.address}`); - await addAccountToDirectUpdateQueue(account); - }); - - await initQueueStatus(); -}; - -const init = async () => { - await initNodeConstants(); - await initProcess(); - await initEventsProcess(); -}; - -module.exports = { - init, -}; From 73e215ca31bd8e10cec71caa693d3f486482be38 Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Tue, 18 Jul 2023 12:19:33 +0200 Subject: [PATCH 28/71] :bug: Fix live indexing count logic in scheduler --- .../shared/scheduler.js | 19 ++++++++++++++----- .../shared/sources/indexer.js | 10 ++++++---- .../methods/indexer/indexer.js | 6 ++++++ 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 38f2355112..b1a9968faa 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -30,7 +30,10 @@ const { } = require('./sources/indexer'); const { getAllPosValidators } = require('./sources/connector'); -const { isGenesisBlockIndexed } = require('./sources/indexer'); +const { + isGenesisBlockIndexed, + getLiveIndexingJobCount: getLiveIndexingJobCountFromIndexer, +} = require('./sources/indexer'); const { getCurrentHeight, @@ -58,6 +61,12 @@ const getInProgressJobCount = async (queue) => { return count; }; +const getLiveIndexingJobCount = async () => { + const messageQueueJobCount = await getInProgressJobCount(blockMessageQueue); + const indexerLiveIndexingJobCount = await getLiveIndexingJobCountFromIndexer(); + return messageQueueJobCount + indexerLiveIndexingJobCount; +}; + let intervalID; const REFRESH_INTERVAL = 30000; @@ -70,7 +79,7 @@ const waitForGenesisBlockIndexing = (resolve) => new Promise((res) => { return isGenesisBlockIndexed() .then(async (isIndexed) => { - const jobCount = await getInProgressJobCount(blockMessageQueue); + const jobCount = await getLiveIndexingJobCount(); if (isIndexed) { logger.info('Genesis block is indexed.'); @@ -98,7 +107,7 @@ const waitForJobCountToFallBelowThreshold = (resolve) => new Promise((res) => { intervalID = null; } - return getInProgressJobCount(blockMessageQueue) + return getLiveIndexingJobCount() .then((count) => { const { skipThreshold } = config.job.indexMissingBlocks; return count < skipThreshold @@ -178,7 +187,7 @@ const initIndexingScheduler = async () => { logger.info('Validator indexing initialization completed successfully.'); // Skip scheduling jobs for missing blocks when the jobCount is greater than the threshold - const jobCount = await getInProgressJobCount(blockMessageQueue); + const jobCount = await getLiveIndexingJobCount(); if (jobCount > config.job.indexMissingBlocks.skipThreshold) { logger.info(`Skipping the check for missing blocks. ${jobCount} blocks already queued for indexing.`); } else { @@ -213,7 +222,7 @@ const scheduleMissingBlocksIndexing = async () => { const currentHeight = await getCurrentHeight(); // Skip job scheduling when the jobCount is greater than the threshold - const jobCount = await getInProgressJobCount(blockMessageQueue); + const jobCount = await getLiveIndexingJobCount(); if (jobCount > config.job.indexMissingBlocks.skipThreshold) { logger.info(`Skipping missing blocks job run. ${jobCount} indexing jobs already in the queue.`); return; diff --git a/services/blockchain-coordinator/shared/sources/indexer.js b/services/blockchain-coordinator/shared/sources/indexer.js index dceca56666..e0b52efc9f 100644 --- a/services/blockchain-coordinator/shared/sources/indexer.js +++ b/services/blockchain-coordinator/shared/sources/indexer.js @@ -24,18 +24,20 @@ const isGenesisBlockIndexed = async () => { return isGenesisBlockIndexedFlag; }; -const getMissingBlocks = async (from, to) => requestIndexer('getMissingBlocks', { - from, - to, -}); +const getMissingBlocks = async (from, to) => requestIndexer( + 'getMissingBlocks', { from, to }, +); const getIndexVerifiedHeight = async () => requestIndexer('getIndexVerifiedHeight'); const setIndexVerifiedHeight = async (height) => requestIndexer('setIndexVerifiedHeight', { height }); +const getLiveIndexingJobCount = async () => requestIndexer('getLiveIndexingJobCount'); + module.exports = { isGenesisBlockIndexed, getMissingBlocks, getIndexVerifiedHeight, setIndexVerifiedHeight, + getLiveIndexingJobCount, }; diff --git a/services/blockchain-indexer/methods/indexer/indexer.js b/services/blockchain-indexer/methods/indexer/indexer.js index 678d04508e..640a52047f 100644 --- a/services/blockchain-indexer/methods/indexer/indexer.js +++ b/services/blockchain-indexer/methods/indexer/indexer.js @@ -18,6 +18,7 @@ const { getIndexVerifiedHeight, setIndexVerifiedHeight, isGenesisBlockIndexed, + getLiveIndexingJobCount, } = require('../../shared/indexer/blockchainIndex'); const { @@ -61,4 +62,9 @@ module.exports = [ controller: isGenesisBlockIndexed, params: {}, }, + { + name: 'getLiveIndexingJobCount', + controller: getLiveIndexingJobCount, + params: {}, + }, ]; From 0ee7819bce923d56542d3d61329e5a2fd13a8d9c Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Thu, 20 Jul 2023 15:56:20 +0200 Subject: [PATCH 29/71] :zap: Add retry logic to index genesis block on failure --- services/blockchain-coordinator/shared/scheduler.js | 9 ++++++--- .../blockchain-indexer/jobs/dataService/validators.js | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index b1a9968faa..807681ce8d 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -95,8 +95,7 @@ const waitForGenesisBlockIndexing = (resolve) => new Promise((res) => { return false; } - logger.warn('Genesis block indexing failed.'); - return resolve(false); + throw new Error('Genesis block indexing failed.'); }); }); @@ -174,7 +173,11 @@ const indexGenesisBlock = async () => { await scheduleBlocksIndexing(genesisHeight); logger.info('Finished scheduling genesis block indexing.'); - await waitForGenesisBlockIndexing(); + await waitForGenesisBlockIndexing() + .catch(async () => { + logger.warn('Genesis indexing failed. Retrying.'); + await indexGenesisBlock(); + }); }; const initIndexingScheduler = async () => { diff --git a/services/blockchain-indexer/jobs/dataService/validators.js b/services/blockchain-indexer/jobs/dataService/validators.js index 14215520c1..1557fcfa82 100644 --- a/services/blockchain-indexer/jobs/dataService/validators.js +++ b/services/blockchain-indexer/jobs/dataService/validators.js @@ -62,6 +62,7 @@ module.exports = [ await validateValidatorCache(); } catch (err) { logger.warn(`Validating validators cache failed due to: ${err.message}.`); + logger.debug(err.stack); } } }, From 3faaa2bce776d1e382bc2a582b8896d9ff16c0fa Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Thu, 20 Jul 2023 16:15:18 +0200 Subject: [PATCH 30/71] :zap: Set indexVerifiedHeight in incremental steps --- .../shared/scheduler.js | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 807681ce8d..cf36e3b1a9 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -133,10 +133,10 @@ const scheduleBlocksIndexing = async (heights) => { const numBatches = Math.ceil(blockHeights.length / MAX_BATCH_SIZE); if (numBatches > 1) logger.info(`Scheduling the blocks indexing in ${numBatches} smaller batches of ${MAX_BATCH_SIZE}.`); + const isMultiBatch = numBatches > 1; for (let i = 0; i < numBatches; i++) { /* eslint-disable no-await-in-loop */ - - if (numBatches > 1) logger.debug(`Scheduling batch ${i + 1}/${numBatches}.`); + if (isMultiBatch) logger.debug(`Scheduling batch ${i + 1}/${numBatches}.`); const blockHeightsBatch = blockHeights.slice(i * MAX_BATCH_SIZE, (i + 1) * MAX_BATCH_SIZE); // eslint-disable-next-line no-restricted-syntax @@ -146,7 +146,7 @@ const scheduleBlocksIndexing = async (heights) => { logger.debug(`Scheduled indexing for block at height: ${height}.`); } - if (numBatches > 1) logger.info(`Finished scheduling batch ${i + 1}/${numBatches}.`); + if (isMultiBatch) logger.info(`Finished scheduling batch ${i + 1}/${numBatches}.`); await waitForJobCountToFallBelowThreshold(); /* eslint-enable no-await-in-loop */ } @@ -217,7 +217,7 @@ const initIndexingScheduler = async () => { const scheduleMissingBlocksIndexing = async () => { if (!await isGenesisBlockIndexed()) { - logger.info('Genesis block is not yet indexed, skipping scheduleMissingBlocksIndexing run.'); + logger.info('Genesis block is not yet indexed, skipping missing blocks job run.'); return; } @@ -246,21 +246,30 @@ const scheduleMissingBlocksIndexing = async () => { // Batch into smaller ranges to avoid microservice/DB query timeouts for (let i = 0; i < NUM_BATCHES; i++) { + /* eslint-disable no-await-in-loop */ + const batchStartHeight = blockIndexLowerRange + i * MAX_QUERY_RANGE; const batchEndHeight = Math.min(batchStartHeight + MAX_QUERY_RANGE, blockIndexHigherRange); - - // eslint-disable-next-line no-await-in-loop const result = await getMissingBlocks(batchStartHeight, batchEndHeight); if (Array.isArray(result)) { missingBlocksByHeight.push(...result); + + if (result.length === 0) { + const lastIndexVerifiedHeight = await getIndexVerifiedHeight(); + if (batchEndHeight === (lastIndexVerifiedHeight + MAX_QUERY_RANGE)) { + await setIndexVerifiedHeight(batchEndHeight); + logger.debug(`No missing blocks found in range ${batchStartHeight} - ${batchEndHeight}. Setting index verified height to ${batchEndHeight}.`); + } + } } + /* eslint-enable no-await-in-loop */ } if (missingBlocksByHeight.length === 0) { // Update 'indexVerifiedHeight' when no missing blocks are found await setIndexVerifiedHeight(blockIndexHigherRange); - logger.info(`No missing blocks found. Setting the index verified height to ${blockIndexHigherRange}.`); + logger.info(`No missing blocks found in range ${blockIndexLowerRange} - ${blockIndexHigherRange}. Setting index verified height to ${blockIndexHigherRange}.`); } else { // Schedule indexing for the missing blocks await scheduleBlocksIndexing(missingBlocksByHeight); From 98e93be7052bebbd875e5f763559feafba3dd02c Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Fri, 21 Jul 2023 16:34:10 +0200 Subject: [PATCH 31/71] :zap: Skip genesis block indexing, if already indexed --- services/blockchain-coordinator/shared/scheduler.js | 5 +++++ services/blockchain-indexer/shared/indexer/indexStatus.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index cf36e3b1a9..bda7cd7b2c 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -168,6 +168,11 @@ const scheduleValidatorsIndexing = async (validators) => { }; const indexGenesisBlock = async () => { + if (await isGenesisBlockIndexed()) { + logger.info('Genesis block is already indexed.'); + return; + } + const genesisHeight = await getGenesisHeight(); logger.debug('Scheduling genesis block indexing.'); await scheduleBlocksIndexing(genesisHeight); diff --git a/services/blockchain-indexer/shared/indexer/indexStatus.js b/services/blockchain-indexer/shared/indexer/indexStatus.js index 28d762e840..a2ab7d42f1 100644 --- a/services/blockchain-indexer/shared/indexer/indexStatus.js +++ b/services/blockchain-indexer/shared/indexer/indexStatus.js @@ -109,7 +109,7 @@ const reportIndexStatus = async () => { }; const init = async () => { - // Initilalize index status reporting and schedule regular updates + // Initialize index status reporting and schedule regular updates await reportIndexStatus(); setInterval(reportIndexStatus, 15 * 1000); // ms From 871a15afaebf2d278b5fbad5aec3593c7b489cf0 Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Mon, 24 Jul 2023 13:46:23 +0200 Subject: [PATCH 32/71] :zap: Reduce number of DB calls and queues --- services/blockchain-indexer/config.js | 4 --- .../shared/indexer/blockchainIndex.js | 30 +++++++------------ 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/services/blockchain-indexer/config.js b/services/blockchain-indexer/config.js index 09e7355e00..c7c28a23a5 100644 --- a/services/blockchain-indexer/config.js +++ b/services/blockchain-indexer/config.js @@ -110,10 +110,6 @@ config.queue = { name: 'PendingAccountAddressUpdates', concurrency: 64, }, - updateBlockIndex: { - name: 'UpdateBlockIndexQueue', - concurrency: 1, - }, }; config.operations = { diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index e864f14408..38bcc60caa 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -291,12 +291,6 @@ const indexBlock = async job => { } }; -const updateBlockIndex = async job => { - const blocksTable = await getBlocksTable(); - const { blocks } = job.data; - await blocksTable.upsert(blocks); -}; - const deleteIndexedBlocks = async job => { const { blocks } = job.data; const blockIDs = blocks.map(b => b.id).join(', '); @@ -409,12 +403,7 @@ const indexBlocksQueue = Queue( indexBlock, config.queue.indexBlocks.concurrency, ); -const updateBlockIndexQueue = Queue( - config.endpoints.cache, - config.queue.updateBlockIndex.name, - updateBlockIndex, - config.queue.updateBlockIndex.concurrency, -); + const deleteIndexedBlocksQueue = Queue( config.endpoints.cache, config.queue.deleteIndexedBlocks.name, @@ -442,14 +431,17 @@ const indexNewBlock = async block => { // Index if doesn't exist, or update if it isn't set to final await indexBlocksQueue.add({ height: block.height }); - // Update block finality status + // Update finality status for the parent blocks const finalizedBlockHeight = await getFinalizedHeight(); - const nonFinalBlocks = await blocksTable.find({ isFinal: false, limit: 1000 }, - Object.keys(blocksTableSchema.schema)); - await updateBlockIndexQueue.add({ - blocks: nonFinalBlocks - .filter(b => b.height <= finalizedBlockHeight) - .map(b => ({ ...b, isFinal: true })), + await blocksTable.update({ + where: { + isFinal: false, + propBetweens: [{ + property: 'height', + to: finalizedBlockHeight, + }], + }, + updates: { isFinal: true }, }); if (blockInfo && blockInfo.id !== block.id) { From c83e429747f2a3ec4fb0525c282a3642359452ee Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Mon, 24 Jul 2023 14:10:35 +0200 Subject: [PATCH 33/71] :zap: Ensure deleteIndexedBlocks is executed sequentially by height (desc) --- .../shared/dataService/business/events.js | 9 ++++-- .../shared/dataService/business/index.js | 2 ++ .../shared/dataService/index.js | 2 ++ .../shared/indexer/accountBalanceIndex.js | 1 + .../shared/indexer/blockchainIndex.js | 30 +++++++++++-------- 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/services/blockchain-indexer/shared/dataService/business/events.js b/services/blockchain-indexer/shared/dataService/business/events.js index c5bf1eeb6e..b40f948843 100644 --- a/services/blockchain-indexer/shared/dataService/business/events.js +++ b/services/blockchain-indexer/shared/dataService/business/events.js @@ -78,10 +78,10 @@ const getEventsByBlockID = async (blockID) => { // Get from DB incase of cache miss const eventsTable = await getEventsTable(); - const dbEventStrs = await eventsTable.find({ blockID }, ['eventStr']); + const dbEventStrings = await eventsTable.find({ blockID }, ['eventStr']); - if (dbEventStrs.length) { - const dbEvents = dbEventStrs + if (dbEventStrings.length) { + const dbEvents = dbEventStrings .map(({ eventStr }) => eventStr ? JSON.parse(eventStr) : eventStr); eventCacheByBlockID.set(blockID, JSON.stringify(dbEvents)); return dbEvents; @@ -96,6 +96,8 @@ const cacheEventsByBlockID = async (blockID, events) => { const deleteEventsFromCache = async (height) => eventCache.delete(height); +const deleteEventsFromCacheByBlockID = async (blockID) => eventCacheByBlockID.delete(blockID); + const getEvents = async (params) => { const blocksTable = await getBlocksTable(); const eventsTable = await getEventsTable(); @@ -205,6 +207,7 @@ module.exports = { getEvents, getEventsByHeight, cacheEventsByBlockID, + deleteEventsFromCacheByBlockID, getEventsByBlockID, deleteEventsFromCache, }; diff --git a/services/blockchain-indexer/shared/dataService/business/index.js b/services/blockchain-indexer/shared/dataService/business/index.js index dbbd74cc2a..40c6b5dac8 100644 --- a/services/blockchain-indexer/shared/dataService/business/index.js +++ b/services/blockchain-indexer/shared/dataService/business/index.js @@ -86,6 +86,7 @@ const { getEvents, getEventsByHeight, cacheEventsByBlockID, + deleteEventsFromCacheByBlockID, getEventsByBlockID, deleteEventsFromCache, } = require('./events'); @@ -135,6 +136,7 @@ module.exports = { getEvents, getEventsByHeight, cacheEventsByBlockID, + deleteEventsFromCacheByBlockID, getEventsByBlockID, deleteEventsFromCache, diff --git a/services/blockchain-indexer/shared/dataService/index.js b/services/blockchain-indexer/shared/dataService/index.js index 7174ddaea3..933ad6eef9 100644 --- a/services/blockchain-indexer/shared/dataService/index.js +++ b/services/blockchain-indexer/shared/dataService/index.js @@ -27,6 +27,7 @@ const { normalizeTransaction, getEventsByHeight, cacheEventsByBlockID, + deleteEventsFromCacheByBlockID, getEventsByBlockID, deleteEventsFromCache, isMainchain, @@ -189,6 +190,7 @@ module.exports = { getPosLockedRewards, getEventsByHeight, cacheEventsByBlockID, + deleteEventsFromCacheByBlockID, getEventsByBlockID, deleteEventsFromCache, diff --git a/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js b/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js index d02e1555c2..4c97054ec9 100644 --- a/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js +++ b/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js @@ -43,6 +43,7 @@ const updateAccountBalances = async (address) => { }; const accountBalanceIndexProcessor = async job => updateAccountBalances(job.data.address); + const accountBalanceIndexQueue = Queue( config.endpoints.cache, config.queue.accountBalanceIndex.name, diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 38bcc60caa..cd8edf0d79 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -40,7 +40,7 @@ const { getEventsByHeight, cacheEventsByBlockID, getEventsByBlockID, - deleteEventsFromCache, + deleteEventsFromCacheByBlockID, getTransactionsByBlockID, } = require('../dataService'); @@ -375,10 +375,12 @@ const deleteIndexedBlocks = async job => { // Invalidate cached events for this block // This must be done after processing all event related calculations - await deleteEventsFromCache(block.height); - }); + await deleteEventsFromCacheByBlockID(block.id); + }, + { concurrency: 1 }, + ); - await blocksTable.deleteByPrimaryKey(blockIDs); + await blocksTable.deleteByPrimaryKey(blockIDs, dbTrx); await commitDBTransaction(dbTrx); logger.debug(`Committed MySQL transaction to delete block(s) with ID(s): ${blockIDs}.`); } catch (error) { @@ -447,14 +449,18 @@ const indexNewBlock = async block => { if (blockInfo && blockInfo.id !== block.id) { // Fork detected const [highestIndexedBlock] = await blocksTable.find({ sort: 'height:desc', limit: 1 }, ['height']); - const blocksToRemove = await blocksTable.find({ - propBetweens: [{ - property: 'height', - from: block.height + 1, - to: highestIndexedBlock.height, - }], - limit: highestIndexedBlock.height - block.height, - }, ['id']); + const blocksToRemove = await blocksTable.find( + { + propBetweens: [{ + property: 'height', + from: block.height + 1, + to: highestIndexedBlock.height, + }], + sort: 'height:desc', + limit: highestIndexedBlock.height - block.height, + }, + ['id'], + ); await deleteIndexedBlocksQueue.add({ blocks: blocksToRemove }); } } From b45de36034ba731c72d642dc863a3175dfd431bf Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Tue, 25 Jul 2023 11:39:59 +0200 Subject: [PATCH 34/71] :hammer: Update account balances as part of block indexing transaction --- services/blockchain-indexer/config.js | 4 -- .../shared/indexer/accountBalanceIndex.js | 59 +++++++------------ .../shared/indexer/blockchainIndex.js | 22 +++---- .../shared/indexer/genesisBlock.js | 2 +- .../shared/indexer/indexStatus.js | 2 +- 5 files changed, 33 insertions(+), 56 deletions(-) diff --git a/services/blockchain-indexer/config.js b/services/blockchain-indexer/config.js index c7c28a23a5..fce72b8355 100644 --- a/services/blockchain-indexer/config.js +++ b/services/blockchain-indexer/config.js @@ -78,10 +78,6 @@ config.queue = { event: { name: 'Event' }, // Intra-microservice job queues - accountBalanceIndex: { - name: 'AccountBalanceIndex', - concurrency: 1, - }, accountQueueByAddress: { name: 'AccountQueueByAddress', concurrency: 1, diff --git a/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js b/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js index 4c97054ec9..6796d50f94 100644 --- a/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js +++ b/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js @@ -16,7 +16,6 @@ const BluebirdPromise = require('bluebird'); const { MySQL: { getTableInstance }, - Queue, } = require('lisk-service-framework'); const config = require('../../config'); @@ -28,7 +27,7 @@ const MYSQL_ENDPOINT = config.endpoints.mysql; const getAccountBalancesTable = () => getTableInstance(accountBalancesTableSchema, MYSQL_ENDPOINT); -const updateAccountBalances = async (address) => { +const updateAccountBalances = async (address, dbTrx = null) => { const accountBalancesTable = await getAccountBalancesTable(); const { data: balanceInfos } = await getTokenBalances({ address }); @@ -39,46 +38,32 @@ const updateAccountBalances = async (address) => { })); // Update all token balances of the address - await accountBalancesTable.upsert(updatedTokenBalances); + await accountBalancesTable.upsert(updatedTokenBalances, dbTrx); }; -const accountBalanceIndexProcessor = async job => updateAccountBalances(job.data.address); +const updateAccountBalancesFromTokenEvents = async (events, dbTrx = null) => BluebirdPromise.map( + events, + async event => { + // Skip non token module events + if (event.module !== MODULE.TOKEN) return; -const accountBalanceIndexQueue = Queue( - config.endpoints.cache, - config.queue.accountBalanceIndex.name, - accountBalanceIndexProcessor, - config.queue.accountBalanceIndex.concurrency, + const { data: eventData = {} } = event; + const eventDataKeys = Object.keys(eventData); + await BluebirdPromise.map( + eventDataKeys, + async key => { + if (key.toLowerCase().includes('address')) { + const address = eventData[key]; + await updateAccountBalances(address, dbTrx); + } + }, + { concurrency: eventDataKeys.length }, + ); + }, + { concurrency: events.length }, ); -const scheduleAccountBalanceUpdateFromEvents = async (events) => { - await BluebirdPromise.map( - events, - async event => { - // Skip non token module events - if (event.module !== MODULE.TOKEN) return; - - const { data: eventData = {} } = event; - const eventDataKeys = Object.keys(eventData); - await BluebirdPromise.map( - eventDataKeys, - async key => { - // Schedule account balance update for address related properties - if (key.toLowerCase().includes('address')) { - await accountBalanceIndexQueue.add({ address: eventData[key] }); - } - }, - { concurrency: eventDataKeys.length }, - ); - }, - { concurrency: events.length }, - ); -}; - module.exports = { - scheduleAccountBalanceUpdateFromEvents, updateAccountBalances, - - // For testing - accountBalanceIndexQueue, + updateAccountBalancesFromTokenEvents, }; diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index cd8edf0d79..e516586a4a 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -44,14 +44,15 @@ const { getTransactionsByBlockID, } = require('../dataService'); -const { - range, -} = require('../utils/array'); - +const { range } = require('../utils/array'); const { getLisk32AddressFromPublicKey } = require('../utils/account'); const { getTransactionExecutionStatus } = require('../utils/transactions'); const { getEventsInfoToIndex } = require('./utils/events'); const { calcCommissionAmount, calcSelfStakeReward } = require('./utils/validator'); +const { indexAccountPublicKey } = require('./accountIndex'); +const { indexGenesisBlockAssets } = require('./genesisBlock'); +const { updateTotalLockedAmounts } = require('./utils/blockchainIndex'); +const { updateAccountBalancesFromTokenEvents } = require('./accountBalanceIndex'); const { getFinalizedHeight, @@ -79,11 +80,6 @@ const getEventTopicsTable = () => getTableInstance(eventTopicsTableSchema, MYSQL const getTransactionsTable = () => getTableInstance(transactionsTableSchema, MYSQL_ENDPOINT); const getValidatorsTable = () => getTableInstance(validatorsTableSchema, MYSQL_ENDPOINT); -const { indexGenesisBlockAssets } = require('./genesisBlock'); -const { updateTotalLockedAmounts } = require('./utils/blockchainIndex'); -const { scheduleAccountBalanceUpdateFromEvents } = require('./accountBalanceIndex'); -const { indexAccountPublicKey } = require('./accountIndex'); - const INDEX_VERIFIED_HEIGHT = 'indexVerifiedHeight'; const validateBlock = (block) => !!block && block.height >= 0; @@ -261,8 +257,8 @@ const indexBlock = async job => { }); await updateTotalLockedAmounts(tokenIDLockedAmountChangeMap, dbTrx); - // Schedule address balance updates from token module events - await scheduleAccountBalanceUpdateFromEvents(events); + // Update address balance updates from token module events + await updateAccountBalancesFromTokenEvents(events, dbTrx); } const blockToIndex = { @@ -369,8 +365,8 @@ const deleteIndexedBlocks = async job => { }); await updateTotalLockedAmounts(tokenIDLockedAmountChangeMap, dbTrx); - // Schedule address balance updates from token module events - await scheduleAccountBalanceUpdateFromEvents(events); + // Update address balance updates from token module events + await updateAccountBalancesFromTokenEvents(events, dbTrx); } // Invalidate cached events for this block diff --git a/services/blockchain-indexer/shared/indexer/genesisBlock.js b/services/blockchain-indexer/shared/indexer/genesisBlock.js index cab7d090ed..e53f9ae1a0 100644 --- a/services/blockchain-indexer/shared/indexer/genesisBlock.js +++ b/services/blockchain-indexer/shared/indexer/genesisBlock.js @@ -66,7 +66,7 @@ const indexTokenModuleAssets = async (dbTrx) => { // Index account balance // eslint-disable-next-line no-await-in-loop - await updateAccountBalances(userInfo.address); + await updateAccountBalances(userInfo.address, dbTrx); } await updateTotalLockedAmounts(tokenIDLockedAmountChangeMap, dbTrx); diff --git a/services/blockchain-indexer/shared/indexer/indexStatus.js b/services/blockchain-indexer/shared/indexer/indexStatus.js index a2ab7d42f1..4e9d62d9f9 100644 --- a/services/blockchain-indexer/shared/indexer/indexStatus.js +++ b/services/blockchain-indexer/shared/indexer/indexStatus.js @@ -102,7 +102,7 @@ const reportIndexStatus = async () => { logger.info([ `currentChainHeight: ${currentChainHeight}`, - `lastIndexedBlock: ${lastIndexedBlock.height}`, + `lastIndexedBlockHeight: ${lastIndexedBlock.height}`, ].join(', ')); logger.info(`Block index status: ${numBlocksIndexed}/${chainLength} blocks indexed (${percentage}%).`); From 89d3a7d8f3f84969775a1e52db8755ea4360835b Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Wed, 26 Jul 2023 15:18:38 +0200 Subject: [PATCH 35/71] :bug: Fix getAllDirectories and rename to getDirectoryNamesInPath --- .../shared/indexer/transactionProcessor/index.js | 4 ++-- services/blockchain-indexer/shared/utils/file.js | 6 +++--- .../tests/functional/shared/utils/file.test.js | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/transactionProcessor/index.js b/services/blockchain-indexer/shared/indexer/transactionProcessor/index.js index 9449bd5af2..603e72c62e 100644 --- a/services/blockchain-indexer/shared/indexer/transactionProcessor/index.js +++ b/services/blockchain-indexer/shared/indexer/transactionProcessor/index.js @@ -18,7 +18,7 @@ const requireAll = require('require-all'); const { Logger } = require('lisk-service-framework'); const { requestConnector } = require('../../utils/request'); -const { getAllDirectories } = require('../../utils/file'); +const { getDirectoryNamesInPath } = require('../../utils/file'); const logger = Logger(); @@ -28,7 +28,7 @@ const moduleProcessorMap = new Map(); const getAvailableModuleProcessors = async () => { const IGNORE_DIRS = ['0_moduleName']; - const processors = await getAllDirectories(__dirname); + const processors = await getDirectoryNamesInPath(__dirname); return processors.filter(e => !IGNORE_DIRS.includes(e)); }; diff --git a/services/blockchain-indexer/shared/utils/file.js b/services/blockchain-indexer/shared/utils/file.js index d39c5ab608..cbed850eea 100644 --- a/services/blockchain-indexer/shared/utils/file.js +++ b/services/blockchain-indexer/shared/utils/file.js @@ -22,9 +22,9 @@ const { const camelCase = require('camelcase'); const requireAll = require('require-all'); -const getAllDirectories = async (sourceDirPath) => { +const getDirectoryNamesInPath = async (sourceDirPath) => { const directories = await getDirectories(sourceDirPath, { withFileTypes: true }); - const dirNames = directories.map(dirent => dirent.name); + const dirNames = directories.map(path => path.split('/').pop()); return dirNames; }; @@ -47,6 +47,6 @@ const getAllJSFiles = async ( }); module.exports = { - getAllDirectories, + getDirectoryNamesInPath, getAllJSFiles, }; diff --git a/services/blockchain-indexer/tests/functional/shared/utils/file.test.js b/services/blockchain-indexer/tests/functional/shared/utils/file.test.js index a7c15ff340..9c2d265458 100644 --- a/services/blockchain-indexer/tests/functional/shared/utils/file.test.js +++ b/services/blockchain-indexer/tests/functional/shared/utils/file.test.js @@ -16,7 +16,7 @@ const fs = require('fs'); const { - getAllDirectories, + getDirectoryNamesInPath, getAllJSFiles, } = require('../../../../shared/utils/file'); @@ -60,19 +60,19 @@ describe('Unit tests for file utilities', () => { await rmdir(testDir); }); - describe('Test \'getAllDirectories\'', () => { + describe('Test \'getDirectoryNamesInPath\'', () => { it('Throws error when the source directory does not exist', async () => { - expect(getAllDirectories(nonExistentTestDir)).rejects.toThrow(); + expect(getDirectoryNamesInPath(nonExistentTestDir)).rejects.toThrow(); }); it('Returns empty list when source directory does not contain sub-directories', async () => { - const result = await getAllDirectories(emptyTestDir); + const result = await getDirectoryNamesInPath(emptyTestDir); expect(Array.isArray(result)).toBeTruthy(); expect(result.length).toBe(0); }); it('Returns list of sub-directories contained within the source directory', async () => { - const result = await getAllDirectories(testDir); + const result = await getDirectoryNamesInPath(testDir); expect(Array.isArray(result)).toBeTruthy(); expect(result.length).toBe(testSubDirs.length); expect(result).toEqual(testSubDirs); From a10831380b5038cbf97cb2a08675ea2aa4d762a2 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Wed, 13 Sep 2023 12:42:01 +0200 Subject: [PATCH 36/71] Fix indexing is stuck --- framework/src/queue.js | 17 +-- services/blockchain-indexer/config.js | 6 +- .../jobs/indexer/updateAccounts.js | 17 +++ .../dataService/business/feeEstimates.js | 10 +- .../shared/indexer/accountBalanceIndex.js | 76 ++++++++--- .../shared/indexer/blockchainIndex.js | 128 +++++++++--------- .../shared/messageProcessor.js | 2 + services/transaction-statistics/config.js | 8 +- 8 files changed, 160 insertions(+), 104 deletions(-) diff --git a/framework/src/queue.js b/framework/src/queue.js index 678d908016..8ad2ddec08 100644 --- a/framework/src/queue.js +++ b/framework/src/queue.js @@ -34,8 +34,8 @@ const defaultOptions = { settings: {}, }; -const queueInstance = (redisEndpoint, jobName = 'defaultJob', jobFn, concurrency = 1, options = defaultOptions) => { - const queueName = 'defaultQueue'; +const queueInstance = (redisEndpoint, _queueName = 'defaultQueue', jobFn, concurrency = 1, options = defaultOptions) => { + const queueName = _queueName || 'defaultQueue'; if (!queuePool[queueName]) { queuePool[queueName] = new BullQueue(queueName, @@ -52,32 +52,33 @@ const queueInstance = (redisEndpoint, jobName = 'defaultJob', jobFn, concurrency logger.info(`Initialized queue ${queueName}`); queue.on('completed', job => { - logger.debug(`${jobName} job completed ${job.name}`); + logger.debug(`${job.name} job completed.`); job.remove(); }); queue.on('error', err => { - logger.error(`${jobName} job error`, err); + logger.error(`${queue.name} job error`, err); }); queue.on('failed', (job, err) => { - logger.warn(`${jobName} job failed`, err.message); - logger.warn(`${jobName} job failed`, err.stack); + logger.warn(`${job.name} job failed`, err.message); + logger.warn(`${job.name} job failed`, err.stack); }); setInterval(async () => { const jc = await queue.getJobCounts(); if (Number(jc.waiting) > 0 || Number(jc.active) > 0 || Number(jc.failed) > 0 || Number(jc.paused) > 0) { - logger.info(`Queue counters: waiting: ${jc.waiting}, active: ${jc.active}, failed: ${jc.failed}, paused: ${jc.paused}`); + logger.info(`Queue counters (${queue.name}): waiting: ${jc.waiting}, active: ${jc.active}, failed: ${jc.failed}, paused: ${jc.paused}`); } else { - logger.info('Queue counters: All scheduled jobs are done.'); + logger.info(`Queue counters (${queue.name}): All scheduled jobs are done.`); } }, STATS_INTERVAL); } const queue = queuePool[queueName]; + const jobName = queueName; queue.process(jobName, concurrency, jobFn); const add = params => queue.add(jobName, params); diff --git a/services/blockchain-indexer/config.js b/services/blockchain-indexer/config.js index 4901699130..50bc4b0f86 100644 --- a/services/blockchain-indexer/config.js +++ b/services/blockchain-indexer/config.js @@ -17,7 +17,7 @@ const packageJson = require('./package.json'); const config = { endpoints: {}, - jobs: {}, + job: {}, log: { name: packageJson.name, version: packageJson.version, @@ -191,6 +191,10 @@ config.job = { interval: process.env.JOB_INTERVAL_TRIGGER_ACCOUNT_UPDATES || 0, schedule: process.env.JOB_SCHEDULE_TRIGGER_ACCOUNT_UPDATES || '*/15 * * * *', }, + triggerAccountBalanceUpdates: { + interval: process.env.JOB_INTERVAL_TRIGGER_ACCOUNT_BALANCE_UPDATES || 10, + schedule: process.env.JOB_INTERVAL_TRIGGER_ACCOUNT_BALANCE_UPDATES || '', + }, }; config.estimateFees = { diff --git a/services/blockchain-indexer/jobs/indexer/updateAccounts.js b/services/blockchain-indexer/jobs/indexer/updateAccounts.js index 68ad11560a..0ed5edb6c1 100644 --- a/services/blockchain-indexer/jobs/indexer/updateAccounts.js +++ b/services/blockchain-indexer/jobs/indexer/updateAccounts.js @@ -16,6 +16,7 @@ const logger = require('lisk-service-framework').Logger(); const config = require('../../config'); +const { triggerAccountsBalanceUpdate } = require('../../shared/indexer/accountBalanceIndex'); const { triggerAccountUpdates } = require('../../shared/indexer/accountIndex'); module.exports = [ @@ -35,4 +36,20 @@ module.exports = [ } }, }, + { + name: 'trigger.account.balance.updates', + description: 'Triggers the queued account balance updates.', + interval: config.job.triggerAccountBalanceUpdates.interval, + schedule: config.job.triggerAccountBalanceUpdates.schedule, + controller: async () => { + try { + logger.debug('Triggering account balance updates.'); + await triggerAccountsBalanceUpdate(); + logger.info('Triggered account balance updates successfully.'); + } catch (err) { + logger.warn(`Triggering account balance updates failed due to: ${err.message}.`); + logger.trace(err.stack); + } + }, + }, ]; diff --git a/services/blockchain-indexer/shared/dataService/business/feeEstimates.js b/services/blockchain-indexer/shared/dataService/business/feeEstimates.js index ec753f26e9..50549331f9 100644 --- a/services/blockchain-indexer/shared/dataService/business/feeEstimates.js +++ b/services/blockchain-indexer/shared/dataService/business/feeEstimates.js @@ -13,6 +13,8 @@ * Removal or modification of this copyright notice is prohibited. * */ +const logger = require('lisk-service-framework').Logger(); + const { requestFeeEstimator } = require('../../utils/request'); let feeEstimates = { @@ -30,8 +32,12 @@ const setFeeEstimates = async (payload) => { const getFeeEstimates = () => feeEstimates; const getFeeEstimatesFromFeeEstimator = async () => { - const response = await requestFeeEstimator('estimates'); - setFeeEstimates(response); + try { + const response = await requestFeeEstimator('estimates'); + setFeeEstimates(response); + } catch (err) { + logger.warn(`Failed to fetch fee estimates from fee-estimator. Error:${err.message}`); + } return getFeeEstimates(); }; diff --git a/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js b/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js index a29c1beb61..54881c66b2 100644 --- a/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js +++ b/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js @@ -13,21 +13,27 @@ * Removal or modification of this copyright notice is prohibited. * */ -const BluebirdPromise = require('bluebird'); +const Redis = require('ioredis'); const { DB: { MySQL: { getTableInstance } }, } = require('lisk-service-framework'); +const logger = require('lisk-service-framework/src/logger'); const config = require('../../config'); const { MODULE } = require('../constants'); const { getTokenBalances } = require('../dataService'); const accountBalancesTableSchema = require('../database/schema/accountBalances'); +const redis = new Redis(config.endpoints.cache); + const MYSQL_ENDPOINT = config.endpoints.mysql; +const ACCOUNTS_BALANCE_UPDATE_SET_NAME = 'AccountsBalanceUpdate'; +const MAX_ACCOUNT_COUNT_IN_ONE_EXECUTION = 1000; // 1e3 + const getAccountBalancesTable = () => getTableInstance(accountBalancesTableSchema, MYSQL_ENDPOINT); -const updateAccountBalances = async (address, dbTrx = null) => { +const updateAccountBalances = async (address) => { const accountBalancesTable = await getAccountBalancesTable(); const { data: balanceInfos } = await getTokenBalances({ address }); @@ -38,32 +44,58 @@ const updateAccountBalances = async (address, dbTrx = null) => { })); // Update all token balances of the address - await accountBalancesTable.upsert(updatedTokenBalances, dbTrx); + await accountBalancesTable.upsert(updatedTokenBalances); +}; + +const scheduleAddressesBalanceUpdate = async (addresses) => { + if (addresses.length) { + redis.sadd( + ACCOUNTS_BALANCE_UPDATE_SET_NAME, + addresses, + ); + } }; -const updateAccountBalancesFromTokenEvents = async (events, dbTrx = null) => BluebirdPromise.map( - events, - async event => { - // Skip non token module events - if (event.module !== MODULE.TOKEN) return; +const getAddressesFromTokenEvents = (events) => { + const addressesToUpdate = []; + const tokenModuleEvents = events.filter(event => event.module === MODULE.TOKEN); + // eslint-disable-next-line no-restricted-syntax + for (const event of tokenModuleEvents) { const { data: eventData = {} } = event; const eventDataKeys = Object.keys(eventData); - await BluebirdPromise.map( - eventDataKeys, - async key => { - if (key.toLowerCase().includes('address')) { - const address = eventData[key]; - await updateAccountBalances(address, dbTrx); - } - }, - { concurrency: eventDataKeys.length }, - ); - }, - { concurrency: events.length }, -); + // eslint-disable-next-line no-restricted-syntax + for (const key of eventDataKeys) { + if (key.toLowerCase().includes('address')) { + const address = eventData[key]; + addressesToUpdate.push(address); + } + } + } + + return addressesToUpdate; +}; + +const triggerAccountsBalanceUpdate = async () => { + const addresses = await redis.spop( + ACCOUNTS_BALANCE_UPDATE_SET_NAME, + MAX_ACCOUNT_COUNT_IN_ONE_EXECUTION, + ); + + // eslint-disable-next-line no-restricted-syntax + for (const address of addresses) { + // eslint-disable-next-line no-await-in-loop + await updateAccountBalances(address); + } + + if (addresses.length) { + logger.info(`Updated account balance for ${addresses.length} account(s).`); + } +}; module.exports = { updateAccountBalances, - updateAccountBalancesFromTokenEvents, + getAddressesFromTokenEvents, + triggerAccountsBalanceUpdate, + scheduleAddressesBalanceUpdate, }; diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 01b9d77c79..166d74cf87 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -52,7 +52,10 @@ const { calcCommissionAmount, calcSelfStakeReward } = require('./utils/validator const { indexAccountPublicKey } = require('./accountIndex'); const { indexGenesisBlockAssets } = require('./genesisBlock'); const { updateTotalLockedAmounts } = require('./utils/blockchainIndex'); -const { updateAccountBalancesFromTokenEvents } = require('./accountBalanceIndex'); +const { + getAddressesFromTokenEvents, + scheduleAddressesBalanceUpdate, +} = require('./accountBalanceIndex'); const { getFinalizedHeight, getGenesisHeight, EVENT, MODULE } = require('../constants'); @@ -79,73 +82,40 @@ const INDEX_VERIFIED_HEIGHT = 'indexVerifiedHeight'; const validateBlock = block => !!block && block.height >= 0; -let lastPriorityRescheduledBlockHeight = -1; - const indexBlock = async job => { const { height: currentBlockHeight } = job.data; let blockHeightToIndex = currentBlockHeight; + let addressesToUpdateBalance = []; const blocksTable = await getBlocksTable(); - const genesisHeight = await getGenesisHeight(); - if (currentBlockHeight > genesisHeight) { - const [lastIndexedBlock = {}] = await blocksTable.find( - { - propBetweens: [ - { - property: 'height', - lowerThan: currentBlockHeight, - }, - ], - sort: 'height:desc', - limit: 1, - }, - ['height', 'isFinal'], - ); - - const { height: lastIndexedHeight, isFinal: isLastIndexedHeightFinal } = lastIndexedBlock; + const [lastIndexedBlock = {}] = await blocksTable.find( + { + sort: 'height:desc', + limit: 1, + }, + ['height'], + ); - // Skip if lastIndexedHeight is greater than currentBlockHeight and finalized - if (lastIndexedHeight >= currentBlockHeight && isLastIndexedHeightFinal) { - return; - } + const { height: lastIndexedHeight } = lastIndexedBlock; - // Check if the parent block is indexed - // If not, schedule all the previous blocks with (medium) priority - // And, continue with next expected block (lastIndexedHeight + 1) instead of currentBlockHeight - if (lastIndexedHeight < currentBlockHeight - 1) { - // Skip if already priority scheduled - if (currentBlockHeight <= lastPriorityRescheduledBlockHeight) return; - - blockHeightToIndex = lastIndexedHeight + 1; - const heightsToIndex = range( - Math.max(blockHeightToIndex || genesisHeight, lastPriorityRescheduledBlockHeight) + 1, - currentBlockHeight + 1, // '+ 1' as 'to' is non-inclusive - 1, - ); + // Index last indexed block height + 1 if there is a gap + if (lastIndexedHeight && lastIndexedHeight < currentBlockHeight - 1) { + blockHeightToIndex = lastIndexedHeight + 1; + // eslint-disable-next-line no-use-before-define + await addHeightToIndexBlocksQueue(blockHeightToIndex + 1, true); + } - if (heightsToIndex.length) { - logger.trace( - `Current block height: ${currentBlockHeight}. Attempting priority scheduling for heights ${heightsToIndex.at( - 0, - )} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} block(s)).`, - ); - await BluebirdPromise.map( - heightsToIndex, - async height => { - // eslint-disable-next-line no-use-before-define - await addHeightToIndexBlocksQueue(height); - lastPriorityRescheduledBlockHeight = height; - }, - { concurrency: 1 }, - ); - logger.debug( - `Current block height: ${currentBlockHeight}. Successfully priority scheduled for heights ${heightsToIndex.at( - 0, - )} - ${heightsToIndex.at(-1)} (${heightsToIndex.length} block(s)).`, - ); - } - } + // Verify current block does not exits. return if already indexed + const [currentBlockInDB = {}] = await blocksTable.find( + { + where: { height: currentBlockHeight }, + limit: 1, + }, + ['height'], + ); + if (Object.keys(currentBlockInDB).length) { + return; } const block = await getBlockByHeight(blockHeightToIndex); @@ -294,7 +264,7 @@ const indexBlock = async job => { await updateTotalLockedAmounts(tokenIDLockedAmountChangeMap, dbTrx); // Update address balance updates from token module events - await updateAccountBalancesFromTokenEvents(events, dbTrx); + addressesToUpdateBalance = await getAddressesFromTokenEvents(events, dbTrx); } const blockToIndex = { @@ -306,6 +276,8 @@ const indexBlock = async job => { await blocksTable.upsert(blockToIndex, dbTrx); await commitDBTransaction(dbTrx); + // Only schedule address balance updates if the block is indexed successfully + await scheduleAddressesBalanceUpdate(addressesToUpdateBalance); logger.debug( `Committed MySQL transaction to index block ${block.id} at height ${block.height}.`, ); @@ -319,7 +291,7 @@ const indexBlock = async job => { ['Deadlock found when trying to get lock', 'ER_LOCK_DEADLOCK'].some(e => error.message.includes(e), ) ) { - const errMessage = `Deadlock encountered while indexing block ${block.id} at height ${block.height}. Will retry later.`; + const errMessage = `Deadlock encountered while indexing block ${block.id} at height ${block.height}. Will retry later. sql:${error.sql}`; logger.warn(errMessage); throw new Error(errMessage); } @@ -333,6 +305,7 @@ const indexBlock = async job => { }; const deleteIndexedBlocks = async job => { + let addressesToUpdateBalance = []; const { blocks } = job.data; const blockIDs = blocks.map(b => b.id).join(', '); @@ -476,7 +449,7 @@ const deleteIndexedBlocks = async job => { await updateTotalLockedAmounts(tokenIDLockedAmountChangeMap, dbTrx); // Update address balance updates from token module events - await updateAccountBalancesFromTokenEvents(events, dbTrx); + addressesToUpdateBalance = await getAddressesFromTokenEvents(events, dbTrx); } // Invalidate cached events for this block @@ -488,6 +461,8 @@ const deleteIndexedBlocks = async job => { await blocksTable.deleteByPrimaryKey(blockIDs, dbTrx); await commitDBTransaction(dbTrx); + // Only schedule address balance updates if the block is deleted successfully + await scheduleAddressesBalanceUpdate(addressesToUpdateBalance); logger.debug(`Committed MySQL transaction to delete block(s) with ID(s): ${blockIDs}.`); } catch (error) { logger.debug(`Rolled back MySQL transaction to delete block(s) with ID(s): ${blockIDs}.`); @@ -506,11 +481,30 @@ const deleteIndexedBlocks = async job => { } }; +let isIndexingRunning = false; + +const indexBlockAtomicWrapper = async (job) => { + if (isIndexingRunning) { + logger.warn('Already indexing another block!'); + return; + } + + isIndexingRunning = true; + + try { + await indexBlock(job); + } catch (err) { + logger.error(`Catched error in indexing. error: ${err}`); + } + + isIndexingRunning = false; +}; + // Initialize queues const indexBlocksQueue = Queue( config.endpoints.cache, config.queue.indexBlocks.name, - indexBlock, + indexBlockAtomicWrapper, config.queue.indexBlocks.concurrency, ); @@ -556,7 +550,7 @@ const indexNewBlock = async block => { updates: { isFinal: true }, }); - if (blockInfo && blockInfo.id !== block.id) { + if (blockInfo && blockInfo.id !== block.id) { // PRIOJEET: should we schedule deletion of blocks before scheding indexing? because indexing new block may overwrite some information? // Fork detected const [highestIndexedBlock] = await blocksTable.find({ sort: 'height:desc', limit: 1 }, [ 'height', @@ -566,8 +560,8 @@ const indexNewBlock = async block => { propBetweens: [ { property: 'height', - from: block.height + 1, - to: highestIndexedBlock.height, + from: block.height + 1, // PRIOJEET: shouldn't we delete current block as well? this could end up keeping mismatching information + to: highestIndexedBlock.height, // PRIOJEET: do we need the to condition here? }, ], sort: 'height:desc', @@ -575,7 +569,7 @@ const indexNewBlock = async block => { }, ['id'], ); - await deleteIndexedBlocksQueue.add({ blocks: blocksToRemove }); + await deleteIndexedBlocksQueue.add({ blocks: blocksToRemove }); // PRIOJEET: we can prioritise the deletion of deleted blocks } } }; diff --git a/services/blockchain-indexer/shared/messageProcessor.js b/services/blockchain-indexer/shared/messageProcessor.js index 058a137c0a..f29520e9a4 100644 --- a/services/blockchain-indexer/shared/messageProcessor.js +++ b/services/blockchain-indexer/shared/messageProcessor.js @@ -47,12 +47,14 @@ const accountMessageQueue = new MessageQueue( { defaultJobOptions: config.queue.defaultJobOptions }, ); +// Missing blocks const blockMessageQueue = new MessageQueue( config.queue.block.name, config.endpoints.messageQueue, { defaultJobOptions: config.queue.defaultJobOptions }, ); +// Newly mined blocks const eventMessageQueue = new MessageQueue( config.queue.event.name, config.endpoints.messageQueue, diff --git a/services/transaction-statistics/config.js b/services/transaction-statistics/config.js index e3751dedf4..b3b90e2c9f 100644 --- a/services/transaction-statistics/config.js +++ b/services/transaction-statistics/config.js @@ -34,11 +34,11 @@ config.brokerTimeout = Number(process.env.SERVICE_BROKER_TIMEOUT) || 10; // in s */ config.endpoints.redis = process.env.SERVICE_STATISTICS_REDIS || 'redis://127.0.0.1:6379/2'; // Primary database. Used for both read-write operations. -config.endpoints.mysql = - process.env.SERVICE_STATISTICS_MYSQL || 'mysql://lisk:password@127.0.0.1:3306/lisk'; +config.endpoints.mysql = process.env.SERVICE_STATISTICS_MYSQL + || 'mysql://lisk:password@127.0.0.1:3306/lisk'; // DB replicas against the primary. Used for read-only operations. -config.endpoints.mysqlReplica = - process.env.SERVICE_STATISTICS_MYSQL_READ_REPLICA || config.endpoints.mysql; +config.endpoints.mysqlReplica = process.env.SERVICE_STATISTICS_MYSQL_READ_REPLICA + || config.endpoints.mysql; config.transactionStatistics = { historyLengthDays: Number(process.env.TRANSACTION_STATS_HISTORY_LENGTH_DAYS || 366), From 25d5eb60eac91c0c038f7df8c8af030d3a300bfb Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Thu, 14 Sep 2023 12:00:31 +0200 Subject: [PATCH 37/71] :art: Cleanup --- .../shared/indexer/blockchainIndex.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 166d74cf87..1326d6b17d 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -103,7 +103,7 @@ const indexBlock = async job => { if (lastIndexedHeight && lastIndexedHeight < currentBlockHeight - 1) { blockHeightToIndex = lastIndexedHeight + 1; // eslint-disable-next-line no-use-before-define - await addHeightToIndexBlocksQueue(blockHeightToIndex + 1, true); + await addHeightToIndexBlocksQueue(blockHeightToIndex + 1); } // Verify current block does not exits. return if already indexed @@ -550,7 +550,7 @@ const indexNewBlock = async block => { updates: { isFinal: true }, }); - if (blockInfo && blockInfo.id !== block.id) { // PRIOJEET: should we schedule deletion of blocks before scheding indexing? because indexing new block may overwrite some information? + if (blockInfo && blockInfo.id !== block.id) { // Fork detected const [highestIndexedBlock] = await blocksTable.find({ sort: 'height:desc', limit: 1 }, [ 'height', @@ -560,8 +560,8 @@ const indexNewBlock = async block => { propBetweens: [ { property: 'height', - from: block.height + 1, // PRIOJEET: shouldn't we delete current block as well? this could end up keeping mismatching information - to: highestIndexedBlock.height, // PRIOJEET: do we need the to condition here? + from: block.height + 1, + to: highestIndexedBlock.height, }, ], sort: 'height:desc', @@ -569,7 +569,7 @@ const indexNewBlock = async block => { }, ['id'], ); - await deleteIndexedBlocksQueue.add({ blocks: blocksToRemove }); // PRIOJEET: we can prioritise the deletion of deleted blocks + await deleteIndexedBlocksQueue.add({ blocks: blocksToRemove }); } } }; @@ -640,8 +640,8 @@ const getMissingBlocks = async params => { return listOfMissingBlocks; }; -const addHeightToIndexBlocksQueue = async (height, isPriority) => isPriority === true - ? indexBlocksQueue.add({ height }, { priority: 1 }) +const addHeightToIndexBlocksQueue = async (height, priority) => priority + ? indexBlocksQueue.add({ height }, { priority }) : indexBlocksQueue.add({ height }); const setIndexVerifiedHeight = ({ height }) => keyValueTable.set(INDEX_VERIFIED_HEIGHT, height); From 7c0d3105698615bfc3e46d0657a63abc80347830 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Thu, 14 Sep 2023 17:37:49 +0200 Subject: [PATCH 38/71] Fix indexing becomes slow when indexer is almost synced --- framework/index.js | 1 + framework/src/delay.js | 4 +++- framework/src/http.js | 2 +- framework/tests/unit/delay.spec.js | 2 +- .../shared/indexer/blockchainIndex.js | 15 +++++++++++---- .../shared/indexer/genesisBlock.js | 2 +- 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/framework/index.js b/framework/index.js index d79d836171..2e7fd64c4a 100644 --- a/framework/index.js +++ b/framework/index.js @@ -37,6 +37,7 @@ module.exports = { Data: require('./src/data'), fs: require('./src/fs'), ...(require('./src/data')), + ...(require('./src/delay')), }, Constants: { ...require('./constants/ErrorCodes'), diff --git a/framework/src/delay.js b/framework/src/delay.js index 91744f5136..79e7fbce51 100644 --- a/framework/src/delay.js +++ b/framework/src/delay.js @@ -15,4 +15,6 @@ */ const delay = (ms = 100, val) => new Promise(resolve => setTimeout(resolve, ms, val)); -module.exports = delay; +module.exports = { + delay, +}; diff --git a/framework/src/http.js b/framework/src/http.js index e22fb06afa..103837b82d 100644 --- a/framework/src/http.js +++ b/framework/src/http.js @@ -18,7 +18,7 @@ const axios = require('axios'); const HttpStatus = require('http-status-codes'); const debug = require('debug')('http'); -const delay = require('./delay'); +const { delay } = require('./delay'); const CACHE_MAX_N_ITEMS = 4096; const CACHE_MAX_TTL = 12 * 60 * 60 * 1000; // 12 hrs diff --git a/framework/tests/unit/delay.spec.js b/framework/tests/unit/delay.spec.js index 53844d83fd..98aae468f7 100644 --- a/framework/tests/unit/delay.spec.js +++ b/framework/tests/unit/delay.spec.js @@ -13,7 +13,7 @@ * Removal or modification of this copyright notice is prohibited. * */ -const delay = require('../../src/delay'); +const { delay } = require('../../src/delay'); describe('isProperObject()', () => { const delayTime = 20; diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 1326d6b17d..64882a6df2 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -264,7 +264,7 @@ const indexBlock = async job => { await updateTotalLockedAmounts(tokenIDLockedAmountChangeMap, dbTrx); // Update address balance updates from token module events - addressesToUpdateBalance = await getAddressesFromTokenEvents(events, dbTrx); + addressesToUpdateBalance = getAddressesFromTokenEvents(events); } const blockToIndex = { @@ -449,7 +449,7 @@ const deleteIndexedBlocks = async job => { await updateTotalLockedAmounts(tokenIDLockedAmountChangeMap, dbTrx); // Update address balance updates from token module events - addressesToUpdateBalance = await getAddressesFromTokenEvents(events, dbTrx); + addressesToUpdateBalance = getAddressesFromTokenEvents(events); } // Invalidate cached events for this block @@ -482,10 +482,17 @@ const deleteIndexedBlocks = async job => { }; let isIndexingRunning = false; +const BLOCKCHAIN_INDEX_RESCHEDULE_DELAY = 1000; + +// TODO: Temporary. Use the one from framework +const delay = (ms = 100, val) => new Promise(resolve => setTimeout(resolve, ms, val)); const indexBlockAtomicWrapper = async (job) => { if (isIndexingRunning) { - logger.warn('Already indexing another block!'); + logger.trace('Already indexing another block!'); + await delay(BLOCKCHAIN_INDEX_RESCHEDULE_DELAY); + // eslint-disable-next-line no-use-before-define + await addHeightToIndexBlocksQueue(job.data.height); return; } @@ -494,7 +501,7 @@ const indexBlockAtomicWrapper = async (job) => { try { await indexBlock(job); } catch (err) { - logger.error(`Catched error in indexing. error: ${err}`); + logger.error(`Error occurred during block. error: ${err}`); } isIndexingRunning = false; diff --git a/services/blockchain-indexer/shared/indexer/genesisBlock.js b/services/blockchain-indexer/shared/indexer/genesisBlock.js index b476c65284..8ab377e412 100644 --- a/services/blockchain-indexer/shared/indexer/genesisBlock.js +++ b/services/blockchain-indexer/shared/indexer/genesisBlock.js @@ -66,7 +66,7 @@ const indexTokenModuleAssets = async (dbTrx) => { // Index account balance // eslint-disable-next-line no-await-in-loop - await updateAccountBalances(userInfo.address, dbTrx); + await updateAccountBalances(userInfo.address); } await updateTotalLockedAmounts(tokenIDLockedAmountChangeMap, dbTrx); From 6152ab5365d8f33196c70c988af479d28a0d97a0 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Thu, 14 Sep 2023 21:19:02 +0200 Subject: [PATCH 39/71] :art: Refactor --- .../shared/indexer/blockchainIndex.js | 10 +++++----- services/blockchain-indexer/shared/messageProcessor.js | 8 ++++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 64882a6df2..459aaef5e5 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -263,7 +263,7 @@ const indexBlock = async job => { }); await updateTotalLockedAmounts(tokenIDLockedAmountChangeMap, dbTrx); - // Update address balance updates from token module events + // Get addresses to schedule account balance updates from token module events addressesToUpdateBalance = getAddressesFromTokenEvents(events); } @@ -329,7 +329,7 @@ const deleteIndexedBlocks = async job => { // Reschedule job if not deleted block is not indexed if (!deletedBlockFromDB) { // eslint-disable-next-line no-use-before-define - await deleteBlock(block); + await scheduleBlockDeletion(block); return; } // If deleted block is indexed, check for the blockID @@ -448,7 +448,7 @@ const deleteIndexedBlocks = async job => { }); await updateTotalLockedAmounts(tokenIDLockedAmountChangeMap, dbTrx); - // Update address balance updates from token module events + // Get addresses to schedule account balance updates from token module events addressesToUpdateBalance = getAddressesFromTokenEvents(events); } @@ -529,7 +529,7 @@ const getLiveIndexingJobCount = async () => { return count; }; -const deleteBlock = async block => deleteIndexedBlocksQueue.add({ blocks: [block] }); +const scheduleBlockDeletion = async block => deleteIndexedBlocksQueue.add({ blocks: [block] }); const indexNewBlock = async block => { const blocksTable = await getBlocksTable(); @@ -668,7 +668,7 @@ module.exports = { indexNewBlock, addHeightToIndexBlocksQueue, getMissingBlocks, - deleteBlock, + scheduleBlockDeletion, setIndexVerifiedHeight, getIndexVerifiedHeight, getLiveIndexingJobCount, diff --git a/services/blockchain-indexer/shared/messageProcessor.js b/services/blockchain-indexer/shared/messageProcessor.js index caa860906b..390666e189 100644 --- a/services/blockchain-indexer/shared/messageProcessor.js +++ b/services/blockchain-indexer/shared/messageProcessor.js @@ -27,7 +27,11 @@ const logger = Logger(); const { initNodeConstants } = require('./constants'); const { addAccountToDirectUpdateQueue } = require('./indexer/accountIndex'); -const { addHeightToIndexBlocksQueue, deleteBlock, indexNewBlock } = require('./indexer/blockchainIndex'); +const { + addHeightToIndexBlocksQueue, + scheduleBlockDeletion, + indexNewBlock, +} = require('./indexer/blockchainIndex'); const { getBlocks, @@ -95,7 +99,7 @@ const deleteBlockProcessor = async (block) => { try { logger.debug(`Processing the delete block event for the block at height: ${block.height}, id: ${block.id}`); response = await getBlocks({ blockID: block.id }); - await deleteBlock(block); + await scheduleBlockDeletion(block); } catch (error) { const normalizedBlocks = await normalizeBlocks([{ header: block, From 656c681e9f46d38cc28e8251f6c10db33133ae25 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Sat, 16 Sep 2023 12:05:32 +0200 Subject: [PATCH 40/71] Update framework version 1.6.0 --- framework/dist/lisk-service-framework-1.6.0.tgz | Bin 0 -> 70086 bytes framework/package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 framework/dist/lisk-service-framework-1.6.0.tgz diff --git a/framework/dist/lisk-service-framework-1.6.0.tgz b/framework/dist/lisk-service-framework-1.6.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..40c80934a8251c3e31c70f154ab6583ea2421dd6 GIT binary patch literal 70086 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 literal 0 HcmV?d00001 diff --git a/framework/package.json b/framework/package.json index 98078137e8..a2b1dd4dde 100644 --- a/framework/package.json +++ b/framework/package.json @@ -1,6 +1,6 @@ { "name": "lisk-service-framework", - "version": "1.5.1", + "version": "1.6.0", "description": "Lisk Service Framework", "keywords": [ "lisk", From 7e94ae8a2d870ee8d17955bb1f61437b5d87abf6 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Sat, 16 Sep 2023 12:21:01 +0200 Subject: [PATCH 41/71] Update framework to 1.6.0 in microservices --- services/blockchain-app-registry/package.json | 2 +- services/blockchain-app-registry/yarn.lock | 6 +++--- services/blockchain-connector/package.json | 2 +- services/blockchain-connector/yarn.lock | 6 +++--- services/blockchain-coordinator/package.json | 2 +- services/blockchain-coordinator/yarn.lock | 6 +++--- services/blockchain-indexer/package.json | 2 +- services/blockchain-indexer/yarn.lock | 6 +++--- services/export/package.json | 2 +- services/export/yarn.lock | 6 +++--- services/fee-estimator/package.json | 2 +- services/fee-estimator/yarn.lock | 6 +++--- services/gateway/package.json | 2 +- services/gateway/yarn.lock | 6 +++--- services/market/package.json | 2 +- services/market/yarn.lock | 6 +++--- services/template/package.json | 2 +- services/template/yarn.lock | 6 +++--- services/transaction-statistics/package.json | 2 +- services/transaction-statistics/yarn.lock | 6 +++--- 20 files changed, 40 insertions(+), 40 deletions(-) diff --git a/services/blockchain-app-registry/package.json b/services/blockchain-app-registry/package.json index 745ec94c34..c5a3299ad6 100644 --- a/services/blockchain-app-registry/package.json +++ b/services/blockchain-app-registry/package.json @@ -33,7 +33,7 @@ }, "dependencies": { "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", "lodash": "^4.17.21", "octokit": "^2.0.4", "tar": "^6.1.11" diff --git a/services/blockchain-app-registry/yarn.lock b/services/blockchain-app-registry/yarn.lock index fb90519abd..e1ea83a938 100644 --- a/services/blockchain-app-registry/yarn.lock +++ b/services/blockchain-app-registry/yarn.lock @@ -3069,9 +3069,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-connector/package.json b/services/blockchain-connector/package.json index 24d7de4cb9..1498c7fca5 100644 --- a/services/blockchain-connector/package.json +++ b/services/blockchain-connector/package.json @@ -39,7 +39,7 @@ "big-json": "^3.1.0", "bluebird": "^3.7.2", "knex": "^2.4.0", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", "moment": "^2.29.4", "signals": "^1.0.0", "tar": "^6.1.11" diff --git a/services/blockchain-connector/yarn.lock b/services/blockchain-connector/yarn.lock index 294260aa0a..51c03fd434 100644 --- a/services/blockchain-connector/yarn.lock +++ b/services/blockchain-connector/yarn.lock @@ -3672,9 +3672,9 @@ lines-and-columns@^1.1.6: resolved "https://npm.lisk.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-coordinator/package.json b/services/blockchain-coordinator/package.json index 78cc073d5b..6c30ca0b19 100644 --- a/services/blockchain-coordinator/package.json +++ b/services/blockchain-coordinator/package.json @@ -31,7 +31,7 @@ "dependencies": { "bluebird": "^3.7.2", "bull": "^4.8.1", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz" + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz" }, "devDependencies": { "@babel/preset-env": "^7.14.0", diff --git a/services/blockchain-coordinator/yarn.lock b/services/blockchain-coordinator/yarn.lock index 450c1f091d..4a02e916e6 100644 --- a/services/blockchain-coordinator/yarn.lock +++ b/services/blockchain-coordinator/yarn.lock @@ -3467,9 +3467,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-indexer/package.json b/services/blockchain-indexer/package.json index 01ed96250d..c91f6da2a5 100644 --- a/services/blockchain-indexer/package.json +++ b/services/blockchain-indexer/package.json @@ -38,7 +38,7 @@ "bull": "^4.8.1", "camelcase": "^6.3.0", "ioredis": "^4.28.5", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", "lodash": "^4.17.21", "require-all": "^3.0.0" }, diff --git a/services/blockchain-indexer/yarn.lock b/services/blockchain-indexer/yarn.lock index 353e856f13..942266ddbe 100644 --- a/services/blockchain-indexer/yarn.lock +++ b/services/blockchain-indexer/yarn.lock @@ -3623,9 +3623,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/export/package.json b/services/export/package.json index 20cce5007c..33d6885a05 100644 --- a/services/export/package.json +++ b/services/export/package.json @@ -36,7 +36,7 @@ "bull": "^3.29.2", "exceljs": "^4.3.0", "json2csv": "^5.0.6", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", "minio": "^7.0.21", "moment": "^2.29.4", "moment-range": "^4.0.2", diff --git a/services/export/yarn.lock b/services/export/yarn.lock index c59cf0ff10..7bb37df162 100644 --- a/services/export/yarn.lock +++ b/services/export/yarn.lock @@ -3143,9 +3143,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/fee-estimator/package.json b/services/fee-estimator/package.json index 1477285596..bae2b52283 100644 --- a/services/fee-estimator/package.json +++ b/services/fee-estimator/package.json @@ -34,7 +34,7 @@ "@liskhq/lisk-cryptography": "4.0.0-rc.0", "@liskhq/lisk-transactions": "6.0.0-rc.0", "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz" + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz" }, "devDependencies": { "@babel/preset-env": "^7.14.0", diff --git a/services/fee-estimator/yarn.lock b/services/fee-estimator/yarn.lock index 0a606de8e6..3bbb18c390 100644 --- a/services/fee-estimator/yarn.lock +++ b/services/fee-estimator/yarn.lock @@ -3596,9 +3596,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/gateway/package.json b/services/gateway/package.json index 0f473dca0a..ea2e3a1fa6 100644 --- a/services/gateway/package.json +++ b/services/gateway/package.json @@ -33,7 +33,7 @@ "bluebird": "^3.7.2", "fastest-validator": "^1.10.1", "ioredis": "^4.27.1", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", "moleculer": "^0.14.13", "moment": "^2.29.4", "rate-limiter-flexible": "^2.2.4", diff --git a/services/gateway/yarn.lock b/services/gateway/yarn.lock index 0877f17f61..d78b72e69a 100644 --- a/services/gateway/yarn.lock +++ b/services/gateway/yarn.lock @@ -2713,9 +2713,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/market/package.json b/services/market/package.json index 48e54da6f1..893405aa2c 100644 --- a/services/market/package.json +++ b/services/market/package.json @@ -32,7 +32,7 @@ "dependencies": { "bluebird": "^3.7.2", "joi": "^17.4.0", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", "moment": "^2.29.4", "node-cron": "=2.0.3" }, diff --git a/services/market/yarn.lock b/services/market/yarn.lock index 093eea1454..175449c24a 100644 --- a/services/market/yarn.lock +++ b/services/market/yarn.lock @@ -2753,9 +2753,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/template/package.json b/services/template/package.json index 83253ba0eb..8423a36e11 100644 --- a/services/template/package.json +++ b/services/template/package.json @@ -30,7 +30,7 @@ "watch": "supervisor -w . -i ./node_modules app.js" }, "dependencies": { - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", "node-cron": "=2.0.3" } } diff --git a/services/template/yarn.lock b/services/template/yarn.lock index 7f9e679087..a568b2e618 100644 --- a/services/template/yarn.lock +++ b/services/template/yarn.lock @@ -1012,9 +1012,9 @@ leven@2.1.0: resolved "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/transaction-statistics/package.json b/services/transaction-statistics/package.json index 4ec04463da..f7005f4838 100644 --- a/services/transaction-statistics/package.json +++ b/services/transaction-statistics/package.json @@ -32,7 +32,7 @@ "dependencies": { "big-number": "=2.0.0", "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", "moment": "^2.29.4" }, "devDependencies": { diff --git a/services/transaction-statistics/yarn.lock b/services/transaction-statistics/yarn.lock index c71be86d8f..ab80cda213 100644 --- a/services/transaction-statistics/yarn.lock +++ b/services/transaction-statistics/yarn.lock @@ -3422,9 +3422,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" From 7d596fe28f5b7d542cc8d8b0320cfab9b95a72c5 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Sat, 16 Sep 2023 12:26:01 +0200 Subject: [PATCH 42/71] Fix account balance update job failure due to unimported function use --- .../shared/indexer/accountBalanceIndex.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js b/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js index 54881c66b2..99d8d43567 100644 --- a/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js +++ b/services/blockchain-indexer/shared/indexer/accountBalanceIndex.js @@ -16,14 +16,16 @@ const Redis = require('ioredis'); const { DB: { MySQL: { getTableInstance } }, + Logger, } = require('lisk-service-framework'); -const logger = require('lisk-service-framework/src/logger'); const config = require('../../config'); const { MODULE } = require('../constants'); const { getTokenBalances } = require('../dataService'); const accountBalancesTableSchema = require('../database/schema/accountBalances'); +const logger = Logger(); + const redis = new Redis(config.endpoints.cache); const MYSQL_ENDPOINT = config.endpoints.mysql; @@ -82,10 +84,15 @@ const triggerAccountsBalanceUpdate = async () => { MAX_ACCOUNT_COUNT_IN_ONE_EXECUTION, ); - // eslint-disable-next-line no-restricted-syntax - for (const address of addresses) { - // eslint-disable-next-line no-await-in-loop - await updateAccountBalances(address); + try { + // eslint-disable-next-line no-restricted-syntax + for (const address of addresses) { + // eslint-disable-next-line no-await-in-loop + await updateAccountBalances(address); + } + } catch (err) { + // Reschedule accounts balance update on error + await scheduleAddressesBalanceUpdate(addresses); } if (addresses.length) { From c0f0f34612752fb0fd2ab95ba464a56f1d04b31c Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Mon, 18 Sep 2023 17:07:47 +0200 Subject: [PATCH 43/71] Fix indexing getting stale near completion --- .../shared/indexer/blockchainIndex.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 459aaef5e5..16ff841ebb 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -106,7 +106,6 @@ const indexBlock = async job => { await addHeightToIndexBlocksQueue(blockHeightToIndex + 1); } - // Verify current block does not exits. return if already indexed const [currentBlockInDB = {}] = await blocksTable.find( { where: { height: currentBlockHeight }, @@ -114,8 +113,10 @@ const indexBlock = async job => { }, ['height'], ); + + // If current block is already indexed, then index the highest indexed block height + 1 if (Object.keys(currentBlockInDB).length) { - return; + blockHeightToIndex = lastIndexedHeight + 1; } const block = await getBlockByHeight(blockHeightToIndex); @@ -283,6 +284,11 @@ const indexBlock = async job => { ); } catch (error) { await rollbackDBTransaction(dbTrx); + + // Reschedule the block for indexing + // eslint-disable-next-line no-use-before-define + await addHeightToIndexBlocksQueue(blockHeightToIndex); + logger.debug( `Rolled back MySQL transaction to index block ${block.id} at height ${block.height}.`, ); @@ -489,7 +495,8 @@ const delay = (ms = 100, val) => new Promise(resolve => setTimeout(resolve, ms, const indexBlockAtomicWrapper = async (job) => { if (isIndexingRunning) { - logger.trace('Already indexing another block!'); + // TODO: make this trace before merge + logger.warn('Already indexing another block!'); await delay(BLOCKCHAIN_INDEX_RESCHEDULE_DELAY); // eslint-disable-next-line no-use-before-define await addHeightToIndexBlocksQueue(job.data.height); @@ -501,7 +508,7 @@ const indexBlockAtomicWrapper = async (job) => { try { await indexBlock(job); } catch (err) { - logger.error(`Error occurred during block. error: ${err}`); + logger.error(`Error occurred during indexing block. Error: ${err.message}`); } isIndexingRunning = false; From ee437a2ec836d579cbaf479b777e55971a925d86 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Mon, 18 Sep 2023 17:53:08 +0200 Subject: [PATCH 44/71] Throw error on indexing fail --- services/blockchain-indexer/shared/indexer/blockchainIndex.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 16ff841ebb..1166cbaa04 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -508,7 +508,9 @@ const indexBlockAtomicWrapper = async (job) => { try { await indexBlock(job); } catch (err) { - logger.error(`Error occurred during indexing block. Error: ${err.message}`); + isIndexingRunning = false; + logger.error(`Error occurred during indexing block.\nError: ${err.message}`); + throw new Error(err); } isIndexingRunning = false; From 04f94005911a97c1b4ba57df4e0e6f5b518a43e5 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Tue, 19 Sep 2023 10:08:58 +0200 Subject: [PATCH 45/71] Fix indexing percentage reaches more than 100 --- .../shared/indexer/blockchainIndex.js | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 1166cbaa04..805e03b662 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -57,7 +57,13 @@ const { scheduleAddressesBalanceUpdate, } = require('./accountBalanceIndex'); -const { getFinalizedHeight, getGenesisHeight, EVENT, MODULE } = require('../constants'); +const { + getFinalizedHeight, + getGenesisHeight, + EVENT, + MODULE, + getCurrentHeight, +} = require('../constants'); const config = require('../../config'); @@ -83,8 +89,8 @@ const INDEX_VERIFIED_HEIGHT = 'indexVerifiedHeight'; const validateBlock = block => !!block && block.height >= 0; const indexBlock = async job => { - const { height: currentBlockHeight } = job.data; - let blockHeightToIndex = currentBlockHeight; + const { height: blockHeightFromJobData } = job.data; + let blockHeightToIndex = blockHeightFromJobData; let addressesToUpdateBalance = []; const blocksTable = await getBlocksTable(); @@ -99,8 +105,8 @@ const indexBlock = async job => { const { height: lastIndexedHeight } = lastIndexedBlock; - // Index last indexed block height + 1 if there is a gap - if (lastIndexedHeight && lastIndexedHeight < currentBlockHeight - 1) { + // Index last indexed block height + 1 and schedule the next block if there is a gap + if (lastIndexedHeight && lastIndexedHeight < blockHeightFromJobData - 1) { blockHeightToIndex = lastIndexedHeight + 1; // eslint-disable-next-line no-use-before-define await addHeightToIndexBlocksQueue(blockHeightToIndex + 1); @@ -108,7 +114,7 @@ const indexBlock = async job => { const [currentBlockInDB = {}] = await blocksTable.find( { - where: { height: currentBlockHeight }, + where: { height: blockHeightFromJobData }, limit: 1, }, ['height'], @@ -116,6 +122,10 @@ const indexBlock = async job => { // If current block is already indexed, then index the highest indexed block height + 1 if (Object.keys(currentBlockInDB).length) { + // Skip indexing if the blockchain is fully indexed. + const currentBlockchainHeight = await getCurrentHeight(); + if (lastIndexedHeight >= currentBlockchainHeight) return; + blockHeightToIndex = lastIndexedHeight + 1; } @@ -124,6 +134,7 @@ const indexBlock = async job => { throw new Error(`Invalid block ${block.id} at height ${block.height}.`); } + // Create DB transaction. Queries from here sees a snapshot of the database const connection = await getDBConnection(MYSQL_ENDPOINT); const dbTrx = await startDBTransaction(connection); logger.debug( From fe13110876404f37e3955016a93ec3fcbe5088a9 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Wed, 20 Sep 2023 11:06:22 +0200 Subject: [PATCH 46/71] Fix query with right height to check existing block --- .../blockchain-indexer/shared/indexer/blockchainIndex.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 805e03b662..465e1e824f 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -29,6 +29,9 @@ const { KVStore: { getKeyValueTable }, }, }, + Utils: { + delay, + }, } = require('lisk-service-framework'); const { applyTransaction, revertTransaction } = require('./transactionProcessor'); @@ -114,7 +117,7 @@ const indexBlock = async job => { const [currentBlockInDB = {}] = await blocksTable.find( { - where: { height: blockHeightFromJobData }, + where: { height: blockHeightToIndex }, limit: 1, }, ['height'], @@ -501,9 +504,6 @@ const deleteIndexedBlocks = async job => { let isIndexingRunning = false; const BLOCKCHAIN_INDEX_RESCHEDULE_DELAY = 1000; -// TODO: Temporary. Use the one from framework -const delay = (ms = 100, val) => new Promise(resolve => setTimeout(resolve, ms, val)); - const indexBlockAtomicWrapper = async (job) => { if (isIndexingRunning) { // TODO: make this trace before merge From e68578a4b31319c77c15dc096f8199fdec40d415 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Fri, 22 Sep 2023 17:58:39 +0200 Subject: [PATCH 47/71] Add unit test coverage for indexer --- .../dataService/business/feeEstimates.js | 3 + .../tests/unit/shared/constants.test.js | 57 ++++++++++++++++++- .../dataservice/business/feeEstimates.test.js | 13 +++++ 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/services/blockchain-indexer/shared/dataService/business/feeEstimates.js b/services/blockchain-indexer/shared/dataService/business/feeEstimates.js index ae9f53e4b9..84ba869eba 100644 --- a/services/blockchain-indexer/shared/dataService/business/feeEstimates.js +++ b/services/blockchain-indexer/shared/dataService/business/feeEstimates.js @@ -47,4 +47,7 @@ module.exports = { setFeeEstimates, getFeeEstimates, getFeeEstimatesFromFeeEstimator, + + // for testing + defaultFeeEstimates: feeEstimates, }; diff --git a/services/blockchain-indexer/tests/unit/shared/constants.test.js b/services/blockchain-indexer/tests/unit/shared/constants.test.js index 65f91c5105..6b4fe7b860 100644 --- a/services/blockchain-indexer/tests/unit/shared/constants.test.js +++ b/services/blockchain-indexer/tests/unit/shared/constants.test.js @@ -13,10 +13,22 @@ * Removal or modification of this copyright notice is prohibited. * */ -const { resolveModuleCommands } = require('../../../shared/constants'); -const { metadata } = require('../../constants/metadata'); +/* eslint-disable import/no-dynamic-require */ + +const path = require('path'); + +const mockConstantsPath = path.resolve(`${__dirname}../../../../shared/constants`); +const mockRequestFilePath = path.resolve(`${__dirname}../../../../shared/utils/request`); + +afterEach(() => { + jest.clearAllMocks(); + jest.resetModules(); +}); describe('Test resolveModuleCommands method', () => { + const { resolveModuleCommands } = require(mockConstantsPath); + const { metadata } = require('../../constants/metadata'); + it('should return list of moduleCommands when called with valid system metadata', async () => { const result = await resolveModuleCommands(metadata.modules); expect(result).toBeInstanceOf(Array); @@ -31,3 +43,44 @@ describe('Test resolveModuleCommands method', () => { expect(async () => resolveModuleCommands(undefined)).rejects.toThrow(TypeError); }); }); + +describe('Test getCurrentHeight method', () => { + it('should return current height when requestConnector works properly', async () => { + const expectedHeight = 123; + jest.mock(mockRequestFilePath, () => ({ + requestConnector: async () => ({ height: expectedHeight }), + })); + + const { getCurrentHeight } = require(mockConstantsPath); + const result = await getCurrentHeight(); + expect(result).toEqual(expectedHeight); + }); + + it('should return undefined when requestConnector returns empty object', async () => { + jest.mock(mockRequestFilePath, () => ({ + requestConnector: async () => ({}), + })); + + const { getCurrentHeight } = require(mockConstantsPath); + const result = await getCurrentHeight(); + expect(result).toEqual(undefined); + }); + + it('should throw error when requestConnector returns undefined', async () => { + jest.mock(mockRequestFilePath, () => ({ + requestConnector: async () => undefined, + })); + + const { getCurrentHeight } = require(mockConstantsPath); + expect(async () => getCurrentHeight()).rejects.toThrow(); + }); + + it('should throw error when requestConnector throws error', async () => { + jest.mock(mockRequestFilePath, () => ({ + requestConnector: async () => { throw new Error('Custom Error'); }, + })); + + const { getCurrentHeight } = require(mockConstantsPath); + expect(async () => getCurrentHeight()).rejects.toThrow(); + }); +}); diff --git a/services/blockchain-indexer/tests/unit/shared/dataservice/business/feeEstimates.test.js b/services/blockchain-indexer/tests/unit/shared/dataservice/business/feeEstimates.test.js index a7dd3bb680..c16d2b10e4 100644 --- a/services/blockchain-indexer/tests/unit/shared/dataservice/business/feeEstimates.test.js +++ b/services/blockchain-indexer/tests/unit/shared/dataservice/business/feeEstimates.test.js @@ -16,6 +16,7 @@ /* eslint-disable import/no-dynamic-require */ const { resolve } = require('path'); +const { defaultFeeEstimates } = require('../../../../../shared/dataService/business/feeEstimates'); const mockFeeEstimatesFilePath = resolve(`${__dirname}/../../../../../shared/dataService/business/feeEstimates`); @@ -81,4 +82,16 @@ describe('Test getFeeEstimatesFromFeeEstimator', () => { expect(requestFeeEstimator).toHaveBeenCalledTimes(0); expect(feeEstimates).toEqual(mockTxFeeEstimate); }); + + it('should return default fee estimates when underlying api call throws error', async () => { + jest.mock('../../../../../shared/utils/request', () => ({ + requestFeeEstimator: () => { throw new Error('Custom Error'); }, + })); + + const { getFeeEstimatesFromFeeEstimator } = require(mockFeeEstimatesFilePath); + const feeEstimates = await getFeeEstimatesFromFeeEstimator(); + + expect(requestFeeEstimator).toHaveBeenCalledTimes(0); + expect(feeEstimates).toEqual(defaultFeeEstimates); + }); }); From 03e20da89b953667dc7fc4a9dfc561195409ea4b Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Fri, 22 Sep 2023 19:36:26 +0200 Subject: [PATCH 48/71] :art: Refactor log level --- services/blockchain-indexer/shared/indexer/blockchainIndex.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 465e1e824f..420cb43c2c 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -506,8 +506,7 @@ const BLOCKCHAIN_INDEX_RESCHEDULE_DELAY = 1000; const indexBlockAtomicWrapper = async (job) => { if (isIndexingRunning) { - // TODO: make this trace before merge - logger.warn('Already indexing another block!'); + logger.trace('Already indexing another block!'); await delay(BLOCKCHAIN_INDEX_RESCHEDULE_DELAY); // eslint-disable-next-line no-use-before-define await addHeightToIndexBlocksQueue(job.data.height); From 4269e69a21e9b91281441d6081811cfdf9831da7 Mon Sep 17 00:00:00 2001 From: Priojeet Date: Tue, 26 Sep 2023 15:03:13 +0200 Subject: [PATCH 49/71] Apply suggestions from code review Co-authored-by: Sameer --- services/blockchain-indexer/config.js | 2 +- services/blockchain-indexer/jobs/indexer/updateAccounts.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/blockchain-indexer/config.js b/services/blockchain-indexer/config.js index 9b4bac9b90..1ebe27baac 100644 --- a/services/blockchain-indexer/config.js +++ b/services/blockchain-indexer/config.js @@ -193,7 +193,7 @@ config.job = { }, triggerAccountBalanceUpdates: { interval: process.env.JOB_INTERVAL_TRIGGER_ACCOUNT_BALANCE_UPDATES || 10, - schedule: process.env.JOB_INTERVAL_TRIGGER_ACCOUNT_BALANCE_UPDATES || '', + schedule: process.env.JOB_SCHEDULE_TRIGGER_ACCOUNT_BALANCE_UPDATES || '', }, }; diff --git a/services/blockchain-indexer/jobs/indexer/updateAccounts.js b/services/blockchain-indexer/jobs/indexer/updateAccounts.js index 0ed5edb6c1..0e6ab9e7fc 100644 --- a/services/blockchain-indexer/jobs/indexer/updateAccounts.js +++ b/services/blockchain-indexer/jobs/indexer/updateAccounts.js @@ -38,7 +38,7 @@ module.exports = [ }, { name: 'trigger.account.balance.updates', - description: 'Triggers the queued account balance updates.', + description: 'Triggers balance updates for queued accounts.', interval: config.job.triggerAccountBalanceUpdates.interval, schedule: config.job.triggerAccountBalanceUpdates.schedule, controller: async () => { From 5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Tue, 26 Sep 2023 15:14:22 +0200 Subject: [PATCH 50/71] Revert delay export schema in framework --- .../dist/lisk-service-framework-1.6.0.tgz | Bin 70086 -> 70089 bytes framework/index.js | 2 +- framework/src/delay.js | 4 +--- framework/src/http.js | 2 +- .../shared/scheduler.js | 1 - 5 files changed, 3 insertions(+), 6 deletions(-) diff --git a/framework/dist/lisk-service-framework-1.6.0.tgz b/framework/dist/lisk-service-framework-1.6.0.tgz index 40c80934a8251c3e31c70f154ab6583ea2421dd6..ef0b1a9b0004624aec9087a4fbc85fb5ebf26f6f 100644 GIT binary patch delta 30950 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 Z8F2BZ_*48T{@m7|{|}of-V6ZV1pvI;rV#)D delta 30916 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

Nj}{@>$+ zf7GiIy;YDg_%z3uCWB|N(GAa?HlW*DDR(V^;xwhqy?08|yO%pt_q)J%-Hz4$Xe>U6 zBxV%!Dse7n`CHB$H_De@Q#r}SgGTjE;t`{fdN%4aqh~qp2v(-w?T&(g*|mtGxqK>X zOy4R!?SKB+>iA&tXba@bg5R`dsvULy9WyrGY)7iJ^nNdecjX4yua(b!!VB_+(Oh0x zS$TdPzHDAS78P2xZi$_xdnae(<_s2EGvbkbL?yjV)--oq?6xlBiqLWv3=xcDGRO@QS*T3lQH_E5NFwe%?P$1 z>l3VRNu11;)tb1pl>e?uwvtE|JYkKs;x<=?m6fbNqq}p~N*$iz;8C**0zcp$S%Qyn zZv?f=5muNcflw#QR_6-?>NfP3cd>;n{FpQ8uQAE&`)X+QUCH>)cL{k{f(3MtLeIX?D87{>9h zAyC+S253=9tU|vxJhuW?!~9t8$mVB6_-Y#rt7h~qJeC7dI&g58?)$dW!+#+tbZoOu ztsxe`Sk(9cMfSPN1|Y(_c=1ReeSc0L7W6~;!WbV4e5Og!s3{4s$NK&!)S?2>ahJxS zaPO)a^ZX$Y0^=$GsWYeJ01^U9y~KCEOM?@bp7t`vbPx2`2xh5LHqE;FzcA<~Wx~f# zBn~jHw4~kI;LWNIQU!#nJv!}{+3|gsf#S$xK`sV_viKOg%~5x81Na9+dw*W*s?q@S zO17fyD7pya^@V9fuh;1nuuGs`vYrks)p;w?d2>qVEqNCfj3)Knnx*fhMBntvDF!-2pZUkR5Pm18X5EFQ%3LW*F(^0^FV;8jh z&=FV-59DHB@Ury^1_-I9d=Q&&cXyAscemcX-Pt`j-r9b(@&5GzKq^zkcAc2IJ+Q*? z90>nYv$bY6;D62b(o$oU3d?^A)|>zA|NdG510b2eRrTMt|8tCXNSXctV4}}0`MIS& z|9j*0`)yud{4-J1ii)sR3H@^HPBb~s>B~o*Y*34Ph~PuSiQ`bcY3@O2e8jkoXU|wA zlM4_1}L-KtRz)<6D!(u&sg^(B3D|-L=<52k<=s?kZP6E(z4o~%C-}f zwFoH3>pdUCT&T4&P;1SDTPucKD^sIIqH{|7UN?4TZICb%=l}hX%1p@tb2sV zE^X(R>H0vYi}timawu!R3jF@hZ20oxods+cct`m?t2$FrNCGv9967qo!{24Dzo;pr zO0lquh5eN&YgrbZE@?6@7&+;)tjw!eW|OM6VwO_gA-%91BkK;&w(ywAv0Rbn&hHuI zKh?FMc)&+AyPbbItMM3#Wjv3_y{X{tvxg;>!4m+r`3VR2k|)k?s|8n5(Uytot&Hle zsQS_MiAMCoJnUZR44qGtXg3FuK5kz;1|sn|?3@Rk<{(RJ4x-FD%B*EBoY!aZAc!va zcw`SXMWLHL__+^gZesJ~#ER)Svz&fq$=$gnZiL5VV`P6Cc`*Q2KIt$Mqum?<6Z_k} zC86MA)XaR(y%4vyS32d|S1QzfW88eTFB zsb^mWYtG4B-^1qP(h5Wx|`JaEa$ZvEP$m(F?UXazG*b(kp{=c(= zkll##KZE>lE+^&x%1X14|AqW7XrRD!$BQ|2!l=WAa z|0_!?Df!=AS#A{a|K7>}Rw4f%Q~b}%k?a1BYhDk$>0m5r6kg-{r>87_K$aV54QLIz401z z0|HrA8}J`|`1rX|uN(bPR<>Es8o9%_T&tywip)(UWT*jsPYM6?Ee}#-3!mvjSd5Vu#rt}6xD**%U z+4k&#?|8$SaZD9<#SSY5K$BOl86W)4D-W~(c$7QJ>s}yTfCbgKCUHR1J=*8XdFB0X$|cRE$?qMG>hvA@#w>iY{Zn@XsJ%J?DRO z+c+U$i%%~#RwJEcd{Rp_%3uLOEi+Y=ZXL~{Y$U&=>$*-K)?N@*6(8a?>6TXh&?W^a zmPJUdGGA~eO3TX0j_05skn=Z465jslrD`=k(L3S0z3)}ZUBRw4XQhZa5?$D=GdiuD zJiUZUoUl|~H8&By-VW>WHBr$@#@T;ZQ06$m0RGO!fa)Lyyjg?;6`WAx={;epH6HU1 zO?jK#9$_Q!(nIDDczpaZquv>3m=9fbIm-tN5*WC6 z6SliySV`cAYj~IPRa8E7O>6}0TQz<#8o2DE61*G!#Hb*}+Odj!Oc@Xc)+m1z1=Wn@ z8{=QT9d!|77KBD6Hq+I%A@FPiTSr)rYX-+seC9vkD@RFu0iPxwpNwvwwg5e(yEe7F4rc zuSZE4R+rY+>y5JXSls6xi(UCL2;cQ+HZ9{6HhGWthT#At4q8-uVB@T z4pp*@e;FM-#FTp~H%$@-SQ#NmgG)lI8N%UCIJ^;r$ia>L;pMi)tC*H|QF$fAY?Ykh z#h#a24*TVVQtC2R{+54oGEwPRPvLgvheMieZCqwJaFNjMa`muzB!AWG^fU4V#0?d% z=eSOn3!xQ3fM1QHG;K`&->&PxvNWYdgqTHCqhHTwYKVA64e3|R<8{L(wM(uw$-LPt zf+EojwumFFvGJxsT1R#Mv{krQ+ zy88LAkOQE#{uxh3WTCr1NU2@WNPw?-Z$)lv=^idLml6*+b+z= z{~g-~=1TZ|HTl1i;s4QEEAoFA^1qP(w<`Y=Qai&8)N3THLA|IFdv_H@Nu})cxv<4C zo}c-^5NiG>1d0;Oq=d%v^W$S7?#EG5z>|2a5pRq7^e=zbC-yGDmokPImGaqeI4I9n zwQmgusYK9ul~G@R@R@IO{Qvg35P0vYhp?{U3^>jIZ*?jC{zJ2n|AqfwA^&gH|8K$~ zzd2{X37zD722N;HT;trL{(r_?n9Q&qvf*g3N$cqiW)y*M*DwO6-2W^uHB#}P%gcrQ zFZBOH{@;J9{tw#j9@lQ|eOTjti~F7NnEe`gF7z$^o`<|_P(GJYbn|-#^CP}4Bb5APMX4i6Et!rprt%_51-sitw7+?j!_pwTd z2i0+I9WTmc^rv@12k6{;gL*zJTR~u5XwST8uhoCRKgA0c(TgNh(RIs5X6W}BJ$!*f z;eWq)A;@wFs2oWgu_K8C6&T+nDjKO_p#Mp%jT#uk+W;ul+K*(FU3%9`lHRWQ^?!h-ahB?IWTQhh@6VI~|^J_{uwkF2cevI^J7Y5IRL$ z*ol9vXrBK9 zXxxoIV5dMFYQQZ;QWiwjLr-%S=UCDkvvGev_ndQcb2q9C}A&Be$U5zoRDfZCr}J)2>hY0+EJ$jptH_7u&B@sYF0{n`h$? zBf=gB5hpSGMM=g~h?0MNw6{dl1lAc?B|Ay-$%gA@pf-g`@HRRRx3c68 zd~sW%7nWz6@S(p?mV`t}^eR7Bs*#GCI{3O&;)LEvLjR*XzyFnL;7wfp&Y=G-ucq^V zEiWw<{=dcff1&@~s{R)#W*Jw%x+)mm`tFM+Brfzz->6DL(}~{==O|YcD_Vb+O}0NV z`K&EEac+svl)n?hPeg0Fe@$N{FC-Bt6Fh_S8-0>5wk~LD3-|sMAmrsQepLRM*>E_Z zaolk;gC5w&?4*F&8WmD5%mN5^PnC|Yz!y%mnMUfH>N-WKdL7t}0tVd+qY-U%nwx5l zE>aZ<`y1TF7a<`E&5Z8D1fhTBFk;@YQ@Uv?@@nICyvZYm6%qL7A+U`hV+&Ih5Z%W% zYHExfA7J~+)R~ov&ea$lT4eA!d=*vi6K5y-roleXBVXnmYNX7ixnk;>T14{Y3R5M6 zQD>eh-eAV1DCUvtj)~NV4>@H!$m-m-tzVQMcnStcN5Bm z(ct*817i{yrUNxeTtt8216|+s1LyBpd?99dS(F7qRQJ+gxWk4<@(E}vwxFcWTqg3A@OV{*GFrjuCvlBwd~YmQ<*_l4%5?qHN||G5M7V!^&qTc3561U++5LlY zh}1YDtwKdeeujMqH^s4}HUP+oq{QwITSw2MO7F159tARqORVNntfq+Ek5^g7lkH#k z-|iwUK)p*8;L>Qbilw$#~Y+qg$aNhGh`dBl_aX3=x4KFLUG*vr>!yfB02M-iU8K;xj zr#7Y&V zHN}>ZC?!G3@ET+hvu%hsOz?cvQcesx3#lgAltf2el8*bY!#~Q%lKhpawoz6hp)6^J zkJ$4lqjG=W>7IdI20{w)&x3{Z0}%uDTV_K86D_@~w3e79mv|oBiNl)}NZ}Rv_4$9M z_5c3J9Xf)Iu4e^I*8f+t{68DT`G2AR7yAD_)c;{(VlE^2JJRHD);gG=b1&uU+!-c8 zLX>IBIB5+rDCsZTpDj#q7q-(y#w@*^hnYsm+|YjzoLG=1u1>S-_Z7goO$nh4&Sp)- zDnBrT;;^((?(+BC(API$>PJ*?ERXcm2ay02KdCZUCwf~Ak_Prz`c)5XfPmHE)G(qP2eUy)AJ$*UT z3cY{PU}^MWlc|Vw16Q}WW*A<=E<5?z9||~#eWuM-<%3C?beIGoX}zJuHXSddvuWML zQz;bqH=Q_lZK)+6?*^4*;X6q?dhED6a;-ogEM5OG3^VTaSb#e`;4>H@Yopcz+dr7J z#>t1jP7EsqbdZh)38w&R)JqFWsA0w?m)w7G4l$Qvtbj()RCzY1o0A{!O8fzi4<+aHyxV>o-=Ze^Na%*l?ha8(D;8S zb=szO0MX^zj5y1=LWFC%;8togPx@p)s|i4;8e;a=NuZAOvGZAOO=8dlg=gTaR&^qi zwq}Ba?G&5?6o1^2j$T0Ske2X_kSyEMf^u${}=ZES95>=2UglXfvR2QDllyt>bXY$*gxLh-Fo+SXZHYY z7S)BxBIB{Nkgy(03%TZFO}7&+4c{X~2vJ_;c}bZ#yy%4?6Dp%MfkoBWvkPDhli^H7 zq>&+_sB~f-0fooL;!M^=O_2{=Zw9(f`8%+^FnhNJT0H=+PKPpnQ1@%}&v$>;h3i{( z79!|zlWh&Ar#@{I>d^7Qh=qj=>rm~BIOp=;+<7jEIAzArYaqyqX__=Q%0-C6swE=N zV_yU^+_i~9eiJ=n)bDp?8RB!8Ln@4;!alh-pUi7du7DBM6Qg;qLCgeGl3^B#3trG4 zLno`jzlm6mS(G}x!{jw0s=9xIXF`x@nW0d0~eVsMbU)DqXF;mV0 z@UbmasAwaV$Kbw~@xqrThMTHwMYwNHBI zs$&+Vapv`edv>G>Xx9yqbFc_vjt!P3kg5VBz^uY%D)p6<$g4dK_*i>8$qy1eY$_Z@ z@t@w)%h(w(eXdUFBD#M75&z2XMm?7H^iupY2lfQCGZ4%Kq2Iv(3tIHNTnw=-RRb0P zj-A)aK}o;FNlsRIk3|z+p4^<@)=Yo^<&z;yoKzi?xu!LJ%`|zq;w>c&XTB8h$^$P; zNY$#5);;B}WFdB2qP0t2mPkD4p9?43P#wu8S06XAguXfEBA$Pg{sb8aB~tOTE5W-)JS5PR=7)m;<5Scfpg9Zrls+PQ7^l~RIA%KpI) zL`~dQ`Khw%%H+QV*~AbO9w}mR;0waPkN--Nju*;-r%9)!MZl5O=)y_T5r6SvPY90I zWo6-|cJujvaHW5AtPp_pQ(5Rlt+yInZrO0f0#nwdh6CD1&e8p;DE_m)}wIf zfOILGSUo>04qfqu)-Jl`(Q)hc=G)!fz3o@;_qVsoiR4NOdJMKI?!jccmGXPx|Km$$ zmx4gJ2ViaV+#)sl?=0Vzd#HLnZ+p&GST=6$GGBv8E%=6M<(SjpGaGwZL(l z_c+<27tnR)<1jV$gK|ysSFb|Os|;Re_^7SmDlUmN|0spDW;O$2L^jkip%blkC8|ZR zb&gH4P$f=TiHO~KJHU$r@yI)Ml%!;wfH;3_-H^4;e@C$yk(;FG{t$5JlVLs#KC5E^ zyqR)BHEyJzO54Vn6f29O0#o2kI!q! zY)H_o>KP^Y*q0z(R*TFs>?3pG)VRCZD-eU&2(%EJ-m3?KbsW&KF8Fvmo0_hcCIBB) z=W3(vTzRyenMZqbY2h;Rzom`=uA6@dZle9a)L30vO2>Z{?>`sze_{XM?)@L=*8P;t zA7y~+>3M)JXWRy|rG3`6lHYMs0O`J7@|}W2%g8&7yIyk*RcjcjgkZ%*&)grQ+$*ay z2Kd31%d+?<6!9)i9f10GN`F-ep;BrX2UC-M=$>SR@*lvW{z%u4YEgl%WR8EQk3Q?+ zZb3`K!B{q26vQ~mm%I@>!W%V>4ub_qd6bfwjbKaNoA%9>u2<@ak|Evi~ZkU^Tb@K(PPS| z6Wvr2rs_#XUMD?FM2%Nb!0dlHo*hp;C1Nhb!w1QHQz?9L%8i{j??3|V9Dt!?Xx>Fe z#TpIKF%uUV3IP_+W~OM&KSfwc&9HK^wf%bgVB2`L_x4S~IE<2Ci6mE!2ipM*)ju!i z(qRy=_XDi9H#s%0kTh`= z7`+ZXYfhjXJBJF~8||uO$e}?V16&$l_)KVAGtL<9fp{2djE|-bdpd1vMwvrQQF$VH za;kAqa#9*Ol$2&C7=?cn0z^6tx?S))+I;fz+Ua4@_c*81CoPBGOn7uIrlK(O49|iw z2bPUDPhXk0Btd-(xc=Am-BI5|$vSZFA^65SZM#Hm<$|N>b-~@xL82_3=7_EOv_JnX>S>h$+qQL1} zU=4g^7x{B?NV_oT%af^~3;kG&9eg?=_T}(IzEflh41Qx5r6p0-{xMM zBvFoXnIM@dl56f8^5K+KezgL?a6qt_$nv^`8Gn#Xj&4m z@G_C?Onf)3ZSd`h1Y6jSp)gJe%|uTTSEk1s8`c!*JkH%w8dEvr<{0Dt%>9?2`ujWc zku?$WBbyE$qdyeOVs_zk3uZ^2dWNYLa6cW)yKyWvOiQRqE08$8kj@*WvHLOsR|FBb+q!HA31 z6Ek6mQOona5VUyL?$Ry984L!NWN_bS>)Sh;tr-lV7-hvEW+5?uIl^`Q^FN?$6Ust7 z7{vpl2Sb1Tg*g6^1CTZ`4}Try&N7`ehjcLZh$cE370JbK&x*;$$;OxGAKO&RF+r8{ zW2^gBP4qQ($DC;hV8ot>XQsBL1h7arh?) zL-r#6r#Q_nlc4w>lTi2$0`9Amf%qJMi2o^WOpExRBL1g{|B1i<%R?0KC8_!Wf46;G ze!13Dz?0wqZMIsi^!q<+jUxW%-o^hki};^M693~`K*r=E2ONiZO=WD;j1v?3~pun)3; z@O8tF_UG>M&|3Mhy!2tP9{5YWXMg|I`8>4Nd*14Y^S?igy60;b!&uXIqYg0SZwyZ# z8$GseE%lmKtJzsuS!(oJYrSV{)^c;Xv$DL-*4C}{?gj0XqerW5K_9jJuydt9WYJ>^uXo%d6d1V`ar!wpeSu z(^_J!rPXE=uvu!gP!z9rdzNLbu3CVf#g?qq#)ggpZW*PRljJ8@a9!cIaIrD@*yW8aUpNol>||PK(5bGjmU3 zW0<`owGYkQg|;n!&E5@3_etGQtbk#&o;7lTQutACZ}susP;1_CPInTWP5~hd`&W!z z3k)W7ntK?%X`ROiC;oC^d;W}I9sXv5&p-LitX@ce={r6D9eK{sg!%3{r`J97 zon8JfHCB@He+h(5A^-24{BIQU|Iyli3!hlf@k6FUkWnJMK_|ktaR{Ql{C(j2n0NCB zk`ndrzN>#{h6C0GL4l!>N21BL_sI!-kH=G#J>RClNiYycgI6$+a07!7p^||50h%oG zEr;0@VySh1bjDoRVZu7K-lXXzjNn_;YoW>Cl>V>s?!tm}?@InJH%9^}MCCXmC`OC)M@%H}a#=Gs~HyiJu z%G=Hdm}avFwEvr7EK&K}GVBC@{`oBm>|^@pG5m9X906fr*BY?*znxf(7B)Hv|9KJ-=^G%-h7WBMXHl%&Rz z=UUhsCzhD~O2h@ip`T^|m6!?(f*85sw<(NilS>{JR!(?Q^|GFfp=?+#%%OcDQ3K`e{F=R*s4{B&dm_96&> z;6=wPEudhoh-qXONZ2Ib@)H4Gg$sH-M}+B4Ry+g%6fDW>5=li`{aE_-V=6g*difE< zD-#ViDIyucM|~03*$&b470+n^8$al`$Je9 zv}piB8?O(x_l$#$m#?>D=`f6qtu14JXLoD+f8etk!q}*YUjn~z^@M;=AwR8Bp!1^Z z`vaBzo>pyOomX_EC?2GwWEWrOk<98^A>v(uEuuyz=29pjf8lS~Cvf|~1yzPkko9oS zDJ!{wtL=GIo7eM3{SNL3veGX7#y+a4y7E$Erpn?TK-Jx+-`RCLzV9;2iz>f=cmSnJZB8=;Eb~6*?(YM z8`TPu|HObM{7Ip2yZ(?{Qz8(5PA}lUL@TXGbftd(3RKz0Gd@7)Z4W=I{E}ts6qGB} zba*c|MZ0x5{(()mGw_dnRiF0_?4=_jf4i(Vd<$Aq@GC4z{6H#<_656eJTIzn8u+8Z z%L~=r%ZokhoD9O}lHz~GrbOSS`1Ft@2Hgresi07U+4?3uOOYgoI#p_a6EJ%OI!DFt ze5j!~j6&<+3yC+y0!r9P?tvO4m1_o%@e`jlTy^FG6^u3|fJdu#&ZW%Ppy`CW)-G{# zvQjo{gFMBU#+MgKEeM1X7D#O-uJ{BzF!K&TmFa01_TJ68AOl_AN78m#2gH%jN@8f}est)#ZBDWbZ6;w;|#$xw>L_(_-D z5=z}vdQK0g=3sdsX~gklZE&8)&`-&S_+pL|s@^d&mef>a2;{DBs4{V^9ygnZG?^D% ziA+GnBRS%=lIT^eENKYs5rc_NH!ztStakcaE>>Lgs?DKlq-kP-9#NfG`>7=_)f({% zkOfLQ$}k5E7}OPiPjR2{>K`4+KM`Gaz zVie81LBd4q05k<8FMZ_E&$RUDx9=gNKyO1`0jHuq3r@jkz%50M;vEa{s3A5CJTiy^ zsli$YwuWs>5LureB~8H+=sO`Z0Zc`J5jdYQPrP{~Gh|7B+epL-2cNYysaY3VimP!| z*bN+zZarvF^!11(+;TS=Ugqf*hA58N3R0Bij|Syhv`T2#dO31jo6ZJQraLY>;U7*& zk?*7&#aE6709q#IIW@=6<1N&to>so(-p<40X`&(&s+wsl42XaJ)A)urF{KJ4YAsM# zA|PLF6X9Wh<7f<0fd}xPa4L=sh8`#gcRH*sQAAH$#cQVlmlW_M=5fd&b9tfwUM3pL zCOJq+V~u}JD6guv8N#X^f~8azEW>-0#g%yboUVns7DrlqOxDSUfLd}K@k9K?4J{B$ z@b4{Y-bMNsHIpM~$48(mp_K?$td5|oR%!}$vy$6?d(Hr;U19|EO#-1GS!1ArSq7nj z%Nm7VtcEcGg-HV;eOrzuRiM;1o>o&7MB+*j02merDk{h^8gh(@0Vse--gh z*=(GHx-wc4t7p{LR->v!%W>!rE%zh`9+_-$SoBF~-0^BLS#hZgXApN_Pn_)f(g-xb z;G%th6c30AZu?K~=_T)B=nFf!IyUnV<0fR4w-vt}Q6L!*qvo!xh4>*qoq zYMA*nV12UI!=n@t#Q=bYqVqPj!@5!#b~4e>h(H}3DIHz(rAYpXpVs_9mvN>zVavdJ z)~-hENb%TI%G1eSg5X`Tv*(bTnk1=AA1m>e6MLQ1XI7UP9mc!M?@cY+tBg`KN_Hzg z&oWYZ@S5mXeon6D$t)YqeMP~YFt>t#ixORnuQfwE{GA&O*@fa*4d@K0rMPa=GFNRh z6xFwEag*#ec3hn3dT0gm{HbPOMXB4;kuv|GqZ5Orp%nXGnFVSls_}#DYvLLQrXd?I zm>*kp#C}ag6&wvm^=*Fi`0azhE%q%X>k}=0G~(4k^2a`iEj0E`33b^;{zfW)9uuf( zuhi7kBPO-v8wp4#4l}xIPE^4|eLVB4>YA+RC9bmY2eJtdd=MK9h>v(Dbn-3QGgN>4 z?TM}nMJUb&=;>wDA^}Q{aAu5TgRuk?vxepxWWseswZHbLlYlh{*Cs;(v;q*(Ws=O@ z&sYZXYu-YLTK#Awn?#F2eiF-nfe%OSQ5joEqM2GT75POtx>Plr>?T%^1kcgbyftXy zG}Nk@X=x?+PTLl*w6@ZGHUp%b#g*i%*>Fm&uH^cfYos$QusMf5+X|bL7E_m)SY)x& z+o`OQrk~W9uEr~w^qK}Lk6AM4GXqv>Zb>l9Tw|SuTjm`6jO;QeHKy}_%ebT;Elx0q zMy?wd&gyfXbk^GaXrvlN@>zY0>nrNB62R)qJNcxV62Q9Mg@?wes>?zidv#O4dgtj!XbhNtR-0ca=H7i0=!bjRIcahgO*DT1`(DhhW2cV_;TuX3EP{0e ze;qx)@_nmz`WNv70{$u)LA()lZ&$ZCRIUj`leZ=lL;$@NbLx05PEb}34`?2;o+jhQw>HFX-(M~ld2ozdz3 zU#@J8cd@^}u3*akU2Euk62S<9!c-fTPT9;1|8mFAjgCVJzQVSl70HkMPIsQAGyoLY zRTdL9xXa}xW^=S6Y^L~Ja8#jPE>)rlii#3E8mcfmM~RPkt_Gl8X}rl=LtOT zV3K+DeU>-Js{GzeZuA!9!?bb5ZmyfO(JPSZ(n@^z>Qq^On?1VORYOwFuk7oaUGWWj z;{grm^p185{>_g!+KDr)s6;>bs1XFT^lCICu^#hx zPmsvOLD@1u!m|JmHa(+jxh{OADxWZyIgfcuy=^HI#;W*FM`a5se~a?%Ti)4m`FWzQ z+~1Rfs6;@j$u|5IM`o)RA2GuT_5y$LelX2R)Ji>n$&JkQ>zi;3P&}sR9m(uzFSC)$R ze~SFS#r}V*`F}GO`ORhj%>bUC`!}OVnGPY600@MRkOjrawC8iES8XX-RA&| zS8)Iz*#-Qt!zY;e6*WQX?g@XH;R(H|0gAulJ%JBL)Z)zVGZ3eQ+Szb82;24gDM<2B z2hZK=8JiaGDPWXw40f6)@&Sk^nDqtWKzrGLvAD=nqQA&Wk`ARd z8-ilfJ^ROVcYRpzph^3%v!$ zUDpBCh@*iWCrgkM6bzdUFhjG~b##{a3D)$ddca@`5YGR$%%<6r?DgH_k+En>ZYJX^Qd*O!(gAnUW^bNCIjrFGC@=v%yh82;sg zZnH!cIQz-+kxNwm-zBrPZYpqevrFHX%_XxbKliKR)xlN12>Zow z6v71AEEIK?qfT-Egff@jF$e@zS`pGnG0}M=!U?}Fy1_`G+c1|^iN`(*C@T>noMiNU z6}~IzY7Patn#(}3RN>+|>&Oa!T33C)FBk$*Ue^jPfW|F>o7S6W4I>IPqt7^z-GJ{1 z07@I@Ab>f$KpKg5t!PZ*+-cELv(|{n8ak)I{jxW`0JaS_1kopmx*P#iMT-%u6WOC0 zLl6y%QuO#f*slkahj^1-da2v*eG>$%L+sM0!F>;qPU_{-~mLRNxK{H683 zz3q*yH``|4zJ)#}>wn9wrM0B~*H~FzDfGX)`121Vrn7Af29e%YDrM_)XjJwsn~}W^ zixxI-8!dc)K*l!Mq9EUWxf|oDv29obp8Sil!jd@-%8SznQ&y~dY#N%S($3I0!@MhJ z2p;2c&{pm-khuYDaGjBV<6^4RcB!<8y#%rwLv8v7?+|pTH&Wn1U6JdWdj5I)^(zC+ zSF}E%=$C_occ6E40`#?_3a|Ix8(q|!p!5&c*(X6_Y?2fyl{Q>gyfp{*w&mer0O&N1 zdtr!l)V9&N;Aa#9Eael!vs#Za8_n?2KmK9Rm8I+QbCl9P6UQZg6dY^3-+L_&2wlatbg6?lfjAsaI)rGa%`w^x^Xo%IfDutw8rJ!950 zySsw#m$vL?XRTqaHdj{~wr$lFnJ4O9xFNJ!sA&;aINaZfPxkT3w^VwiW|n=n`U964 z*i10S9?D6~y<-`Fa&kL?|B(eIkRGFn$fFC$y}NO+FK1vB5?!IU57sA(>z$=~9r=!w zB?GlwoeL?yH?W4h3elOVCfG$LEELQWyB*0MIo*t4UOZ|EEGtr{mvn%b6rGO5=oP@8 zPY+}aZGSYRcNa&LQ`HmCFyfxl*Kor!p~>Q7wz$E>lc^_vbG2uH5J>KTBI^M6{LONf zl7I+Q18{m39D#-);zTh7xT079Uumxc)@#BJN!x0Bb!iRX3>Ll(?F4pmrIxE=EP&pI zZ5sg)g_Up;E!%!WS4vvnXAIZ~fof(beEtPLs|zSP!WyCj0d}iji6Eo}`8J_A$WqP! z@B`QWri`k8z`|I=YH!5dI5k#6{7MUEF!CzZl5iZUL~b+OnFA-faw26Zxjr!agl7sZ zWuycb&3b^IOFkf^tjNrww5ncWzC;$CYf9h;43-pzETADwLb~q*CyJ#Oa`Cg}cf(TY z_;Azj<2np|-#a>{61>jKDSFKf%Tg&i8E!S2tBaX`cf%!7+cq#gEl*~}%~1)bX8fCT zvH@D6QNapNM9~u%re={aWddor7QAzCSSj z*x1|K*ge?U-Z$Rv8Jll+w{{M8-tNM$SH{Nfe~jODcDHH1Lk#{TsWaKNC0Nw=v!3HNX diff --git a/framework/index.js b/framework/index.js index 2e7fd64c4a..a88a60896b 100644 --- a/framework/index.js +++ b/framework/index.js @@ -37,7 +37,7 @@ module.exports = { Data: require('./src/data'), fs: require('./src/fs'), ...(require('./src/data')), - ...(require('./src/delay')), + delay: require('./src/delay'), }, Constants: { ...require('./constants/ErrorCodes'), diff --git a/framework/src/delay.js b/framework/src/delay.js index 79e7fbce51..91744f5136 100644 --- a/framework/src/delay.js +++ b/framework/src/delay.js @@ -15,6 +15,4 @@ */ const delay = (ms = 100, val) => new Promise(resolve => setTimeout(resolve, ms, val)); -module.exports = { - delay, -}; +module.exports = delay; diff --git a/framework/src/http.js b/framework/src/http.js index 71b48fec01..f61e79bcd5 100644 --- a/framework/src/http.js +++ b/framework/src/http.js @@ -18,7 +18,7 @@ const axios = require('axios'); const HttpStatus = require('http-status-codes'); const debug = require('debug')('http'); -const { delay } = require('./delay'); +const delay = require('./delay'); const CACHE_MAX_N_ITEMS = 4096; const CACHE_MAX_TTL = 12 * 60 * 60 * 1000; // 12 hrs diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 1d689687ae..229c2d1a0e 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -241,7 +241,6 @@ const scheduleMissingBlocksIndexing = async () => { // Batch into smaller ranges to avoid microservice/DB query timeouts for (let i = 0; i < NUM_BATCHES; i++) { /* eslint-disable no-await-in-loop */ - const batchStartHeight = blockIndexLowerRange + i * MAX_QUERY_RANGE; const batchEndHeight = Math.min(batchStartHeight + MAX_QUERY_RANGE, blockIndexHigherRange); const result = await getMissingBlocks(batchStartHeight, batchEndHeight); From 7175e0df653abff42a67d1943d2e17ce07c9c1ec Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Tue, 26 Sep 2023 15:23:03 +0200 Subject: [PATCH 51/71] Update framework in microservices --- services/blockchain-app-registry/package.json | 2 +- services/blockchain-app-registry/yarn.lock | 4 ++-- services/blockchain-connector/package.json | 2 +- services/blockchain-connector/yarn.lock | 4 ++-- services/blockchain-coordinator/package.json | 2 +- services/blockchain-coordinator/yarn.lock | 4 ++-- services/blockchain-indexer/package.json | 2 +- services/blockchain-indexer/yarn.lock | 4 ++-- services/export/package.json | 2 +- services/export/yarn.lock | 4 ++-- services/fee-estimator/package.json | 2 +- services/fee-estimator/yarn.lock | 4 ++-- services/gateway/package.json | 2 +- services/gateway/yarn.lock | 4 ++-- services/market/package.json | 2 +- services/market/yarn.lock | 4 ++-- services/template/package.json | 2 +- services/template/yarn.lock | 4 ++-- services/transaction-statistics/package.json | 2 +- services/transaction-statistics/yarn.lock | 4 ++-- 20 files changed, 30 insertions(+), 30 deletions(-) diff --git a/services/blockchain-app-registry/package.json b/services/blockchain-app-registry/package.json index c5a3299ad6..c1e86d178a 100644 --- a/services/blockchain-app-registry/package.json +++ b/services/blockchain-app-registry/package.json @@ -33,7 +33,7 @@ }, "dependencies": { "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", "lodash": "^4.17.21", "octokit": "^2.0.4", "tar": "^6.1.11" diff --git a/services/blockchain-app-registry/yarn.lock b/services/blockchain-app-registry/yarn.lock index cb8f0d5a64..a08feac307 100644 --- a/services/blockchain-app-registry/yarn.lock +++ b/services/blockchain-app-registry/yarn.lock @@ -3084,9 +3084,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" + resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-connector/package.json b/services/blockchain-connector/package.json index 6db3b39d04..893805d136 100644 --- a/services/blockchain-connector/package.json +++ b/services/blockchain-connector/package.json @@ -39,7 +39,7 @@ "big-json": "^3.1.0", "bluebird": "^3.7.2", "knex": "^2.4.0", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", "moment": "^2.29.4", "signals": "^1.0.0", "tar": "^6.1.11" diff --git a/services/blockchain-connector/yarn.lock b/services/blockchain-connector/yarn.lock index a88416ebbf..817ee90d78 100644 --- a/services/blockchain-connector/yarn.lock +++ b/services/blockchain-connector/yarn.lock @@ -3926,9 +3926,9 @@ lines-and-columns@^1.1.6: resolved "https://npm.lisk.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" + resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-coordinator/package.json b/services/blockchain-coordinator/package.json index 6c30ca0b19..82a9450554 100644 --- a/services/blockchain-coordinator/package.json +++ b/services/blockchain-coordinator/package.json @@ -31,7 +31,7 @@ "dependencies": { "bluebird": "^3.7.2", "bull": "^4.8.1", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz" + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz" }, "devDependencies": { "@babel/preset-env": "^7.14.0", diff --git a/services/blockchain-coordinator/yarn.lock b/services/blockchain-coordinator/yarn.lock index 7c26709e85..df222fd2bb 100644 --- a/services/blockchain-coordinator/yarn.lock +++ b/services/blockchain-coordinator/yarn.lock @@ -3482,9 +3482,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" + resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-indexer/package.json b/services/blockchain-indexer/package.json index 140f2a4c5c..1f1c2c4277 100644 --- a/services/blockchain-indexer/package.json +++ b/services/blockchain-indexer/package.json @@ -38,7 +38,7 @@ "bull": "^4.8.1", "camelcase": "^6.3.0", "ioredis": "^4.28.5", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", "lodash": "^4.17.21", "require-all": "^3.0.0" }, diff --git a/services/blockchain-indexer/yarn.lock b/services/blockchain-indexer/yarn.lock index a6ed0c5fdd..998cb2541b 100644 --- a/services/blockchain-indexer/yarn.lock +++ b/services/blockchain-indexer/yarn.lock @@ -3638,9 +3638,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" + resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/export/package.json b/services/export/package.json index 0784afa561..bb357b1b01 100644 --- a/services/export/package.json +++ b/services/export/package.json @@ -36,7 +36,7 @@ "bull": "^3.29.2", "exceljs": "^4.3.0", "json2csv": "^5.0.6", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", "minio": "^7.0.21", "moment": "^2.29.4", "moment-range": "^4.0.2", diff --git a/services/export/yarn.lock b/services/export/yarn.lock index 3f8b2ca3d4..84a328bf4c 100644 --- a/services/export/yarn.lock +++ b/services/export/yarn.lock @@ -3158,9 +3158,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" + resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/fee-estimator/package.json b/services/fee-estimator/package.json index 76e4b57602..ed2f9089b8 100644 --- a/services/fee-estimator/package.json +++ b/services/fee-estimator/package.json @@ -34,7 +34,7 @@ "@liskhq/lisk-cryptography": "4.0.0-rc.1", "@liskhq/lisk-transactions": "6.0.0-rc.1", "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz" + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz" }, "devDependencies": { "@babel/preset-env": "^7.14.0", diff --git a/services/fee-estimator/yarn.lock b/services/fee-estimator/yarn.lock index 6dd956b29d..73fe1ffc7b 100644 --- a/services/fee-estimator/yarn.lock +++ b/services/fee-estimator/yarn.lock @@ -3611,9 +3611,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" + resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/gateway/package.json b/services/gateway/package.json index ea2e3a1fa6..ab9ca91b6a 100644 --- a/services/gateway/package.json +++ b/services/gateway/package.json @@ -33,7 +33,7 @@ "bluebird": "^3.7.2", "fastest-validator": "^1.10.1", "ioredis": "^4.27.1", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", "moleculer": "^0.14.13", "moment": "^2.29.4", "rate-limiter-flexible": "^2.2.4", diff --git a/services/gateway/yarn.lock b/services/gateway/yarn.lock index f964542b31..516f3691f6 100644 --- a/services/gateway/yarn.lock +++ b/services/gateway/yarn.lock @@ -2728,9 +2728,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" + resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/market/package.json b/services/market/package.json index 893405aa2c..16512850e9 100644 --- a/services/market/package.json +++ b/services/market/package.json @@ -32,7 +32,7 @@ "dependencies": { "bluebird": "^3.7.2", "joi": "^17.4.0", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", "moment": "^2.29.4", "node-cron": "=2.0.3" }, diff --git a/services/market/yarn.lock b/services/market/yarn.lock index 38c52a7981..006ae78681 100644 --- a/services/market/yarn.lock +++ b/services/market/yarn.lock @@ -2768,9 +2768,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" + resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/template/package.json b/services/template/package.json index 8423a36e11..1b0734c967 100644 --- a/services/template/package.json +++ b/services/template/package.json @@ -30,7 +30,7 @@ "watch": "supervisor -w . -i ./node_modules app.js" }, "dependencies": { - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", "node-cron": "=2.0.3" } } diff --git a/services/template/yarn.lock b/services/template/yarn.lock index d503cd9cbd..288d6201b5 100644 --- a/services/template/yarn.lock +++ b/services/template/yarn.lock @@ -1022,9 +1022,9 @@ leven@2.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" + resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/transaction-statistics/package.json b/services/transaction-statistics/package.json index f7005f4838..4ef4c021a9 100644 --- a/services/transaction-statistics/package.json +++ b/services/transaction-statistics/package.json @@ -32,7 +32,7 @@ "dependencies": { "big-number": "=2.0.0", "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", "moment": "^2.29.4" }, "devDependencies": { diff --git a/services/transaction-statistics/yarn.lock b/services/transaction-statistics/yarn.lock index ba7fa54014..a995b3f41e 100644 --- a/services/transaction-statistics/yarn.lock +++ b/services/transaction-statistics/yarn.lock @@ -3437,9 +3437,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/656c681e9f46d38cc28e8251f6c10db33133ae25/framework/dist/lisk-service-framework-1.6.0.tgz#8e30e1b9ace0bde13e259737d873838fdb9b2af6" + resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" From 69e1b4a73bb0f2ecfc8090a94f164a84c21b9819 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Tue, 26 Sep 2023 15:45:10 +0200 Subject: [PATCH 52/71] Fix unit test in framework --- framework/tests/unit/delay.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/tests/unit/delay.spec.js b/framework/tests/unit/delay.spec.js index 98aae468f7..53844d83fd 100644 --- a/framework/tests/unit/delay.spec.js +++ b/framework/tests/unit/delay.spec.js @@ -13,7 +13,7 @@ * Removal or modification of this copyright notice is prohibited. * */ -const { delay } = require('../../src/delay'); +const delay = require('../../src/delay'); describe('isProperObject()', () => { const delayTime = 20; From 55dede525e8d968d2c6f19202cc789fc6d013311 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Tue, 26 Sep 2023 15:50:56 +0200 Subject: [PATCH 53/71] Update framework package --- .../dist/lisk-service-framework-1.6.0.tgz | Bin 70089 -> 70082 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/framework/dist/lisk-service-framework-1.6.0.tgz b/framework/dist/lisk-service-framework-1.6.0.tgz index ef0b1a9b0004624aec9087a4fbc85fb5ebf26f6f..f18322211e981bda9840bc339d0a83bdf269b2d2 100644 GIT binary patch delta 33753 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Ð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 Date: Tue, 26 Sep 2023 15:53:54 +0200 Subject: [PATCH 54/71] Update framework in microservices --- services/blockchain-app-registry/package.json | 2 +- services/blockchain-app-registry/yarn.lock | 4 ++-- services/blockchain-connector/package.json | 2 +- services/blockchain-connector/yarn.lock | 4 ++-- services/blockchain-coordinator/package.json | 2 +- services/blockchain-coordinator/yarn.lock | 4 ++-- services/blockchain-indexer/package.json | 2 +- services/blockchain-indexer/yarn.lock | 4 ++-- services/export/package.json | 2 +- services/export/yarn.lock | 4 ++-- services/fee-estimator/package.json | 2 +- services/fee-estimator/yarn.lock | 4 ++-- services/gateway/package.json | 2 +- services/gateway/yarn.lock | 4 ++-- services/market/package.json | 2 +- services/market/yarn.lock | 4 ++-- services/template/package.json | 2 +- services/template/yarn.lock | 4 ++-- services/transaction-statistics/package.json | 2 +- services/transaction-statistics/yarn.lock | 4 ++-- 20 files changed, 30 insertions(+), 30 deletions(-) diff --git a/services/blockchain-app-registry/package.json b/services/blockchain-app-registry/package.json index c1e86d178a..050c5cfdcf 100644 --- a/services/blockchain-app-registry/package.json +++ b/services/blockchain-app-registry/package.json @@ -33,7 +33,7 @@ }, "dependencies": { "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz", "lodash": "^4.17.21", "octokit": "^2.0.4", "tar": "^6.1.11" diff --git a/services/blockchain-app-registry/yarn.lock b/services/blockchain-app-registry/yarn.lock index a08feac307..3d33beb262 100644 --- a/services/blockchain-app-registry/yarn.lock +++ b/services/blockchain-app-registry/yarn.lock @@ -3084,9 +3084,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-connector/package.json b/services/blockchain-connector/package.json index 893805d136..32b25efa04 100644 --- a/services/blockchain-connector/package.json +++ b/services/blockchain-connector/package.json @@ -39,7 +39,7 @@ "big-json": "^3.1.0", "bluebird": "^3.7.2", "knex": "^2.4.0", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz", "moment": "^2.29.4", "signals": "^1.0.0", "tar": "^6.1.11" diff --git a/services/blockchain-connector/yarn.lock b/services/blockchain-connector/yarn.lock index 817ee90d78..3ede1d2503 100644 --- a/services/blockchain-connector/yarn.lock +++ b/services/blockchain-connector/yarn.lock @@ -3926,9 +3926,9 @@ lines-and-columns@^1.1.6: resolved "https://npm.lisk.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-coordinator/package.json b/services/blockchain-coordinator/package.json index 82a9450554..cce33f92db 100644 --- a/services/blockchain-coordinator/package.json +++ b/services/blockchain-coordinator/package.json @@ -31,7 +31,7 @@ "dependencies": { "bluebird": "^3.7.2", "bull": "^4.8.1", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz" + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz" }, "devDependencies": { "@babel/preset-env": "^7.14.0", diff --git a/services/blockchain-coordinator/yarn.lock b/services/blockchain-coordinator/yarn.lock index df222fd2bb..940d5b3d99 100644 --- a/services/blockchain-coordinator/yarn.lock +++ b/services/blockchain-coordinator/yarn.lock @@ -3482,9 +3482,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-indexer/package.json b/services/blockchain-indexer/package.json index 1f1c2c4277..678e7500ad 100644 --- a/services/blockchain-indexer/package.json +++ b/services/blockchain-indexer/package.json @@ -38,7 +38,7 @@ "bull": "^4.8.1", "camelcase": "^6.3.0", "ioredis": "^4.28.5", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz", "lodash": "^4.17.21", "require-all": "^3.0.0" }, diff --git a/services/blockchain-indexer/yarn.lock b/services/blockchain-indexer/yarn.lock index 998cb2541b..8774385667 100644 --- a/services/blockchain-indexer/yarn.lock +++ b/services/blockchain-indexer/yarn.lock @@ -3638,9 +3638,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/export/package.json b/services/export/package.json index bb357b1b01..f47a3ab8df 100644 --- a/services/export/package.json +++ b/services/export/package.json @@ -36,7 +36,7 @@ "bull": "^3.29.2", "exceljs": "^4.3.0", "json2csv": "^5.0.6", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz", "minio": "^7.0.21", "moment": "^2.29.4", "moment-range": "^4.0.2", diff --git a/services/export/yarn.lock b/services/export/yarn.lock index 84a328bf4c..d1199b0bcf 100644 --- a/services/export/yarn.lock +++ b/services/export/yarn.lock @@ -3158,9 +3158,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/fee-estimator/package.json b/services/fee-estimator/package.json index ed2f9089b8..be9fd613c2 100644 --- a/services/fee-estimator/package.json +++ b/services/fee-estimator/package.json @@ -34,7 +34,7 @@ "@liskhq/lisk-cryptography": "4.0.0-rc.1", "@liskhq/lisk-transactions": "6.0.0-rc.1", "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz" + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz" }, "devDependencies": { "@babel/preset-env": "^7.14.0", diff --git a/services/fee-estimator/yarn.lock b/services/fee-estimator/yarn.lock index 73fe1ffc7b..d0c7241d77 100644 --- a/services/fee-estimator/yarn.lock +++ b/services/fee-estimator/yarn.lock @@ -3611,9 +3611,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/gateway/package.json b/services/gateway/package.json index ab9ca91b6a..69fc4d6967 100644 --- a/services/gateway/package.json +++ b/services/gateway/package.json @@ -33,7 +33,7 @@ "bluebird": "^3.7.2", "fastest-validator": "^1.10.1", "ioredis": "^4.27.1", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz", "moleculer": "^0.14.13", "moment": "^2.29.4", "rate-limiter-flexible": "^2.2.4", diff --git a/services/gateway/yarn.lock b/services/gateway/yarn.lock index 516f3691f6..3a71cfa944 100644 --- a/services/gateway/yarn.lock +++ b/services/gateway/yarn.lock @@ -2728,9 +2728,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/market/package.json b/services/market/package.json index 16512850e9..410211324a 100644 --- a/services/market/package.json +++ b/services/market/package.json @@ -32,7 +32,7 @@ "dependencies": { "bluebird": "^3.7.2", "joi": "^17.4.0", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz", "moment": "^2.29.4", "node-cron": "=2.0.3" }, diff --git a/services/market/yarn.lock b/services/market/yarn.lock index 006ae78681..1b3cb32b74 100644 --- a/services/market/yarn.lock +++ b/services/market/yarn.lock @@ -2768,9 +2768,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/template/package.json b/services/template/package.json index 1b0734c967..6bf4c105f0 100644 --- a/services/template/package.json +++ b/services/template/package.json @@ -30,7 +30,7 @@ "watch": "supervisor -w . -i ./node_modules app.js" }, "dependencies": { - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz", "node-cron": "=2.0.3" } } diff --git a/services/template/yarn.lock b/services/template/yarn.lock index 288d6201b5..390882007b 100644 --- a/services/template/yarn.lock +++ b/services/template/yarn.lock @@ -1022,9 +1022,9 @@ leven@2.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/transaction-statistics/package.json b/services/transaction-statistics/package.json index 4ef4c021a9..d1a38a5dc0 100644 --- a/services/transaction-statistics/package.json +++ b/services/transaction-statistics/package.json @@ -32,7 +32,7 @@ "dependencies": { "big-number": "=2.0.0", "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz", "moment": "^2.29.4" }, "devDependencies": { diff --git a/services/transaction-statistics/yarn.lock b/services/transaction-statistics/yarn.lock index a995b3f41e..3d1078a684 100644 --- a/services/transaction-statistics/yarn.lock +++ b/services/transaction-statistics/yarn.lock @@ -3437,9 +3437,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz": +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/5a99ede3b94447cb8f6fec5a9ebc8d61bd21da60/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" From b9c87e719f9f5d6066fbfb93f17791844f0fadb0 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Tue, 26 Sep 2023 16:04:22 +0200 Subject: [PATCH 55/71] Fix depencency build failing --- framework/yarn.lock | 12 ++++----- services/blockchain-app-registry/yarn.lock | 14 +++++----- services/blockchain-connector/yarn.lock | 30 +++++++++++----------- services/blockchain-coordinator/yarn.lock | 14 +++++----- services/blockchain-indexer/yarn.lock | 14 +++++----- services/export/yarn.lock | 14 +++++----- services/fee-estimator/yarn.lock | 14 +++++----- services/gateway/yarn.lock | 14 +++++----- services/market/yarn.lock | 14 +++++----- services/template/yarn.lock | 8 +++--- services/transaction-statistics/yarn.lock | 14 +++++----- tests/yarn.lock | 18 ++++++------- yarn.lock | 24 ++++++++--------- 13 files changed, 102 insertions(+), 102 deletions(-) diff --git a/framework/yarn.lock b/framework/yarn.lock index 0681e0c819..e904240648 100644 --- a/framework/yarn.lock +++ b/framework/yarn.lock @@ -639,9 +639,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/prettier@^2.1.5": version "2.7.3" @@ -1359,9 +1359,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.8.1: version "0.8.1" diff --git a/services/blockchain-app-registry/yarn.lock b/services/blockchain-app-registry/yarn.lock index 3d33beb262..223b26a243 100644 --- a/services/blockchain-app-registry/yarn.lock +++ b/services/blockchain-app-registry/yarn.lock @@ -879,9 +879,9 @@ "@types/node" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/prettier@^2.1.5": version "2.7.3" @@ -1642,9 +1642,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.8.1: version "0.8.1" @@ -3086,7 +3086,7 @@ lines-and-columns@^1.1.6: "lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-connector/yarn.lock b/services/blockchain-connector/yarn.lock index 3ede1d2503..2ca708a3a9 100644 --- a/services/blockchain-connector/yarn.lock +++ b/services/blockchain-connector/yarn.lock @@ -1387,9 +1387,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://npm.lisk.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://npm.lisk.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/node@11.11.6": version "11.11.6" @@ -2345,9 +2345,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://npm.lisk.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://npm.lisk.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.8.1: version "0.8.1" @@ -2828,12 +2828,12 @@ github-from-package@0.0.0: integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= glob@^10.2.2: - version "10.3.7" - resolved "https://npm.lisk.com/glob/-/glob-10.3.7.tgz#d5bd30a529c8c9b262fb4b217941f64ad90e25ac" - integrity sha512-wCMbE1m9Nx5yD9LYtgsVWq5VhHlk5WzJirw594qZR6AIvQYuHrdDtIktUVjQItalD53y7dqoedu9xP0u0WaxIQ== + version "10.3.9" + resolved "https://npm.lisk.com/glob/-/glob-10.3.9.tgz#181ae87640ecce9b2fc5b96e4e2d70b7c3629ab8" + integrity sha512-2tU/LKevAQvDVuVJ9pg9Yv9xcbSh+TqHuTaXTNbQwf+0kDl9Fm6bMovi4Nm5c8TVvfxo2LLcqCGtmO9KoJaGWg== dependencies: foreground-child "^3.1.0" - jackspeak "^2.0.3" + jackspeak "^2.3.5" minimatch "^9.0.1" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" @@ -3347,10 +3347,10 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jackspeak@^2.0.3: - version "2.3.3" - resolved "https://npm.lisk.com/jackspeak/-/jackspeak-2.3.3.tgz#95e4cbcc03b3eb357bf6bcce14a903fb3d1151e1" - integrity sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg== +jackspeak@^2.3.5: + version "2.3.5" + resolved "https://npm.lisk.com/jackspeak/-/jackspeak-2.3.5.tgz#443f237f9eeeb0d7c6ec34835ef5289bb4acb068" + integrity sha512-Ratx+B8WeXLAtRJn26hrhY8S1+Jz6pxPMrkrdkgb/NstTNiqMhX0/oFVu5wX+g5n6JlEu2LPsDJmY8nRP4+alw== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -3928,7 +3928,7 @@ lines-and-columns@^1.1.6: "lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-coordinator/yarn.lock b/services/blockchain-coordinator/yarn.lock index 940d5b3d99..46f93a07dd 100644 --- a/services/blockchain-coordinator/yarn.lock +++ b/services/blockchain-coordinator/yarn.lock @@ -1321,9 +1321,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/prettier@^2.1.5": version "2.7.3" @@ -2085,9 +2085,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.8.1: version "0.8.1" @@ -3484,7 +3484,7 @@ lines-and-columns@^1.1.6: "lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-indexer/yarn.lock b/services/blockchain-indexer/yarn.lock index 8774385667..b302d8389c 100644 --- a/services/blockchain-indexer/yarn.lock +++ b/services/blockchain-indexer/yarn.lock @@ -1375,9 +1375,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/node@11.11.6": version "11.11.6" @@ -2217,9 +2217,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.8.1: version "0.8.1" @@ -3640,7 +3640,7 @@ lines-and-columns@^1.1.6: "lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/export/yarn.lock b/services/export/yarn.lock index d1199b0bcf..3b661c231e 100644 --- a/services/export/yarn.lock +++ b/services/export/yarn.lock @@ -670,9 +670,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/node@11.11.6": version "11.11.6" @@ -1611,9 +1611,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.8.1: version "0.8.1" @@ -3160,7 +3160,7 @@ lines-and-columns@^1.1.6: "lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/fee-estimator/yarn.lock b/services/fee-estimator/yarn.lock index d0c7241d77..ef288c67ac 100644 --- a/services/fee-estimator/yarn.lock +++ b/services/fee-estimator/yarn.lock @@ -1345,9 +1345,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/node@11.11.6": version "11.11.6" @@ -2185,9 +2185,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.8.1: version "0.8.1" @@ -3613,7 +3613,7 @@ lines-and-columns@^1.1.6: "lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/gateway/yarn.lock b/services/gateway/yarn.lock index 3a71cfa944..e553a1d9c7 100644 --- a/services/gateway/yarn.lock +++ b/services/gateway/yarn.lock @@ -628,9 +628,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/prettier@^2.1.5": version "2.7.3" @@ -1341,9 +1341,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.8.1: version "0.8.1" @@ -2730,7 +2730,7 @@ lines-and-columns@^1.1.6: "lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/market/yarn.lock b/services/market/yarn.lock index 1b3cb32b74..d8ba26e7dd 100644 --- a/services/market/yarn.lock +++ b/services/market/yarn.lock @@ -657,9 +657,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/prettier@^2.1.5": version "2.7.3" @@ -1370,9 +1370,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.8.1: version "0.8.1" @@ -2770,7 +2770,7 @@ lines-and-columns@^1.1.6: "lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/template/yarn.lock b/services/template/yarn.lock index 390882007b..cebcb7d2a2 100644 --- a/services/template/yarn.lock +++ b/services/template/yarn.lock @@ -45,9 +45,9 @@ "@types/node" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== accepts@~1.3.4: version "1.3.8" @@ -1024,7 +1024,7 @@ leven@2.1.0: "lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/transaction-statistics/yarn.lock b/services/transaction-statistics/yarn.lock index 3d1078a684..a151591ffd 100644 --- a/services/transaction-statistics/yarn.lock +++ b/services/transaction-statistics/yarn.lock @@ -1291,9 +1291,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/prettier@^2.1.5": version "2.7.3" @@ -2040,9 +2040,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.8.1: version "0.8.1" @@ -3439,7 +3439,7 @@ lines-and-columns@^1.1.6: "lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#f27129fac534220bb29b79760408dbc2d0cc977e" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/tests/yarn.lock b/tests/yarn.lock index 24072dcb3a..c47a848bd0 100644 --- a/tests/yarn.lock +++ b/tests/yarn.lock @@ -1506,9 +1506,9 @@ integrity sha512-hvD1Yz0xugpvbFNVihc0Eu60Y/o1dD8LmSdN4d5QHV315ljuVGlwS5DYrb3RqFi6JskDC0Xi6/Bv6aEe/1A9bw== "@types/node@*", "@types/node@>=10.0.0": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/node@11.11.6": version "11.11.6" @@ -2835,9 +2835,9 @@ duplexer3@^0.1.4: integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.7.1: version "0.7.2" @@ -3257,9 +3257,9 @@ get-caller-file@^2.0.1: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1: version "1.2.1" diff --git a/yarn.lock b/yarn.lock index addee4006e..540224ad10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -310,9 +310,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.6.1": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.1.tgz#8c4bb756cc2aa7eaf13cfa5e69c83afb3260c20c" - integrity sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ== + version "4.8.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.2.tgz#26585b7c0ba36362893d3a3c206ee0c57c389616" + integrity sha512-0MGxAVt1m/ZK+LTJp/j0qF7Hz97D9O/FH9Ms3ltnyIdDD57cbb1ACIQTkbHvNXtWDv5TPq7w5Kq56+cNukbo7g== "@eslint/eslintrc@^0.4.0": version "0.4.3" @@ -695,9 +695,9 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/node@*": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + version "20.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" + integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== "@types/prettier@^2.1.5": version "2.7.3" @@ -705,9 +705,9 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/semver@^7.3.12": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.2.tgz#31f6eec1ed7ec23f4f05608d3a2d381df041f564" - integrity sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw== + version "7.5.3" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" + integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== "@types/stack-utils@^2.0.0": version "2.0.1" @@ -1478,9 +1478,9 @@ domexception@^2.0.1: webidl-conversions "^5.0.0" electron-to-chromium@^1.4.526: - version "1.4.528" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" - integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + version "1.4.529" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" + integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== emittery@^0.8.1: version "0.8.1" From 06f23c9d814e2d15ec098ba64f2e2d1c53fefdfa Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Sun, 1 Oct 2023 23:36:38 +0200 Subject: [PATCH 56/71] Rebuild dependencies --- framework/yarn.lock | 38 ++++----- services/blockchain-app-registry/yarn.lock | 44 +++++----- services/blockchain-connector/yarn.lock | 66 +++++++-------- services/blockchain-coordinator/yarn.lock | 54 ++++++------ services/blockchain-indexer/yarn.lock | 54 ++++++------ services/export/yarn.lock | 44 +++++----- services/fee-estimator/yarn.lock | 54 ++++++------ services/gateway/yarn.lock | 44 +++++----- services/market/yarn.lock | 44 +++++----- services/template/yarn.lock | 12 +-- services/transaction-statistics/yarn.lock | 54 ++++++------ tests/yarn.lock | 95 ++++++++++------------ yarn.lock | 45 ++++------ 13 files changed, 315 insertions(+), 333 deletions(-) diff --git a/framework/yarn.lock b/framework/yarn.lock index b146fee0e2..24b47f6c55 100644 --- a/framework/yarn.lock +++ b/framework/yarn.lock @@ -639,9 +639,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/prettier@^2.1.5": version "2.7.3" @@ -897,9 +897,9 @@ base64id@2.0.0, base64id@~2.0.0: integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== better-sqlite3@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.6.0.tgz#a20717993742f816158f17e2cccd88a979e77e58" - integrity sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g== + version "8.7.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.7.0.tgz#bcc341856187b1d110a8a47234fa89c48c8ef538" + integrity sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -959,12 +959,12 @@ browser-process-hrtime@^1.0.0: integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -1037,10 +1037,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1358,10 +1358,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.8.1: version "0.8.1" diff --git a/services/blockchain-app-registry/yarn.lock b/services/blockchain-app-registry/yarn.lock index 237a77be59..fd77d27b4b 100644 --- a/services/blockchain-app-registry/yarn.lock +++ b/services/blockchain-app-registry/yarn.lock @@ -879,9 +879,9 @@ "@types/node" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/prettier@^2.1.5": version "2.7.3" @@ -1143,9 +1143,9 @@ before-after-hook@^2.2.0: integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== better-sqlite3@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.6.0.tgz#a20717993742f816158f17e2cccd88a979e77e58" - integrity sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g== + version "8.7.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.7.0.tgz#bcc341856187b1d110a8a47234fa89c48c8ef538" + integrity sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -1215,12 +1215,12 @@ browser-process-hrtime@^1.0.0: integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -1303,10 +1303,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1641,10 +1641,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.8.1: version "0.8.1" @@ -3084,9 +3084,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-connector/yarn.lock b/services/blockchain-connector/yarn.lock index 4df340c27b..f0bc545e7e 100644 --- a/services/blockchain-connector/yarn.lock +++ b/services/blockchain-connector/yarn.lock @@ -1387,9 +1387,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://npm.lisk.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://npm.lisk.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/node@11.11.6": version "11.11.6" @@ -1758,9 +1758,9 @@ better-sqlite3@^7.6.2: prebuild-install "^7.1.0" better-sqlite3@^8.5.0: - version "8.6.0" - resolved "https://npm.lisk.com/better-sqlite3/-/better-sqlite3-8.6.0.tgz#a20717993742f816158f17e2cccd88a979e77e58" - integrity sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g== + version "8.7.0" + resolved "https://npm.lisk.com/better-sqlite3/-/better-sqlite3-8.7.0.tgz#bcc341856187b1d110a8a47234fa89c48c8ef538" + integrity sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -1853,13 +1853,13 @@ browser-process-hrtime@^1.0.0: resolved "https://npm.lisk.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.21.10, browserslist@^4.21.9: - version "4.22.0" - resolved "https://npm.lisk.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== +browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://npm.lisk.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -1955,10 +1955,10 @@ camelcase@^6.2.0: resolved "https://npm.lisk.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://npm.lisk.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://npm.lisk.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -2121,11 +2121,11 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.32.2" - resolved "https://npm.lisk.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" - integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== + version "3.33.0" + resolved "https://npm.lisk.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== dependencies: - browserslist "^4.21.10" + browserslist "^4.22.1" core-util-is@~1.0.0: version "1.0.3" @@ -2344,10 +2344,10 @@ ee-first@1.1.1: resolved "https://npm.lisk.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://npm.lisk.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://npm.lisk.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.8.1: version "0.8.1" @@ -3348,9 +3348,9 @@ istanbul-reports@^3.1.3: istanbul-lib-report "^3.0.0" jackspeak@^2.3.5: - version "2.3.5" - resolved "https://npm.lisk.com/jackspeak/-/jackspeak-2.3.5.tgz#443f237f9eeeb0d7c6ec34835ef5289bb4acb068" - integrity sha512-Ratx+B8WeXLAtRJn26hrhY8S1+Jz6pxPMrkrdkgb/NstTNiqMhX0/oFVu5wX+g5n6JlEu2LPsDJmY8nRP4+alw== + version "2.3.6" + resolved "https://npm.lisk.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -3926,9 +3926,9 @@ lines-and-columns@^1.1.6: resolved "https://npm.lisk.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" @@ -4203,9 +4203,9 @@ minipass@^5.0.0: integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: - version "7.0.3" - resolved "https://npm.lisk.com/minipass/-/minipass-7.0.3.tgz#05ea638da44e475037ed94d1c7efcc76a25e1974" - integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg== + version "7.0.4" + resolved "https://npm.lisk.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" diff --git a/services/blockchain-coordinator/yarn.lock b/services/blockchain-coordinator/yarn.lock index 4c131eaadf..f598dc1e7c 100644 --- a/services/blockchain-coordinator/yarn.lock +++ b/services/blockchain-coordinator/yarn.lock @@ -1321,9 +1321,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/prettier@^2.1.5": version "2.7.3" @@ -1596,9 +1596,9 @@ base64id@2.0.0, base64id@~2.0.0: integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== better-sqlite3@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.6.0.tgz#a20717993742f816158f17e2cccd88a979e77e58" - integrity sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g== + version "8.7.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.7.0.tgz#bcc341856187b1d110a8a47234fa89c48c8ef538" + integrity sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -1662,13 +1662,13 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.21.10, browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== +browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -1754,10 +1754,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1892,11 +1892,11 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" - integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== dependencies: - browserslist "^4.21.10" + browserslist "^4.22.1" cors@~2.8.5: version "2.8.5" @@ -2084,10 +2084,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.8.1: version "0.8.1" @@ -3482,9 +3482,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-indexer/yarn.lock b/services/blockchain-indexer/yarn.lock index c1b019ace6..fa99db3b1e 100644 --- a/services/blockchain-indexer/yarn.lock +++ b/services/blockchain-indexer/yarn.lock @@ -1375,9 +1375,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/node@11.11.6": version "11.11.6" @@ -1682,9 +1682,9 @@ base64id@2.0.0, base64id@~2.0.0: integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== better-sqlite3@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.6.0.tgz#a20717993742f816158f17e2cccd88a979e77e58" - integrity sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g== + version "8.7.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.7.0.tgz#bcc341856187b1d110a8a47234fa89c48c8ef538" + integrity sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -1758,13 +1758,13 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.21.10, browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== +browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -1855,10 +1855,10 @@ camelcase@^6.2.0, camelcase@^6.3.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -2001,11 +2001,11 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" - integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== dependencies: - browserslist "^4.21.10" + browserslist "^4.22.1" cors@~2.8.5: version "2.8.5" @@ -2216,10 +2216,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.8.1: version "0.8.1" @@ -3638,9 +3638,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/export/yarn.lock b/services/export/yarn.lock index ab7dc0d896..9e3e3520af 100644 --- a/services/export/yarn.lock +++ b/services/export/yarn.lock @@ -670,9 +670,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/node@11.11.6": version "11.11.6" @@ -986,9 +986,9 @@ base64id@2.0.0, base64id@~2.0.0: integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== better-sqlite3@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.6.0.tgz#a20717993742f816158f17e2cccd88a979e77e58" - integrity sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g== + version "8.7.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.7.0.tgz#bcc341856187b1d110a8a47234fa89c48c8ef538" + integrity sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -1100,12 +1100,12 @@ browser-process-hrtime@^1.0.0: integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -1198,10 +1198,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== chainsaw@~0.1.0: version "0.1.0" @@ -1610,10 +1610,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.8.1: version "0.8.1" @@ -3158,9 +3158,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/fee-estimator/yarn.lock b/services/fee-estimator/yarn.lock index 4379323bd4..82dad4b14e 100644 --- a/services/fee-estimator/yarn.lock +++ b/services/fee-estimator/yarn.lock @@ -1345,9 +1345,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/node@11.11.6": version "11.11.6" @@ -1652,9 +1652,9 @@ base64id@2.0.0, base64id@~2.0.0: integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== better-sqlite3@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.6.0.tgz#a20717993742f816158f17e2cccd88a979e77e58" - integrity sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g== + version "8.7.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.7.0.tgz#bcc341856187b1d110a8a47234fa89c48c8ef538" + integrity sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -1728,13 +1728,13 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.21.10, browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== +browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -1812,10 +1812,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== casual-browserify@^1.5.19: version "1.5.19" @@ -1971,11 +1971,11 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" - integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== dependencies: - browserslist "^4.21.10" + browserslist "^4.22.1" cors@~2.8.5: version "2.8.5" @@ -2184,10 +2184,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.8.1: version "0.8.1" @@ -3611,9 +3611,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/gateway/yarn.lock b/services/gateway/yarn.lock index 05d5f93153..fdd1a0f69c 100644 --- a/services/gateway/yarn.lock +++ b/services/gateway/yarn.lock @@ -628,9 +628,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/prettier@^2.1.5": version "2.7.3" @@ -879,9 +879,9 @@ base64id@2.0.0, base64id@~2.0.0: integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== better-sqlite3@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.6.0.tgz#a20717993742f816158f17e2cccd88a979e77e58" - integrity sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g== + version "8.7.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.7.0.tgz#bcc341856187b1d110a8a47234fa89c48c8ef538" + integrity sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -946,12 +946,12 @@ browser-process-hrtime@^1.0.0: integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -1024,10 +1024,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1340,10 +1340,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.8.1: version "0.8.1" @@ -2728,9 +2728,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/market/yarn.lock b/services/market/yarn.lock index f61ad61bbf..75de746b02 100644 --- a/services/market/yarn.lock +++ b/services/market/yarn.lock @@ -657,9 +657,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/prettier@^2.1.5": version "2.7.3" @@ -908,9 +908,9 @@ base64id@2.0.0, base64id@~2.0.0: integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== better-sqlite3@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.6.0.tgz#a20717993742f816158f17e2cccd88a979e77e58" - integrity sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g== + version "8.7.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.7.0.tgz#bcc341856187b1d110a8a47234fa89c48c8ef538" + integrity sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -975,12 +975,12 @@ browser-process-hrtime@^1.0.0: integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -1053,10 +1053,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1369,10 +1369,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.8.1: version "0.8.1" @@ -2768,9 +2768,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/template/yarn.lock b/services/template/yarn.lock index cebcb7d2a2..f5bbab772f 100644 --- a/services/template/yarn.lock +++ b/services/template/yarn.lock @@ -45,9 +45,9 @@ "@types/node" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== accepts@~1.3.4: version "1.3.8" @@ -134,9 +134,9 @@ base64id@2.0.0, base64id@~2.0.0: integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== better-sqlite3@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.6.0.tgz#a20717993742f816158f17e2cccd88a979e77e58" - integrity sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g== + version "8.7.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.7.0.tgz#bcc341856187b1d110a8a47234fa89c48c8ef538" + integrity sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" diff --git a/services/transaction-statistics/yarn.lock b/services/transaction-statistics/yarn.lock index b14bd8b9f9..0118be847e 100644 --- a/services/transaction-statistics/yarn.lock +++ b/services/transaction-statistics/yarn.lock @@ -1291,9 +1291,9 @@ "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/prettier@^2.1.5": version "2.7.3" @@ -1566,9 +1566,9 @@ base64id@2.0.0, base64id@~2.0.0: integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== better-sqlite3@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.6.0.tgz#a20717993742f816158f17e2cccd88a979e77e58" - integrity sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g== + version "8.7.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.7.0.tgz#bcc341856187b1d110a8a47234fa89c48c8ef538" + integrity sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -1637,13 +1637,13 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.21.10, browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== +browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -1716,10 +1716,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1854,11 +1854,11 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" - integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== dependencies: - browserslist "^4.21.10" + browserslist "^4.22.1" cors@~2.8.5: version "2.8.5" @@ -2039,10 +2039,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.8.1: version "0.8.1" @@ -3437,9 +3437,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz": - version "1.5.1" - resolved "https://github.com/LiskHQ/lisk-service/raw/bf8048b920f61a2b27d7c28535dfefed5bd679cb/framework/dist/lisk-service-framework-1.5.1.tgz#2283db2156d98ed1b39ff30d01838774a755a78e" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz": + version "1.6.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/55dede525e8d968d2c6f19202cc789fc6d013311/framework/dist/lisk-service-framework-1.6.0.tgz#c9221dcf6203896f7f9ff4974b281ea1bb782478" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/tests/yarn.lock b/tests/yarn.lock index b30fc27839..39f8949177 100644 --- a/tests/yarn.lock +++ b/tests/yarn.lock @@ -1501,14 +1501,14 @@ "@types/node" "*" "@types/methods@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/methods/-/methods-1.1.1.tgz#4a440afcd01b687d267f2c61c7c1328b86c40172" - integrity sha512-hvD1Yz0xugpvbFNVihc0Eu60Y/o1dD8LmSdN4d5QHV315ljuVGlwS5DYrb3RqFi6JskDC0Xi6/Bv6aEe/1A9bw== + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/methods/-/methods-1.1.2.tgz#d01479b2a10dd5a0bdbe4642f51893911b26d6bb" + integrity sha512-YdYv53Z4sI21tIvCE6OQA6EtEjV75aBHGgwfp6yQ5oH1FWA0N9wnt5aiFktx07Hln50sw+t95cgQPewANd+/Vg== "@types/node@*", "@types/node@>=10.0.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/node@11.11.6": version "11.11.6" @@ -1526,9 +1526,9 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.1.tgz#1dd57e54509b3b95c7958e52709567077019d65d" + integrity sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg== dependencies: "@types/node" "*" @@ -2074,13 +2074,13 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.21.10, browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== +browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -2170,10 +2170,10 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== capture-exit@^2.0.0: version "2.0.0" @@ -2188,17 +2188,17 @@ capture-stack-trace@^1.0.0: integrity sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w== chai@^4.3.6: - version "4.3.8" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.8.tgz#40c59718ad6928da6629c70496fe990b2bb5b17c" - integrity sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ== + version "4.3.10" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.10.tgz#d784cec635e3b7e2ffb66446a63b4e33bd390384" + integrity sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g== dependencies: assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^4.1.2" - get-func-name "^2.0.0" - loupe "^2.3.1" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" pathval "^1.1.1" - type-detect "^4.0.5" + type-detect "^4.0.8" chalk@1.1.3: version "1.1.3" @@ -2238,10 +2238,12 @@ charenc@0.0.2: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" cheerio-select@^2.1.0: version "2.1.0" @@ -2477,11 +2479,11 @@ copy-descriptor@^0.1.0: integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" - integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== dependencies: - browserslist "^4.21.10" + browserslist "^4.22.1" core-util-is@~1.0.0: version "1.0.3" @@ -2672,7 +2674,7 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" -deep-eql@^4.1.2: +deep-eql@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== @@ -2834,17 +2836,10 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== -<<<<<<< HEAD -electron-to-chromium@^1.4.526: - version "1.4.529" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" - integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== -======= -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== ->>>>>>> release/0.7.0 +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.7.1: version "0.7.2" @@ -3263,7 +3258,7 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-func-name@^2.0.0: +get-func-name@^2.0.0, get-func-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== @@ -4699,7 +4694,7 @@ log4js@^6.4.7: rfdc "^1.3.0" streamroller "^3.1.5" -loupe@^2.3.1: +loupe@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== @@ -6414,7 +6409,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== diff --git a/yarn.lock b/yarn.lock index d4d2cab423..99b0d47c72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -310,15 +310,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.6.1": -<<<<<<< HEAD - version "4.8.2" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.2.tgz#26585b7c0ba36362893d3a3c206ee0c57c389616" - integrity sha512-0MGxAVt1m/ZK+LTJp/j0qF7Hz97D9O/FH9Ms3ltnyIdDD57cbb1ACIQTkbHvNXtWDv5TPq7w5Kq56+cNukbo7g== -======= version "4.9.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.0.tgz#7ccb5f58703fa61ffdcbf39e2c604a109e781162" integrity sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ== ->>>>>>> release/0.7.0 "@eslint/eslintrc@^0.4.0": version "0.4.3" @@ -701,9 +695,9 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/node@*": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/prettier@^2.1.5": version "2.7.3" @@ -1182,12 +1176,12 @@ browser-process-hrtime@^1.0.0: integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -1226,10 +1220,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001539: - version "1.0.30001540" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz#a316ca4f2ae673ab02ff0ec533334016d56ff658" - integrity sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw== +caniuse-lite@^1.0.30001541: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== chalk@^2.4.2: version "2.4.2" @@ -1483,17 +1477,10 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -<<<<<<< HEAD -electron-to-chromium@^1.4.526: - version "1.4.529" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz#8c3377a05e5737f899770d14524dd8e2e4cb2351" - integrity sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A== -======= -electron-to-chromium@^1.4.530: - version "1.4.531" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz#22966d894c4680726c17cf2908ee82ff5d26ac25" - integrity sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ== ->>>>>>> release/0.7.0 +electron-to-chromium@^1.4.535: + version "1.4.537" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz#aac4101db53066be1e49baedd000a26bc754adc9" + integrity sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA== emittery@^0.8.1: version "0.8.1" From 0880abc7866ca5ffd40ddf0ac945632054aa54fe Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Mon, 2 Oct 2023 09:36:02 +0200 Subject: [PATCH 57/71] Trigger From 6b195acdd95e5b9d9af1e4960c936e102d3174a9 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Mon, 2 Oct 2023 10:40:39 +0200 Subject: [PATCH 58/71] Trigger From 15e6c12225a312bee098929e8a9b86d1fd1c254f Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Fri, 6 Oct 2023 17:17:24 +0200 Subject: [PATCH 59/71] Apply suggestion --- services/blockchain-indexer/shared/indexer/accountIndex.js | 1 + services/blockchain-indexer/shared/messageProcessor.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/accountIndex.js b/services/blockchain-indexer/shared/indexer/accountIndex.js index 76b9403e63..c08cc47ebc 100644 --- a/services/blockchain-indexer/shared/indexer/accountIndex.js +++ b/services/blockchain-indexer/shared/indexer/accountIndex.js @@ -115,6 +115,7 @@ module.exports = { indexAccountPublicKey, indexAccountAddress, triggerAccountUpdates, + accountAddrUpdateQueue, // Testing updateAccountInfoPk, diff --git a/services/blockchain-indexer/shared/messageProcessor.js b/services/blockchain-indexer/shared/messageProcessor.js index 390666e189..31b8704fe7 100644 --- a/services/blockchain-indexer/shared/messageProcessor.js +++ b/services/blockchain-indexer/shared/messageProcessor.js @@ -26,7 +26,6 @@ const logger = Logger(); const { initNodeConstants } = require('./constants'); -const { addAccountToDirectUpdateQueue } = require('./indexer/accountIndex'); const { addHeightToIndexBlocksQueue, scheduleBlockDeletion, @@ -42,6 +41,7 @@ const { getNumberOfGenerators, normalizeBlocks, } = require('./dataService'); +const { accountAddrUpdateQueue } = require('./indexer/accountIndex'); const STATS_INTERVAL = 1 * 60 * 1000; // ms @@ -126,7 +126,7 @@ const initMessageProcessors = async () => { accountMessageQueue.process(async (job) => { const { account } = job.data; logger.debug(`Scheduling indexing for account with address: ${account.address}.`); - await addAccountToDirectUpdateQueue(account); + await accountAddrUpdateQueue.add(account); }); logger.info(`Registering job processor for ${blockMessageQueue.name} message queue.`); From 94829aeac45cdf3163a71051979be58aea39fbdf Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Mon, 9 Oct 2023 09:49:25 +0200 Subject: [PATCH 60/71] Trigger From d2143aedda11b3dc7e6f5d0c12c2ef1d73a95c69 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Wed, 11 Oct 2023 17:10:54 +0200 Subject: [PATCH 61/71] Fix indexing does not start because of undefined metadata --- .../blockchain-connector/shared/sdk/index.js | 8 +++--- .../blockchain-connector/shared/sdk/pos.js | 25 ++++++++++++------- .../shared/utils/requestAll.js | 2 +- services/export/shared/requestAll.js | 2 +- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/services/blockchain-connector/shared/sdk/index.js b/services/blockchain-connector/shared/sdk/index.js index a40f65233d..f62c9b9bd0 100644 --- a/services/blockchain-connector/shared/sdk/index.js +++ b/services/blockchain-connector/shared/sdk/index.js @@ -119,16 +119,16 @@ const { formatTransaction } = require('./formatter'); const { encodeCCM } = require('./encoder'); const init = async () => { + // Cache all the schemas + setSchemas(await getSchemas()); + setMetadata(await getSystemMetadata()); + // Initialize the local cache await getNodeInfo(true); await cacheRegisteredRewardModule(); await cacheFeeConstants(); await updateTokenInfo(); - // Cache all the schemas - setSchemas(await getSchemas()); - setMetadata(await getSystemMetadata()); - // Download the genesis block, if applicable await getGenesisBlock(); }; diff --git a/services/blockchain-connector/shared/sdk/pos.js b/services/blockchain-connector/shared/sdk/pos.js index 5bbec49a76..87e812eca2 100644 --- a/services/blockchain-connector/shared/sdk/pos.js +++ b/services/blockchain-connector/shared/sdk/pos.js @@ -26,6 +26,8 @@ const { getGenesisHeight } = require('./genesisBlock'); const logger = Logger(); +let posModuleConstants; + const getPosValidator = async (address) => { try { const validator = await invokeEndpoint('pos_getValidator', { address }); @@ -66,17 +68,22 @@ const getPosValidatorsByStake = async (limit) => { }; const getPosConstants = async () => { - try { - const response = await invokeEndpoint('pos_getConstants'); - if (response.error) throw new Error(response.error); - return response; - } catch (err) { - if (err.message.includes(timeoutMessage)) { - throw new TimeoutException('Request timed out when calling \'getPosConstants\'.'); + if (typeof posModuleConstants === 'undefined') { + try { + const response = await invokeEndpoint('pos_getConstants'); + + if (response.error) throw new Error(response.error); + posModuleConstants = response; + } catch (err) { + if (err.message.includes(timeoutMessage)) { + throw new TimeoutException('Request timed out when calling \'getPosConstants\'.'); + } + logger.warn(`Error returned when invoking 'pos_getConstants'.\n${err.stack}`); + throw err; } - logger.warn(`Error returned when invoking 'pos_getConstants'.\n${err.stack}`); - throw err; } + + return posModuleConstants; }; const getPosPendingUnlocks = async (address) => { diff --git a/services/blockchain-indexer/shared/utils/requestAll.js b/services/blockchain-indexer/shared/utils/requestAll.js index e74cf93323..ecf1eed12d 100644 --- a/services/blockchain-indexer/shared/utils/requestAll.js +++ b/services/blockchain-indexer/shared/utils/requestAll.js @@ -16,7 +16,7 @@ const { Utils } = require('lisk-service-framework'); const requestAll = async (fn, method, params, limit) => { - const maxAmount = limit || 1e9; + const maxAmount = limit || Number.MAX_SAFE_INTEGER; const oneRequestLimit = params.limit || 100; const firstRequest = await fn(method, { diff --git a/services/export/shared/requestAll.js b/services/export/shared/requestAll.js index e4a4bf704a..6cb6ea6f14 100644 --- a/services/export/shared/requestAll.js +++ b/services/export/shared/requestAll.js @@ -50,7 +50,7 @@ const requestAllStandard = async (fn, params, limit) => { }; const requestAllCustom = async (fn, method, params, limit) => { - const maxAmount = limit || 1e9; + const maxAmount = limit || Number.MAX_SAFE_INTEGER; const oneRequestLimit = params.limit || 100; const firstRequest = await fn(method, { From cfd4cdeeee394a7f4c2a19008e6272d1ccd03602 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Thu, 12 Oct 2023 13:59:53 +0200 Subject: [PATCH 62/71] Fix genesis block indexing gets stuck when connector is unresponsive --- .../shared/indexer/blockchainIndex.js | 108 ++++++++++-------- 1 file changed, 59 insertions(+), 49 deletions(-) diff --git a/services/blockchain-indexer/shared/indexer/blockchainIndex.js b/services/blockchain-indexer/shared/indexer/blockchainIndex.js index 420cb43c2c..a1e9d709d8 100644 --- a/services/blockchain-indexer/shared/indexer/blockchainIndex.js +++ b/services/blockchain-indexer/shared/indexer/blockchainIndex.js @@ -95,58 +95,60 @@ const indexBlock = async job => { const { height: blockHeightFromJobData } = job.data; let blockHeightToIndex = blockHeightFromJobData; let addressesToUpdateBalance = []; + let dbTrx; + let block; - const blocksTable = await getBlocksTable(); + try { + const blocksTable = await getBlocksTable(); - const [lastIndexedBlock = {}] = await blocksTable.find( - { - sort: 'height:desc', - limit: 1, - }, - ['height'], - ); + const [lastIndexedBlock = {}] = await blocksTable.find( + { + sort: 'height:desc', + limit: 1, + }, + ['height'], + ); - const { height: lastIndexedHeight } = lastIndexedBlock; + const { height: lastIndexedHeight } = lastIndexedBlock; - // Index last indexed block height + 1 and schedule the next block if there is a gap - if (lastIndexedHeight && lastIndexedHeight < blockHeightFromJobData - 1) { - blockHeightToIndex = lastIndexedHeight + 1; - // eslint-disable-next-line no-use-before-define - await addHeightToIndexBlocksQueue(blockHeightToIndex + 1); - } + // Index last indexed block height + 1 and schedule the next block if there is a gap + if (lastIndexedHeight && lastIndexedHeight < blockHeightFromJobData - 1) { + blockHeightToIndex = lastIndexedHeight + 1; + // eslint-disable-next-line no-use-before-define + await addHeightToIndexBlocksQueue(blockHeightToIndex + 1); + } - const [currentBlockInDB = {}] = await blocksTable.find( - { - where: { height: blockHeightToIndex }, - limit: 1, - }, - ['height'], - ); + const [currentBlockInDB = {}] = await blocksTable.find( + { + where: { height: blockHeightToIndex }, + limit: 1, + }, + ['height'], + ); - // If current block is already indexed, then index the highest indexed block height + 1 - if (Object.keys(currentBlockInDB).length) { - // Skip indexing if the blockchain is fully indexed. - const currentBlockchainHeight = await getCurrentHeight(); - if (lastIndexedHeight >= currentBlockchainHeight) return; + // If current block is already indexed, then index the highest indexed block height + 1 + if (Object.keys(currentBlockInDB).length) { + // Skip indexing if the blockchain is fully indexed. + const currentBlockchainHeight = await getCurrentHeight(); + if (lastIndexedHeight >= currentBlockchainHeight) return; - blockHeightToIndex = lastIndexedHeight + 1; - } + blockHeightToIndex = lastIndexedHeight + 1; + } - const block = await getBlockByHeight(blockHeightToIndex); - if (!validateBlock(block)) { - throw new Error(`Invalid block ${block.id} at height ${block.height}.`); - } + block = await getBlockByHeight(blockHeightToIndex); + if (!validateBlock(block)) { + throw new Error(`Invalid block ${block.id} at height ${block.height}.`); + } - // Create DB transaction. Queries from here sees a snapshot of the database - const connection = await getDBConnection(MYSQL_ENDPOINT); - const dbTrx = await startDBTransaction(connection); - logger.debug( - `Created new MySQL transaction to index block ${block.id} at height ${block.height}.`, - ); + // Create DB transaction. Queries from here sees a snapshot of the database + const connection = await getDBConnection(MYSQL_ENDPOINT); + dbTrx = await startDBTransaction(connection); + logger.debug( + `Created new MySQL transaction to index block ${block.id} at height ${block.height}.`, + ); - let blockReward = BigInt('0'); + let blockReward = BigInt('0'); - try { if (block.height === (await getGenesisHeight())) { await indexGenesisBlockAssets(dbTrx); } @@ -297,27 +299,35 @@ const indexBlock = async job => { `Committed MySQL transaction to index block ${block.id} at height ${block.height}.`, ); } catch (error) { - await rollbackDBTransaction(dbTrx); - // Reschedule the block for indexing // eslint-disable-next-line no-use-before-define await addHeightToIndexBlocksQueue(blockHeightToIndex); - logger.debug( - `Rolled back MySQL transaction to index block ${block.id} at height ${block.height}.`, - ); + // Block may not have been initialized when error occurred + const failedBlockInfo = { + id: typeof block === 'undefined' ? undefined : block.id, + height: typeof block === 'undefined' ? blockHeightToIndex : block.height, + }; + + // Processing may fail before a transaction is created + if (dbTrx) { + await rollbackDBTransaction(dbTrx); + logger.debug( + `Rolled back MySQL transaction to index block ${failedBlockInfo.id} at height ${failedBlockInfo.height}.`, + ); + } if ( ['Deadlock found when trying to get lock', 'ER_LOCK_DEADLOCK'].some(e => error.message.includes(e), ) ) { - const errMessage = `Deadlock encountered while indexing block ${block.id} at height ${block.height}. Will retry later. sql:${error.sql}`; + const errMessage = `Deadlock encountered while indexing block ${failedBlockInfo.id} at height ${failedBlockInfo.height}. Will retry later. sql:${error.sql}`; logger.warn(errMessage); throw new Error(errMessage); } logger.warn( - `Error occurred while indexing block ${block.id} at height ${block.height}. Will retry later.`, + `Error occurred while indexing block ${failedBlockInfo.id} at height ${failedBlockInfo.height}. Will retry later.`, ); logger.warn(error.stack); throw error; @@ -519,7 +529,7 @@ const indexBlockAtomicWrapper = async (job) => { await indexBlock(job); } catch (err) { isIndexingRunning = false; - logger.error(`Error occurred during indexing block.\nError: ${err.message}`); + logger.error(`Error occurred during indexing block.\nError: ${err.message}\nStack:${err.stack}`); throw new Error(err); } From 22b853ccab5413b6280ab321ba1abd6f783824f3 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Thu, 12 Oct 2023 15:15:10 +0200 Subject: [PATCH 63/71] Schedule 100k missing blocks at max --- services/blockchain-coordinator/shared/scheduler.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 229c2d1a0e..9e475aa39b 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -56,6 +56,7 @@ const accountMessageQueue = new MessageQueue( let intervalID; const REFRESH_INTERVAL = 30000; +const MAX_BLOCKS_TO_SCHEDULE = 10000; const getInProgressJobCount = async (queue) => { const jobCount = await queue.getJobCounts(); @@ -230,8 +231,11 @@ const scheduleMissingBlocksIndexing = async () => { const lastVerifiedHeight = await getIndexVerifiedHeight() || genesisHeight; // Lowest and highest block heights expected to be indexed - const blockIndexHigherRange = currentHeight; const blockIndexLowerRange = lastVerifiedHeight; + const blockIndexHigherRange = Math.min( + blockIndexLowerRange + MAX_BLOCKS_TO_SCHEDULE, + currentHeight, + ); try { const missingBlocksByHeight = []; From 68d3c0bceaa7b9cc2a359ca77526e28a7a2086da Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Thu, 12 Oct 2023 15:57:05 +0200 Subject: [PATCH 64/71] Fix indexer and coordinator is partially initalized --- .../blockchain-coordinator/shared/init.js | 51 ++++++++++--------- .../shared/scheduler.js | 1 + services/blockchain-indexer/shared/init.js | 7 +-- 3 files changed, 31 insertions(+), 28 deletions(-) diff --git a/services/blockchain-coordinator/shared/init.js b/services/blockchain-coordinator/shared/init.js index e680ace9cb..121671c65e 100644 --- a/services/blockchain-coordinator/shared/init.js +++ b/services/blockchain-coordinator/shared/init.js @@ -14,39 +14,40 @@ * */ const { Logger } = require('lisk-service-framework'); +const delay = require('lisk-service-framework/src/delay'); -const { requestIndexer } = require('./utils/request'); +const { requestConnector } = require('./utils/request'); const logger = Logger(); const NODE_SYNC_CHECK_INTERVAL = 15 * 1000; // in ms -let intervalID; +const waitForNodeToFinishSync = async () => { + let isNodeSyncComplete = false; -const waitForNodeToFinishSync = (resolve) => new Promise((res) => { - if (!resolve) resolve = res; - if (intervalID) { - clearInterval(intervalID); - intervalID = null; - } + // eslint-disable-next-line no-constant-condition + while (true) { + try { + // eslint-disable-next-line no-await-in-loop + const networkConstants = await requestConnector('getNetworkStatus'); + const { syncing } = networkConstants; + isNodeSyncComplete = !syncing; + + // eslint-disable-next-line no-unused-expressions + syncing + ? logger.info('Node synchronization in progress. Will wait for node to sync with the network before scheduling indexing.') + : logger.info('Node is fully synchronized with the network.'); + } catch (err) { + logger.warn(`Failed to check node synchronization status.\nError: ${err.message}`); + } + + // Break loop when node is synchronized + if (isNodeSyncComplete) break; - return requestIndexer('network.status').then(({ data: networkConstants }) => { - const { syncing } = networkConstants; - const isNodeSyncComplete = !syncing; - return syncing - ? (() => { - logger.info('Node synchronization in progress. Will wait for node to sync with the network before scheduling indexing.'); - intervalID = setInterval( - waitForNodeToFinishSync.bind(null, resolve), - NODE_SYNC_CHECK_INTERVAL, - ); - })() - : (() => { - logger.info('Node is fully synchronized with the network.'); - return resolve(isNodeSyncComplete); - })(); - }); -}); + // eslint-disable-next-line no-await-in-loop + await delay(NODE_SYNC_CHECK_INTERVAL); + } +}; module.exports = { waitForNodeToFinishSync, diff --git a/services/blockchain-coordinator/shared/scheduler.js b/services/blockchain-coordinator/shared/scheduler.js index 9e475aa39b..df328fe7b8 100644 --- a/services/blockchain-coordinator/shared/scheduler.js +++ b/services/blockchain-coordinator/shared/scheduler.js @@ -287,6 +287,7 @@ const init = async () => { } catch (err) { logger.error(`Unable to initialize coordinator due to: ${err.message}.`); logger.trace(err.stack); + throw err; } }; diff --git a/services/blockchain-indexer/shared/init.js b/services/blockchain-indexer/shared/init.js index 3dc5db10e3..610413bb9b 100644 --- a/services/blockchain-indexer/shared/init.js +++ b/services/blockchain-indexer/shared/init.js @@ -61,9 +61,10 @@ const init = async () => { if (config.operations.isIndexingModeEnabled) { await messageProcessor.init(); } - } catch (error) { - logger.error(`Unable to initialize due to: ${error.message}. Try restarting the application.`); - logger.trace(error.stack); + } catch (err) { + logger.error(`Unable to initialize due to: ${err.message}. Try restarting the application.`); + logger.trace(err.stack); + throw err; } }; From 15dc8b9a73777cdacc4aec7e2eeeb360ce3f3351 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Tue, 17 Oct 2023 10:53:28 +0200 Subject: [PATCH 65/71] Refactor consistency test files directory --- .../http/blocks.test.js} | 4 ++-- .../http/stakers.test.js} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename tests/integration/api_v3/{http/consistency_blocks.test.js => consistency/http/blocks.test.js} (95%) rename tests/integration/api_v3/{http/consistency_stakers.test.js => consistency/http/stakers.test.js} (96%) diff --git a/tests/integration/api_v3/http/consistency_blocks.test.js b/tests/integration/api_v3/consistency/http/blocks.test.js similarity index 95% rename from tests/integration/api_v3/http/consistency_blocks.test.js rename to tests/integration/api_v3/consistency/http/blocks.test.js index 9957623777..56ea6717c8 100644 --- a/tests/integration/api_v3/http/consistency_blocks.test.js +++ b/tests/integration/api_v3/consistency/http/blocks.test.js @@ -15,8 +15,8 @@ */ jest.setTimeout(2147483647); -const config = require('../../../config'); -const { api } = require('../../../helpers/api'); +const config = require('../../../../config'); +const { api } = require('../../../../helpers/api'); // Add all the service endpoints to the array that you wish to compare the data against const baseUrls = [config.SERVICE_ENDPOINT]; diff --git a/tests/integration/api_v3/http/consistency_stakers.test.js b/tests/integration/api_v3/consistency/http/stakers.test.js similarity index 96% rename from tests/integration/api_v3/http/consistency_stakers.test.js rename to tests/integration/api_v3/consistency/http/stakers.test.js index d18ba97ecd..48a8723003 100644 --- a/tests/integration/api_v3/http/consistency_stakers.test.js +++ b/tests/integration/api_v3/consistency/http/stakers.test.js @@ -15,8 +15,8 @@ */ jest.setTimeout(2147483647); -const config = require('../../../config'); -const { api } = require('../../../helpers/api'); +const config = require('../../../../config'); +const { api } = require('../../../../helpers/api'); // Add all the service endpoints to the array that you wish to compare the data against const baseUrls = [config.SERVICE_ENDPOINT, config.SERVICE_ENDPOINT]; From 17c654e6e69507a99d69bed51ba6a5e667838eee Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Tue, 17 Oct 2023 10:57:38 +0200 Subject: [PATCH 66/71] Include consistency directory in jest config --- tests/jest.config.integration.apiv3.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/jest.config.integration.apiv3.js b/tests/jest.config.integration.apiv3.js index fc515ea14c..34873131e8 100644 --- a/tests/jest.config.integration.apiv3.js +++ b/tests/jest.config.integration.apiv3.js @@ -20,6 +20,8 @@ module.exports = { '/integration/api_v3/rpc/*.test.js', '/integration/api_v3/events/*.test.js', '/integration/gateway/*.test.js', + '/integration/api_v3/consistency/http/*.test.js', + '/integration/api_v3/consistency/rpc/*.test.js', ], testEnvironment: 'node', testTimeout: 50000, From d448f92002a566c19b301bcb4b0ddc9437c8b92f Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Tue, 17 Oct 2023 17:35:39 +0200 Subject: [PATCH 67/71] Update framework to 1.7.0 --- framework/dist/lisk-service-framework-1.7.0.tgz | Bin 0 -> 70682 bytes framework/package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 framework/dist/lisk-service-framework-1.7.0.tgz diff --git a/framework/dist/lisk-service-framework-1.7.0.tgz b/framework/dist/lisk-service-framework-1.7.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a735ea6508bc993a80aa421124c560f9bd636f1c GIT binary patch literal 70682 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 I=K%5r06tNw8UO$Q literal 0 HcmV?d00001 diff --git a/framework/package.json b/framework/package.json index a2b1dd4dde..88798c875b 100644 --- a/framework/package.json +++ b/framework/package.json @@ -1,6 +1,6 @@ { "name": "lisk-service-framework", - "version": "1.6.0", + "version": "1.7.0", "description": "Lisk Service Framework", "keywords": [ "lisk", From 8737200583851883f72c9fabd0969d24ec1f8578 Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Tue, 17 Oct 2023 20:17:04 +0200 Subject: [PATCH 68/71] Update framework dependency to 1.7.0 --- Makefile | 26 +++++++++---------- services/blockchain-app-registry/package.json | 2 +- services/blockchain-app-registry/yarn.lock | 6 ++--- services/blockchain-connector/package.json | 2 +- services/blockchain-connector/yarn.lock | 6 ++--- services/blockchain-coordinator/package.json | 2 +- services/blockchain-coordinator/yarn.lock | 6 ++--- services/blockchain-indexer/package.json | 2 +- services/blockchain-indexer/yarn.lock | 6 ++--- services/export/package.json | 2 +- services/export/yarn.lock | 6 ++--- services/fee-estimator/package.json | 2 +- services/fee-estimator/yarn.lock | 6 ++--- services/gateway/package.json | 2 +- services/gateway/yarn.lock | 6 ++--- services/market/package.json | 2 +- services/market/yarn.lock | 6 ++--- services/template/package.json | 2 +- services/template/yarn.lock | 6 ++--- services/transaction-statistics/package.json | 2 +- services/transaction-statistics/yarn.lock | 6 ++--- 21 files changed, 53 insertions(+), 53 deletions(-) diff --git a/Makefile b/Makefile index 3f1709c1a7..8aa26f08d4 100644 --- a/Makefile +++ b/Makefile @@ -108,19 +108,19 @@ build-tests: cd ./tests && docker buildx build --tag=lisk/service_tests ./ build-local: - yarn install --frozen-lockfile - cd ./framework && yarn install --frozen-lockfile - cd ./services/blockchain-app-registry && yarn install --frozen-lockfile - cd ./services/blockchain-connector && yarn install --frozen-lockfile - cd ./services/blockchain-coordinator && yarn install --frozen-lockfile - cd ./services/blockchain-indexer && yarn install --frozen-lockfile - cd ./services/transaction-statistics && yarn install --frozen-lockfile - cd ./services/fee-estimator && yarn install --frozen-lockfile - cd ./services/market && yarn install --frozen-lockfile - cd ./services/gateway && yarn install --frozen-lockfile - cd ./services/export && yarn install --frozen-lockfile - cd ./services/template && yarn install --frozen-lockfile - cd ./tests && yarn install --frozen-lockfile + yarn install + cd ./framework && yarn install + cd ./services/blockchain-app-registry && yarn install + cd ./services/blockchain-connector && yarn install + cd ./services/blockchain-coordinator && yarn install + cd ./services/blockchain-indexer && yarn install + cd ./services/transaction-statistics && yarn install + cd ./services/fee-estimator && yarn install + cd ./services/market && yarn install + cd ./services/gateway && yarn install + cd ./services/export && yarn install + cd ./services/template && yarn install + cd ./tests && yarn install clean: clean-local clean-images diff --git a/services/blockchain-app-registry/package.json b/services/blockchain-app-registry/package.json index d3d8be424c..1e9f839a5e 100644 --- a/services/blockchain-app-registry/package.json +++ b/services/blockchain-app-registry/package.json @@ -33,7 +33,7 @@ }, "dependencies": { "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", "lodash": "^4.17.21", "octokit": "^2.0.4", "tar": "^6.1.11" diff --git a/services/blockchain-app-registry/yarn.lock b/services/blockchain-app-registry/yarn.lock index 63d2ee1ea0..81fae649c6 100644 --- a/services/blockchain-app-registry/yarn.lock +++ b/services/blockchain-app-registry/yarn.lock @@ -3084,9 +3084,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz": - version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz#22d99e35771f13c9e00d6a36b20dc453e83f799a" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": + version "1.7.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-connector/package.json b/services/blockchain-connector/package.json index bcf05c63d6..e1c31b6041 100644 --- a/services/blockchain-connector/package.json +++ b/services/blockchain-connector/package.json @@ -39,7 +39,7 @@ "big-json": "^3.1.0", "bluebird": "^3.7.2", "knex": "^2.4.0", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", "moment": "^2.29.4", "signals": "^1.0.0", "tar": "^6.1.11" diff --git a/services/blockchain-connector/yarn.lock b/services/blockchain-connector/yarn.lock index a64aae67db..1008fa911b 100644 --- a/services/blockchain-connector/yarn.lock +++ b/services/blockchain-connector/yarn.lock @@ -3926,9 +3926,9 @@ lines-and-columns@^1.1.6: resolved "https://npm.lisk.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz": - version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz#22d99e35771f13c9e00d6a36b20dc453e83f799a" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": + version "1.7.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-coordinator/package.json b/services/blockchain-coordinator/package.json index a6d9c48b6e..9f64c995ba 100644 --- a/services/blockchain-coordinator/package.json +++ b/services/blockchain-coordinator/package.json @@ -31,7 +31,7 @@ "dependencies": { "bluebird": "^3.7.2", "bull": "^4.8.1", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz" + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz" }, "devDependencies": { "@babel/preset-env": "^7.14.0", diff --git a/services/blockchain-coordinator/yarn.lock b/services/blockchain-coordinator/yarn.lock index cfa2f14d50..a74ff3c076 100644 --- a/services/blockchain-coordinator/yarn.lock +++ b/services/blockchain-coordinator/yarn.lock @@ -3482,9 +3482,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz": - version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz#22d99e35771f13c9e00d6a36b20dc453e83f799a" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": + version "1.7.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-indexer/package.json b/services/blockchain-indexer/package.json index 6947e1f15e..2a0f958e6b 100644 --- a/services/blockchain-indexer/package.json +++ b/services/blockchain-indexer/package.json @@ -38,7 +38,7 @@ "bull": "^4.8.1", "camelcase": "^6.3.0", "ioredis": "^4.28.5", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", "lodash": "^4.17.21", "require-all": "^3.0.0" }, diff --git a/services/blockchain-indexer/yarn.lock b/services/blockchain-indexer/yarn.lock index b27c1048c0..aac913dc7a 100644 --- a/services/blockchain-indexer/yarn.lock +++ b/services/blockchain-indexer/yarn.lock @@ -3638,9 +3638,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz": - version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz#22d99e35771f13c9e00d6a36b20dc453e83f799a" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": + version "1.7.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/export/package.json b/services/export/package.json index 81829008f8..62cdb71a80 100644 --- a/services/export/package.json +++ b/services/export/package.json @@ -36,7 +36,7 @@ "bull": "^3.29.2", "exceljs": "^4.3.0", "json2csv": "^5.0.6", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", "minio": "^7.0.21", "moment": "^2.29.4", "moment-range": "^4.0.2", diff --git a/services/export/yarn.lock b/services/export/yarn.lock index 62f8a8d1bf..ee77cfd008 100644 --- a/services/export/yarn.lock +++ b/services/export/yarn.lock @@ -3158,9 +3158,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz": - version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz#22d99e35771f13c9e00d6a36b20dc453e83f799a" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": + version "1.7.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/fee-estimator/package.json b/services/fee-estimator/package.json index 0e7e004ba5..fe8aecea5c 100644 --- a/services/fee-estimator/package.json +++ b/services/fee-estimator/package.json @@ -34,7 +34,7 @@ "@liskhq/lisk-cryptography": "4.0.0-rc.1", "@liskhq/lisk-transactions": "6.0.0-rc.1", "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz" + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz" }, "devDependencies": { "@babel/preset-env": "^7.14.0", diff --git a/services/fee-estimator/yarn.lock b/services/fee-estimator/yarn.lock index f2be0d8f2b..72f653efb8 100644 --- a/services/fee-estimator/yarn.lock +++ b/services/fee-estimator/yarn.lock @@ -3611,9 +3611,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz": - version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz#22d99e35771f13c9e00d6a36b20dc453e83f799a" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": + version "1.7.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/gateway/package.json b/services/gateway/package.json index ab84aa0f03..b51fdd471c 100644 --- a/services/gateway/package.json +++ b/services/gateway/package.json @@ -33,7 +33,7 @@ "bluebird": "^3.7.2", "fastest-validator": "^1.10.1", "ioredis": "^4.27.1", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", "moleculer": "^0.14.13", "moment": "^2.29.4", "rate-limiter-flexible": "^2.2.4", diff --git a/services/gateway/yarn.lock b/services/gateway/yarn.lock index 1b2110bc6a..4278f52a6f 100644 --- a/services/gateway/yarn.lock +++ b/services/gateway/yarn.lock @@ -2728,9 +2728,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz": - version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz#22d99e35771f13c9e00d6a36b20dc453e83f799a" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": + version "1.7.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/market/package.json b/services/market/package.json index 068a9e7d60..12a5703cc0 100644 --- a/services/market/package.json +++ b/services/market/package.json @@ -32,7 +32,7 @@ "dependencies": { "bluebird": "^3.7.2", "joi": "^17.4.0", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", "moment": "^2.29.4", "node-cron": "=2.0.3" }, diff --git a/services/market/yarn.lock b/services/market/yarn.lock index bf077d2a9b..0dda4d78ee 100644 --- a/services/market/yarn.lock +++ b/services/market/yarn.lock @@ -2768,9 +2768,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz": - version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz#22d99e35771f13c9e00d6a36b20dc453e83f799a" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": + version "1.7.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/template/package.json b/services/template/package.json index 062c712c23..428aa63f88 100644 --- a/services/template/package.json +++ b/services/template/package.json @@ -30,7 +30,7 @@ "watch": "supervisor -w . -i ./node_modules app.js" }, "dependencies": { - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", "node-cron": "=2.0.3" } } diff --git a/services/template/yarn.lock b/services/template/yarn.lock index dbef9bc6ac..56a38b4bb3 100644 --- a/services/template/yarn.lock +++ b/services/template/yarn.lock @@ -1022,9 +1022,9 @@ leven@2.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz": - version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz#22d99e35771f13c9e00d6a36b20dc453e83f799a" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": + version "1.7.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/transaction-statistics/package.json b/services/transaction-statistics/package.json index 98add14528..4b0e368a4e 100644 --- a/services/transaction-statistics/package.json +++ b/services/transaction-statistics/package.json @@ -32,7 +32,7 @@ "dependencies": { "big-number": "=2.0.0", "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", "moment": "^2.29.4" }, "devDependencies": { diff --git a/services/transaction-statistics/yarn.lock b/services/transaction-statistics/yarn.lock index f51a5062b4..41bdc2cb5e 100644 --- a/services/transaction-statistics/yarn.lock +++ b/services/transaction-statistics/yarn.lock @@ -3437,9 +3437,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz": - version "1.6.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/b29df9637584d43ce25b89843637c46ebbcbe628/framework/dist/lisk-service-framework-1.6.0.tgz#22d99e35771f13c9e00d6a36b20dc453e83f799a" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": + version "1.7.0" + resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" From 834ff3025941cd7691f1a53901954ca8c769021b Mon Sep 17 00:00:00 2001 From: Priojeet Das Priyom Date: Wed, 18 Oct 2023 10:20:15 +0200 Subject: [PATCH 69/71] Revert makefile changes --- Makefile | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 8aa26f08d4..3f1709c1a7 100644 --- a/Makefile +++ b/Makefile @@ -108,19 +108,19 @@ build-tests: cd ./tests && docker buildx build --tag=lisk/service_tests ./ build-local: - yarn install - cd ./framework && yarn install - cd ./services/blockchain-app-registry && yarn install - cd ./services/blockchain-connector && yarn install - cd ./services/blockchain-coordinator && yarn install - cd ./services/blockchain-indexer && yarn install - cd ./services/transaction-statistics && yarn install - cd ./services/fee-estimator && yarn install - cd ./services/market && yarn install - cd ./services/gateway && yarn install - cd ./services/export && yarn install - cd ./services/template && yarn install - cd ./tests && yarn install + yarn install --frozen-lockfile + cd ./framework && yarn install --frozen-lockfile + cd ./services/blockchain-app-registry && yarn install --frozen-lockfile + cd ./services/blockchain-connector && yarn install --frozen-lockfile + cd ./services/blockchain-coordinator && yarn install --frozen-lockfile + cd ./services/blockchain-indexer && yarn install --frozen-lockfile + cd ./services/transaction-statistics && yarn install --frozen-lockfile + cd ./services/fee-estimator && yarn install --frozen-lockfile + cd ./services/market && yarn install --frozen-lockfile + cd ./services/gateway && yarn install --frozen-lockfile + cd ./services/export && yarn install --frozen-lockfile + cd ./services/template && yarn install --frozen-lockfile + cd ./tests && yarn install --frozen-lockfile clean: clean-local clean-images From f84c21e6955b64ceeb006e4b685a06a9f41e5004 Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Fri, 20 Oct 2023 12:27:34 +0200 Subject: [PATCH 70/71] :arrow_up: Tag Lisk Service framework v1.6.2 --- ...0.tgz => lisk-service-framework-1.6.2.tgz} | Bin 70682 -> 70862 bytes framework/package.json | 2 +- framework/yarn.lock | 143 ++++++++-------- services/blockchain-app-registry/yarn.lock | 155 +++++++++-------- services/blockchain-connector/yarn.lock | 143 ++++++++-------- services/blockchain-coordinator/yarn.lock | 143 ++++++++-------- services/blockchain-indexer/yarn.lock | 143 ++++++++-------- services/export/yarn.lock | 147 ++++++++-------- services/fee-estimator/yarn.lock | 143 ++++++++-------- services/gateway/yarn.lock | 137 ++++++++------- services/market/yarn.lock | 137 ++++++++------- services/template/yarn.lock | 53 +++--- services/transaction-statistics/yarn.lock | 143 ++++++++-------- tests/yarn.lock | 153 +++++++++-------- yarn.lock | 159 ++++++++++-------- 15 files changed, 972 insertions(+), 829 deletions(-) rename framework/dist/{lisk-service-framework-1.7.0.tgz => lisk-service-framework-1.6.2.tgz} (68%) diff --git a/framework/dist/lisk-service-framework-1.7.0.tgz b/framework/dist/lisk-service-framework-1.6.2.tgz similarity index 68% rename from framework/dist/lisk-service-framework-1.7.0.tgz rename to framework/dist/lisk-service-framework-1.6.2.tgz index a735ea6508bc993a80aa421124c560f9bd636f1c..d9c9202fc55579b6f1b25e907adf9eb0ce9afab8 100644 GIT binary patch delta 22067 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 diff --git a/framework/package.json b/framework/package.json index d48c33cd16..47f3b031d8 100644 --- a/framework/package.json +++ b/framework/package.json @@ -1,6 +1,6 @@ { "name": "lisk-service-framework", - "version": "1.7.0", + "version": "1.6.2", "description": "Lisk Service Framework", "keywords": [ "lisk", diff --git a/framework/yarn.lock b/framework/yarn.lock index d73ae37362..36fdad556f 100644 --- a/framework/yarn.lock +++ b/framework/yarn.lock @@ -523,9 +523,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -568,9 +568,9 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -579,24 +579,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" @@ -606,42 +606,42 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -651,26 +651,26 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^15.0.0": - version "15.0.16" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.16.tgz#258009dc52907e8f03041eb64ffdac297ba4b208" - integrity sha512-2FeD5qezW3FvLpZ0JpfuaEWepgNLl9b2gQYiz/ce0NhoB1W/D+VZu98phITXkADYerfr/jb7JcDcVhITsc9bwg== + version "15.0.17" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.17.tgz#bea870ba551b43831bfaa75de2e4a3849c39322b" + integrity sha512-cj53I8GUcWJIgWVTSVe2L7NJAB5XWGdsoMosVvUgv1jEnMbAcsbaCzt1coUcyi8Sda5PgTWAooG8jNyDTD+CWA== dependencies: "@types/yargs-parser" "*" "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" @@ -1011,13 +1011,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1040,9 +1041,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1285,7 +1286,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -1361,9 +1362,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.8.1: version "0.8.1" @@ -1699,7 +1700,7 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3130,9 +3131,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -3614,6 +3615,16 @@ serve-static@^1.14.1: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -4257,12 +4268,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" diff --git a/services/blockchain-app-registry/yarn.lock b/services/blockchain-app-registry/yarn.lock index 81fae649c6..d7ce0ae834 100644 --- a/services/blockchain-app-registry/yarn.lock +++ b/services/blockchain-app-registry/yarn.lock @@ -512,9 +512,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -791,14 +791,14 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/aws-lambda@^8.10.83": - version "8.10.124" - resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.124.tgz#ea9d0aa36adbbae7a6c37edb072a1d64b49f0d4d" - integrity sha512-PHqK0SuAkFS3tZjceqRXecxxrWIN3VqTicuialtK2wZmvBy7H9WGc3u3+wOgaZB7N8SpSXDpWk9qa7eorpTStg== + version "8.10.125" + resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.125.tgz#c2ba86f7d98fe1827a7b048e0d31a65a8b5aed8c" + integrity sha512-Vqw/WMlV4O1fJT6capim01v7VLDZkcX1n6Yhb52E7IfnMqYbNfwHfyDV8rRN42NLBtdDvfaqcCqs2K0fr5ljZw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -807,31 +807,31 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" "@types/btoa-lite@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/btoa-lite/-/btoa-lite-1.0.0.tgz#e190a5a548e0b348adb0df9ac7fa5f1151c7cca4" - integrity sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/btoa-lite/-/btoa-lite-1.0.1.tgz#5aef84ea6cc0d145d1ff9e6ea3d6c7e8d402f477" + integrity sha512-YwCjy5v1THSaj5KrBz0SKwKYtjwT0YpOm8VB4TR6DzyvTa503T+rE0Ku6Q3DUKtm1rzNrEXyqdYHpcLiYN6oXg== "@types/cookie@^0.4.1": version "0.4.1" @@ -839,49 +839,49 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/jsonwebtoken@^9.0.0": - version "9.0.3" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz#1f22283b8e1f933af9e195d720798b64b399d84c" - integrity sha512-b0jGiOgHtZ2jqdPgPnP6WLCXZk1T8p06A/vPGzUvxpFGgKMbjXJDjC5m52ErqBnIuWZFgGoIJyRdeG5AyreJjA== + version "9.0.4" + resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.4.tgz#8b74bbe87bde81a3469d4b32a80609bec62c23ec" + integrity sha512-8UYapdmR0QlxgvJmyE8lP7guxD0UGVMfknsdtCFZh4ovShdBl3iOI4zdvqBHrB/IS+xUj3PSx73Qkey1fhWz+g== dependencies: "@types/node" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -891,19 +891,19 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" @@ -1277,13 +1277,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1306,9 +1307,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1561,7 +1562,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -1644,9 +1645,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.8.1: version "0.8.1" @@ -1982,7 +1983,7 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3496,9 +3497,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -3980,6 +3981,16 @@ serve-static@^1.14.1: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -4648,12 +4659,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" diff --git a/services/blockchain-connector/yarn.lock b/services/blockchain-connector/yarn.lock index 1008fa911b..716d03dac8 100644 --- a/services/blockchain-connector/yarn.lock +++ b/services/blockchain-connector/yarn.lock @@ -1187,9 +1187,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://npm.lisk.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://npm.lisk.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1316,9 +1316,9 @@ integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://npm.lisk.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://npm.lisk.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -1327,24 +1327,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://npm.lisk.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://npm.lisk.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://npm.lisk.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://npm.lisk.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://npm.lisk.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://npm.lisk.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" @@ -1354,42 +1354,42 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://npm.lisk.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://npm.lisk.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://npm.lisk.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://npm.lisk.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://npm.lisk.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://npm.lisk.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://npm.lisk.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://npm.lisk.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://npm.lisk.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://npm.lisk.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://npm.lisk.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://npm.lisk.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -1404,19 +1404,19 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://npm.lisk.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://npm.lisk.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://npm.lisk.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://npm.lisk.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://npm.lisk.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://npm.lisk.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" @@ -1929,13 +1929,14 @@ cacache@^17.0.0: tar "^6.1.11" unique-filename "^3.0.0" -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://npm.lisk.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://npm.lisk.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1958,9 +1959,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://npm.lisk.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://npm.lisk.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -2123,9 +2124,9 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://npm.lisk.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== + version "3.33.1" + resolved "https://npm.lisk.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" + integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== dependencies: browserslist "^4.22.1" @@ -2266,7 +2267,7 @@ deepmerge@^4.2.2: resolved "https://npm.lisk.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://npm.lisk.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -2347,9 +2348,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://npm.lisk.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://npm.lisk.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.8.1: version "0.8.1" @@ -2735,7 +2736,7 @@ fsevents@^2.3.2: resolved "https://npm.lisk.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://npm.lisk.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -4433,9 +4434,9 @@ object-assign@^4: integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://npm.lisk.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://npm.lisk.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -5044,6 +5045,16 @@ set-blocking@^2.0.0: resolved "https://npm.lisk.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://npm.lisk.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://npm.lisk.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -5826,12 +5837,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://npm.lisk.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://npm.lisk.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" diff --git a/services/blockchain-coordinator/yarn.lock b/services/blockchain-coordinator/yarn.lock index a74ff3c076..afb163e0ef 100644 --- a/services/blockchain-coordinator/yarn.lock +++ b/services/blockchain-coordinator/yarn.lock @@ -1175,9 +1175,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1250,9 +1250,9 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -1261,24 +1261,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" @@ -1288,42 +1288,42 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -1333,19 +1333,19 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" @@ -1728,13 +1728,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1757,9 +1758,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1894,9 +1895,9 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== + version "3.33.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" + integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== dependencies: browserslist "^4.22.1" @@ -2016,7 +2017,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -2087,9 +2088,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.8.1: version "0.8.1" @@ -2413,7 +2414,7 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3865,9 +3866,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -4377,6 +4378,16 @@ serve-static@^1.14.1: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -5043,12 +5054,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" diff --git a/services/blockchain-indexer/yarn.lock b/services/blockchain-indexer/yarn.lock index aac913dc7a..1e7d313553 100644 --- a/services/blockchain-indexer/yarn.lock +++ b/services/blockchain-indexer/yarn.lock @@ -1175,9 +1175,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1304,9 +1304,9 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -1315,24 +1315,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" @@ -1342,42 +1342,42 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -1392,19 +1392,19 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" @@ -1829,13 +1829,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1858,9 +1859,9 @@ camelcase@^6.2.0, camelcase@^6.3.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -2003,9 +2004,9 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== + version "3.33.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" + integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== dependencies: browserslist "^4.22.1" @@ -2148,7 +2149,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -2219,9 +2220,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.8.1: version "0.8.1" @@ -2550,7 +2551,7 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -4035,9 +4036,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -4585,6 +4586,16 @@ serve-static@^1.14.1: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -5271,12 +5282,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" diff --git a/services/export/yarn.lock b/services/export/yarn.lock index ee77cfd008..faf40202a4 100644 --- a/services/export/yarn.lock +++ b/services/export/yarn.lock @@ -537,9 +537,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -599,9 +599,9 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -610,24 +610,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" @@ -637,42 +637,42 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -692,19 +692,19 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" @@ -1172,13 +1172,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1201,9 +1202,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== chainsaw@~0.1.0: version "0.1.0" @@ -1535,7 +1536,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -1613,9 +1614,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.8.1: version "0.8.1" @@ -1839,14 +1840,14 @@ eventemitter2@^6.4.9: integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== exceljs@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/exceljs/-/exceljs-4.3.0.tgz#939bc0d4c59c200acadb7051be34d25c109853c4" - integrity sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w== + version "4.4.0" + resolved "https://registry.yarnpkg.com/exceljs/-/exceljs-4.4.0.tgz#cfb1cb8dcc82c760a9fc9faa9e52dadab66b0156" + integrity sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg== dependencies: archiver "^5.0.0" dayjs "^1.8.34" fast-csv "^4.3.1" - jszip "^3.5.0" + jszip "^3.10.1" readable-stream "^3.6.0" saxes "^5.0.1" tmp "^0.2.0" @@ -2017,7 +2018,7 @@ fstream@^1.0.12: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3075,7 +3076,7 @@ jsonparse@^1.3.1: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== -jszip@^3.5.0: +jszip@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== @@ -3627,9 +3628,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -4179,6 +4180,16 @@ serve-static@^1.14.1: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -4922,12 +4933,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11, which-typed-array@^1.1.2: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" diff --git a/services/fee-estimator/yarn.lock b/services/fee-estimator/yarn.lock index 72f653efb8..a76ceb17cd 100644 --- a/services/fee-estimator/yarn.lock +++ b/services/fee-estimator/yarn.lock @@ -1175,9 +1175,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1274,9 +1274,9 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -1285,24 +1285,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" @@ -1312,42 +1312,42 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -1362,19 +1362,19 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" @@ -1786,13 +1786,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1815,9 +1816,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== casual-browserify@^1.5.19: version "1.5.19" @@ -1973,9 +1974,9 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== + version "3.33.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" + integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== dependencies: browserslist "^4.22.1" @@ -2111,7 +2112,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -2187,9 +2188,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.8.1: version "0.8.1" @@ -2523,7 +2524,7 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3993,9 +3994,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -4556,6 +4557,16 @@ serve-static@^1.14.1: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -5247,12 +5258,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" diff --git a/services/gateway/yarn.lock b/services/gateway/yarn.lock index 4278f52a6f..d6dfd13585 100644 --- a/services/gateway/yarn.lock +++ b/services/gateway/yarn.lock @@ -512,9 +512,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -557,9 +557,9 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -568,24 +568,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" @@ -595,42 +595,42 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -640,19 +640,19 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" @@ -998,13 +998,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1027,9 +1028,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1272,7 +1273,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -1343,9 +1344,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.8.1: version "0.8.1" @@ -1669,7 +1670,7 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3075,9 +3076,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -3561,6 +3562,16 @@ serve-static@^1.14.1: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -4204,12 +4215,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" diff --git a/services/market/yarn.lock b/services/market/yarn.lock index 0dda4d78ee..d50fd44965 100644 --- a/services/market/yarn.lock +++ b/services/market/yarn.lock @@ -524,9 +524,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -586,9 +586,9 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -597,24 +597,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" @@ -624,42 +624,42 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -669,19 +669,19 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" @@ -1027,13 +1027,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1056,9 +1057,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1301,7 +1302,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -1372,9 +1373,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.8.1: version "0.8.1" @@ -1698,7 +1699,7 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3115,9 +3116,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -3584,6 +3585,16 @@ serve-static@^1.14.1: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -4227,12 +4238,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" diff --git a/services/template/yarn.lock b/services/template/yarn.lock index 56a38b4bb3..6512577b5e 100644 --- a/services/template/yarn.lock +++ b/services/template/yarn.lock @@ -38,16 +38,16 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -214,13 +214,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" camelcase@5.0.0: version "5.0.0" @@ -347,7 +348,7 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -598,7 +599,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -1291,9 +1292,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -1609,6 +1610,16 @@ serve-static@^1.14.1: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -1974,12 +1985,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" diff --git a/services/transaction-statistics/yarn.lock b/services/transaction-statistics/yarn.lock index 41bdc2cb5e..3c3df8a05d 100644 --- a/services/transaction-statistics/yarn.lock +++ b/services/transaction-statistics/yarn.lock @@ -1175,9 +1175,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1220,9 +1220,9 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -1231,24 +1231,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" @@ -1258,42 +1258,42 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -1303,19 +1303,19 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" @@ -1690,13 +1690,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1719,9 +1720,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1856,9 +1857,9 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== + version "3.33.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" + integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== dependencies: browserslist "^4.22.1" @@ -1971,7 +1972,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -2042,9 +2043,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.8.1: version "0.8.1" @@ -2368,7 +2369,7 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3789,9 +3790,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -4301,6 +4302,16 @@ serve-static@^1.14.1: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -4967,12 +4978,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" diff --git a/tests/yarn.lock b/tests/yarn.lock index 7b5371fb6c..7203b9f1f4 100644 --- a/tests/yarn.lock +++ b/tests/yarn.lock @@ -1262,9 +1262,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1413,9 +1413,9 @@ defer-to-connect "^2.0.0" "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -1424,24 +1424,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" @@ -1468,9 +1468,9 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.14" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" - integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== + version "2.8.15" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.15.tgz#eb143aa2f8807ddd78e83cbff141bbedd91b60ee" + integrity sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw== dependencies: "@types/node" "*" @@ -1482,26 +1482,26 @@ "@types/node" "*" "@types/graceful-fs@^4.1.3": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/http-cache-semantics@*": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz#abe102d06ccda1efdf0ed98c10ccf7f36a785a41" - integrity sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw== + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#a3ff232bf7d5c55f38e4e45693eda2ebb545794d" + integrity sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" @@ -1514,9 +1514,9 @@ "@types/istanbul-lib-report" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" @@ -1528,14 +1528,14 @@ "@types/node" "*" "@types/methods@^1.1.0": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/methods/-/methods-1.1.2.tgz#d01479b2a10dd5a0bdbe4642f51893911b26d6bb" - integrity sha512-YdYv53Z4sI21tIvCE6OQA6EtEjV75aBHGgwfp6yQ5oH1FWA0N9wnt5aiFktx07Hln50sw+t95cgQPewANd+/Vg== + version "1.1.3" + resolved "https://registry.yarnpkg.com/@types/methods/-/methods-1.1.3.tgz#958272d1cfc7d95ba0a2d617872702b3b9f0ef02" + integrity sha512-1tkBErlP1oNVh1QbTkXnSeTy4qYjQYRFvwrV/JBeaaO6oqQZHAE2Ah3ygMckCM8hC8oOjYZpB0jylPnc8Co0QA== "@types/node@*", "@types/node@>=10.0.0": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -1545,9 +1545,9 @@ integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== "@types/responselike@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.1.tgz#1dd57e54509b3b95c7958e52709567077019d65d" - integrity sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg== + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.2.tgz#8de1b0477fd7c12df77e50832fa51701a8414bd6" + integrity sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA== dependencies: "@types/node" "*" @@ -1557,19 +1557,19 @@ integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/tough-cookie@^2.3.0": - version "2.3.9" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.9.tgz#904becefb2ccab4a33d96908704525bb4dbc048e" - integrity sha512-jLZVDbs/2XRjcgg6X5aXlni7AC85LYOjIQ5H9Eouny0t1SDKiXWxkbTPLkMdFKYxlKVZtMstlkpU1v6d14hVbA== + version "2.3.10" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.10.tgz#69537b138495c618acdc996949c9fcf6bf535110" + integrity sha512-D9FAh9yyZjg35G2d2dpPOunjKj1VxLQgHI1X4YwVS5IDXESHwR4oSFxcxp2ro2xFSlu3qI+xZQK9fQH67E8M1A== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^13.0.0": version "13.0.12" @@ -1579,9 +1579,9 @@ "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.28" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.28.tgz#d106e4301fbacde3d1796ab27374dd16588ec851" - integrity sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw== + version "17.0.29" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.29.tgz#06aabc72497b798c643c812a8b561537fea760cf" + integrity sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA== dependencies: "@types/yargs-parser" "*" @@ -2118,12 +2118,13 @@ cacheable-request@^7.0.2: responselike "^2.0.0" call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -2146,9 +2147,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== capture-stack-trace@^1.0.0: version "1.0.2" @@ -2447,9 +2448,9 @@ copy-descriptor@^0.1.0: integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== + version "3.33.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" + integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== dependencies: browserslist "^4.22.1" @@ -2675,7 +2676,7 @@ defer-to-connect@^2.0.0: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -2785,9 +2786,9 @@ duplexer3@^0.1.4: integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.13.1: version "0.13.1" @@ -3150,7 +3151,7 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3180,7 +3181,7 @@ get-func-name@^2.0.1, get-func-name@^2.0.2: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1: +get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== @@ -5537,6 +5538,16 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" diff --git a/yarn.lock b/yarn.lock index c91e41368f..026bcbea10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -350,11 +350,11 @@ integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== "@humanwhocodes/config-array@^0.11.11": - version "0.11.11" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" - integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== + version "0.11.12" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.12.tgz#549afec9bfce5232ac6325db12765f407e70e3a0" + integrity sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.0" debug "^4.1.1" minimatch "^3.0.5" @@ -363,10 +363,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.0.tgz#04ad39d82176c7da1591c81e78b993cffd8348d8" + integrity sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -578,9 +578,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -626,9 +626,9 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -637,57 +637,57 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9": - version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" - integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== "@types/json5@^0.0.29": version "0.0.29" @@ -695,9 +695,9 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/node@*": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" @@ -707,24 +707,24 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/semver@^7.3.12": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" - integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" @@ -1199,13 +1199,14 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1223,9 +1224,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== chalk@^2.4.2: version "2.4.2" @@ -1410,7 +1411,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -1480,9 +1481,9 @@ domexception@^2.0.1: webidl-conversions "^5.0.0" electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== emittery@^0.8.1: version "0.8.1" @@ -2047,7 +2048,7 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3244,9 +3245,9 @@ nwsapi@^2.2.0: integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -3672,6 +3673,16 @@ semver@^7.2.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3: dependencies: lru-cache "^6.0.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -4183,12 +4194,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" From 16e340b278a357683526a98eb3faf9afdaafb9f5 Mon Sep 17 00:00:00 2001 From: Sameer Kumar Subudhi Date: Fri, 20 Oct 2023 12:36:28 +0200 Subject: [PATCH 71/71] :arrow_up: Bump lisk-service-framework to v1.6.2 --- services/blockchain-app-registry/package.json | 2 +- services/blockchain-app-registry/yarn.lock | 6 +++--- services/blockchain-connector/package.json | 4 ++-- services/blockchain-connector/yarn.lock | 14 +++++++------- services/blockchain-coordinator/package.json | 2 +- services/blockchain-coordinator/yarn.lock | 6 +++--- services/blockchain-indexer/package.json | 2 +- services/blockchain-indexer/yarn.lock | 6 +++--- services/export/package.json | 2 +- services/export/yarn.lock | 6 +++--- services/fee-estimator/package.json | 2 +- services/fee-estimator/yarn.lock | 6 +++--- services/gateway/package.json | 2 +- services/gateway/yarn.lock | 6 +++--- services/market/package.json | 2 +- services/market/yarn.lock | 6 +++--- services/template/package.json | 2 +- services/template/yarn.lock | 6 +++--- services/transaction-statistics/package.json | 2 +- services/transaction-statistics/yarn.lock | 6 +++--- 20 files changed, 45 insertions(+), 45 deletions(-) diff --git a/services/blockchain-app-registry/package.json b/services/blockchain-app-registry/package.json index 1e9f839a5e..c7d736b371 100644 --- a/services/blockchain-app-registry/package.json +++ b/services/blockchain-app-registry/package.json @@ -33,7 +33,7 @@ }, "dependencies": { "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz", "lodash": "^4.17.21", "octokit": "^2.0.4", "tar": "^6.1.11" diff --git a/services/blockchain-app-registry/yarn.lock b/services/blockchain-app-registry/yarn.lock index d7ce0ae834..7cd615953a 100644 --- a/services/blockchain-app-registry/yarn.lock +++ b/services/blockchain-app-registry/yarn.lock @@ -3085,9 +3085,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": - version "1.7.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz": + version "1.6.2" + resolved "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz#1cfec75d732778d5a1106aa9c107ba42e20e0fbf" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-connector/package.json b/services/blockchain-connector/package.json index e1c31b6041..2abd59e270 100644 --- a/services/blockchain-connector/package.json +++ b/services/blockchain-connector/package.json @@ -30,7 +30,7 @@ "test:functional": "jest --config=jest.config.functional.js --detectOpenHandles --forceExit" }, "dependencies": { - "@liskhq/lisk-api-client": "6.0.0-rc.1", + "@liskhq/lisk-api-client": "6.0.0-rc.3", "@liskhq/lisk-codec": "0.4.0-rc.1", "@liskhq/lisk-cryptography": "4.0.0-rc.1", "@liskhq/lisk-transactions": "6.0.0-rc.1", @@ -39,7 +39,7 @@ "big-json": "^3.1.0", "bluebird": "^3.7.2", "knex": "^2.4.0", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz", "moment": "^2.29.4", "signals": "^1.0.0", "tar": "^6.1.11" diff --git a/services/blockchain-connector/yarn.lock b/services/blockchain-connector/yarn.lock index 716d03dac8..18194a0781 100644 --- a/services/blockchain-connector/yarn.lock +++ b/services/blockchain-connector/yarn.lock @@ -1201,10 +1201,10 @@ dependencies: ioredis "^5.3.2" -"@liskhq/lisk-api-client@6.0.0-rc.1": - version "6.0.0-rc.1" - resolved "https://npm.lisk.com/@liskhq/lisk-api-client/-/lisk-api-client-6.0.0-rc.1.tgz#b0611b7b8f76369f5de499a63118fb1085da23a8" - integrity sha512-sZ59KXjTLUSSeAgx4JSCBRy6E2CaPXkJSeQRIWwfgw5nUw/q1VYGqbtxrMwo8WhRuMqg4X1uHy4HaBQIeftGjw== +"@liskhq/lisk-api-client@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://npm.lisk.com/@liskhq/lisk-api-client/-/lisk-api-client-6.0.0-rc.3.tgz#4c26f39e83ecf908d3dfb4b729b68777702481b3" + integrity sha512-88690dw4ADA184ul9KQZZ++5tVEuDeQNNlbUUCV2N63zVlRh5Xu78R/aFwtFGrLpts/kdXZwPEC4kdH4/as3gw== dependencies: "@liskhq/lisk-codec" "^0.4.0-rc.1" "@liskhq/lisk-cryptography" "^4.0.0-rc.1" @@ -3927,9 +3927,9 @@ lines-and-columns@^1.1.6: resolved "https://npm.lisk.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": - version "1.7.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz": + version "1.6.2" + resolved "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz#1cfec75d732778d5a1106aa9c107ba42e20e0fbf" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-coordinator/package.json b/services/blockchain-coordinator/package.json index 9f64c995ba..96076d73f2 100644 --- a/services/blockchain-coordinator/package.json +++ b/services/blockchain-coordinator/package.json @@ -31,7 +31,7 @@ "dependencies": { "bluebird": "^3.7.2", "bull": "^4.8.1", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz" + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz" }, "devDependencies": { "@babel/preset-env": "^7.14.0", diff --git a/services/blockchain-coordinator/yarn.lock b/services/blockchain-coordinator/yarn.lock index afb163e0ef..60969ec65b 100644 --- a/services/blockchain-coordinator/yarn.lock +++ b/services/blockchain-coordinator/yarn.lock @@ -3483,9 +3483,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": - version "1.7.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz": + version "1.6.2" + resolved "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz#1cfec75d732778d5a1106aa9c107ba42e20e0fbf" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/blockchain-indexer/package.json b/services/blockchain-indexer/package.json index 2a0f958e6b..31daa22bbf 100644 --- a/services/blockchain-indexer/package.json +++ b/services/blockchain-indexer/package.json @@ -38,7 +38,7 @@ "bull": "^4.8.1", "camelcase": "^6.3.0", "ioredis": "^4.28.5", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz", "lodash": "^4.17.21", "require-all": "^3.0.0" }, diff --git a/services/blockchain-indexer/yarn.lock b/services/blockchain-indexer/yarn.lock index 1e7d313553..4a65e375db 100644 --- a/services/blockchain-indexer/yarn.lock +++ b/services/blockchain-indexer/yarn.lock @@ -3639,9 +3639,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": - version "1.7.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz": + version "1.6.2" + resolved "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz#1cfec75d732778d5a1106aa9c107ba42e20e0fbf" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/export/package.json b/services/export/package.json index 62cdb71a80..e0ff501133 100644 --- a/services/export/package.json +++ b/services/export/package.json @@ -36,7 +36,7 @@ "bull": "^3.29.2", "exceljs": "^4.3.0", "json2csv": "^5.0.6", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz", "minio": "^7.0.21", "moment": "^2.29.4", "moment-range": "^4.0.2", diff --git a/services/export/yarn.lock b/services/export/yarn.lock index faf40202a4..5660561179 100644 --- a/services/export/yarn.lock +++ b/services/export/yarn.lock @@ -3159,9 +3159,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": - version "1.7.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz": + version "1.6.2" + resolved "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz#1cfec75d732778d5a1106aa9c107ba42e20e0fbf" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/fee-estimator/package.json b/services/fee-estimator/package.json index fe8aecea5c..5941e13e0c 100644 --- a/services/fee-estimator/package.json +++ b/services/fee-estimator/package.json @@ -34,7 +34,7 @@ "@liskhq/lisk-cryptography": "4.0.0-rc.1", "@liskhq/lisk-transactions": "6.0.0-rc.1", "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz" + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz" }, "devDependencies": { "@babel/preset-env": "^7.14.0", diff --git a/services/fee-estimator/yarn.lock b/services/fee-estimator/yarn.lock index a76ceb17cd..44c7b056c0 100644 --- a/services/fee-estimator/yarn.lock +++ b/services/fee-estimator/yarn.lock @@ -3612,9 +3612,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": - version "1.7.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz": + version "1.6.2" + resolved "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz#1cfec75d732778d5a1106aa9c107ba42e20e0fbf" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/gateway/package.json b/services/gateway/package.json index b51fdd471c..7d42412c4c 100644 --- a/services/gateway/package.json +++ b/services/gateway/package.json @@ -33,7 +33,7 @@ "bluebird": "^3.7.2", "fastest-validator": "^1.10.1", "ioredis": "^4.27.1", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz", "moleculer": "^0.14.13", "moment": "^2.29.4", "rate-limiter-flexible": "^2.2.4", diff --git a/services/gateway/yarn.lock b/services/gateway/yarn.lock index d6dfd13585..79a3314ceb 100644 --- a/services/gateway/yarn.lock +++ b/services/gateway/yarn.lock @@ -2729,9 +2729,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": - version "1.7.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz": + version "1.6.2" + resolved "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz#1cfec75d732778d5a1106aa9c107ba42e20e0fbf" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/market/package.json b/services/market/package.json index 12a5703cc0..97259b8433 100644 --- a/services/market/package.json +++ b/services/market/package.json @@ -32,7 +32,7 @@ "dependencies": { "bluebird": "^3.7.2", "joi": "^17.4.0", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz", "moment": "^2.29.4", "node-cron": "=2.0.3" }, diff --git a/services/market/yarn.lock b/services/market/yarn.lock index d50fd44965..e27858574b 100644 --- a/services/market/yarn.lock +++ b/services/market/yarn.lock @@ -2769,9 +2769,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": - version "1.7.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz": + version "1.6.2" + resolved "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz#1cfec75d732778d5a1106aa9c107ba42e20e0fbf" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/template/package.json b/services/template/package.json index 428aa63f88..3b999f8070 100644 --- a/services/template/package.json +++ b/services/template/package.json @@ -30,7 +30,7 @@ "watch": "supervisor -w . -i ./node_modules app.js" }, "dependencies": { - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz", "node-cron": "=2.0.3" } } diff --git a/services/template/yarn.lock b/services/template/yarn.lock index 6512577b5e..06a6829941 100644 --- a/services/template/yarn.lock +++ b/services/template/yarn.lock @@ -1023,9 +1023,9 @@ leven@2.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": - version "1.7.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz": + version "1.6.2" + resolved "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz#1cfec75d732778d5a1106aa9c107ba42e20e0fbf" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933" diff --git a/services/transaction-statistics/package.json b/services/transaction-statistics/package.json index 4b0e368a4e..36bb4a1aa8 100644 --- a/services/transaction-statistics/package.json +++ b/services/transaction-statistics/package.json @@ -32,7 +32,7 @@ "dependencies": { "big-number": "=2.0.0", "bluebird": "^3.7.2", - "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz", + "lisk-service-framework": "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz", "moment": "^2.29.4" }, "devDependencies": { diff --git a/services/transaction-statistics/yarn.lock b/services/transaction-statistics/yarn.lock index 3c3df8a05d..a24daa7b6b 100644 --- a/services/transaction-statistics/yarn.lock +++ b/services/transaction-statistics/yarn.lock @@ -3438,9 +3438,9 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz": - version "1.7.0" - resolved "https://github.com/LiskHQ/lisk-service/raw/d448f92002a566c19b301bcb4b0ddc9437c8b92f/framework/dist/lisk-service-framework-1.7.0.tgz#3b0ed5702b3d3777ae85fafb52b88238fcc75563" +"lisk-service-framework@https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz": + version "1.6.2" + resolved "https://github.com/LiskHQ/lisk-service/raw/f84c21e6955b64ceeb006e4b685a06a9f41e5004/framework/dist/lisk-service-framework-1.6.2.tgz#1cfec75d732778d5a1106aa9c107ba42e20e0fbf" dependencies: "@keyv/redis" "^2.1.2" "@log4js-node/gelf" "github:MichalTuleja/log4js-node-gelf#89d9933"