mirror of https://github.com/embarklabs/embark.git
chore(@embark/blockchain-listeener): remove blockchain-listener package (#1887)
This commit is contained in:
parent
ee634c8403
commit
8849aca264
|
@ -1,4 +0,0 @@
|
|||
engine-strict = true
|
||||
package-lock = false
|
||||
save-exact = true
|
||||
scripts-prepend-node-path = true
|
|
@ -1,64 +0,0 @@
|
|||
# Change Log
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [4.1.1](https://github.com/embark-framework/embark/compare/v4.1.0...v4.1.1) (2019-08-28)
|
||||
|
||||
**Note:** Version bump only for package embark-blockchain-listener
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [4.1.0](https://github.com/embark-framework/embark/compare/v4.1.0-beta.6...v4.1.0) (2019-08-12)
|
||||
|
||||
**Note:** Version bump only for package embark-blockchain-listener
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [4.1.0-beta.6](https://github.com/embark-framework/embark/compare/v4.1.0-beta.5...v4.1.0-beta.6) (2019-08-09)
|
||||
|
||||
**Note:** Version bump only for package embark-blockchain-listener
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [4.1.0-beta.5](https://github.com/embark-framework/embark/compare/v4.1.0-beta.4...v4.1.0-beta.5) (2019-07-10)
|
||||
|
||||
**Note:** Version bump only for package embark-blockchain-listener
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [4.1.0-beta.4](https://github.com/embark-framework/embark/compare/v4.1.0-beta.3...v4.1.0-beta.4) (2019-06-27)
|
||||
|
||||
**Note:** Version bump only for package embark-blockchain-listener
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [4.1.0-beta.3](https://github.com/embark-framework/embark/compare/v4.1.0-beta.2...v4.1.0-beta.3) (2019-06-07)
|
||||
|
||||
**Note:** Version bump only for package embark-blockchain-listener
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [4.1.0-beta.2](https://github.com/embark-framework/embark/compare/v4.1.0-beta.1...v4.1.0-beta.2) (2019-05-22)
|
||||
|
||||
**Note:** Version bump only for package embark-blockchain-listener
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [4.1.0-beta.1](https://github.com/embark-framework/embark/compare/v4.1.0-beta.0...v4.1.0-beta.1) (2019-05-15)
|
||||
|
||||
**Note:** Version bump only for package embark-blockchain-listener
|
|
@ -1,6 +0,0 @@
|
|||
# `embark-blockchain-listener`
|
||||
|
||||
> Blockchain Listener APIs for Embark
|
||||
|
||||
Visit [embark.status.im](https://embark.status.im/) to get started with
|
||||
[Embark](https://github.com/embark-framework/embark).
|
|
@ -1,70 +0,0 @@
|
|||
{
|
||||
"name": "embark-blockchain-listener",
|
||||
"version": "4.1.1",
|
||||
"author": "Iuri Matias <iuri.matias@gmail.com>",
|
||||
"contributors": [],
|
||||
"description": "Blockchain Listener APIs for Embark",
|
||||
"homepage": "https://github.com/embark-framework/embark/tree/master/packages/embark-blockchain-listener#readme",
|
||||
"bugs": "https://github.com/embark-framework/embark/issues",
|
||||
"keywords": [
|
||||
"blockchain",
|
||||
"dapps",
|
||||
"ethereum",
|
||||
"ipfs",
|
||||
"serverless",
|
||||
"solc",
|
||||
"solidity"
|
||||
],
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"directory": "packages/embark-blockchain-listener",
|
||||
"type": "git",
|
||||
"url": "https://github.com/embark-framework/embark.git"
|
||||
},
|
||||
"main": "./dist/index.js",
|
||||
"scripts": {
|
||||
"build": "cross-env BABEL_ENV=node babel src --extensions \".js\" --out-dir dist --root-mode upward --source-maps",
|
||||
"ci": "npm run qa",
|
||||
"clean": "npm run reset",
|
||||
"lint": "npm-run-all lint:*",
|
||||
"lint:js": "eslint src/",
|
||||
"// lint:ts": "tslint -c tslint.json \"src/**/*.ts\"",
|
||||
"package": "npm pack",
|
||||
"// qa": "npm-run-all lint typecheck build package",
|
||||
"qa": "npm-run-all lint build package",
|
||||
"reset": "npx rimraf dist embark-*.tgz package",
|
||||
"start": "npm run watch",
|
||||
"// typecheck": "tsc",
|
||||
"watch": "run-p watch:*",
|
||||
"watch:build": "npm run build -- --verbose --watch",
|
||||
"// watch:typecheck": "npm run typecheck -- --preserveWatchOutput --watch"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": "../../.eslintrc.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime-corejs2": "7.3.1",
|
||||
"async": "2.6.1",
|
||||
"embark-core": "^4.1.1",
|
||||
"embark-utils": "^4.1.1",
|
||||
"web3": "1.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "7.2.3",
|
||||
"@babel/core": "7.2.2",
|
||||
"cross-env": "5.2.0",
|
||||
"eslint": "5.7.0",
|
||||
"npm-run-all": "4.1.5",
|
||||
"rimraf": "3.0.0",
|
||||
"tslint": "5.16.0",
|
||||
"typescript": "3.4.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.12.0 <12.0.0",
|
||||
"npm": ">=6.4.1",
|
||||
"yarn": ">=1.12.3"
|
||||
}
|
||||
}
|
|
@ -1,74 +0,0 @@
|
|||
import { buildUrl, defaultHost, dockerHostSwap } from 'embark-utils';
|
||||
const Web3 = require('web3');
|
||||
const constants = require('embark-core/constants');
|
||||
|
||||
class DevTxs {
|
||||
constructor(options) {
|
||||
this.blockchainConfig = options.blockchainConfig;
|
||||
this.networkId = null;
|
||||
if (options.provider) {
|
||||
this.provider = options.provider;
|
||||
} else if (this.blockchainConfig.wsRPC !== false) {
|
||||
this.provider = new Web3.providers.WebsocketProvider(
|
||||
buildUrl(
|
||||
'ws',
|
||||
dockerHostSwap(this.blockchainConfig.wsHost) || defaultHost,
|
||||
this.blockchainConfig.wsPort || constants.blockchain.defaults.wsPort
|
||||
),
|
||||
{headers: {Origin: constants.embarkResourceOrigin}});
|
||||
} else {
|
||||
this.provider = new Web3.providers.HttpProvider(
|
||||
buildUrl(
|
||||
'http',
|
||||
dockerHostSwap(this.blockchainConfig.rpcHost) || defaultHost,
|
||||
this.blockchainConfig.rpcPort || constants.blockchain.defaults.rpcPort
|
||||
)
|
||||
);
|
||||
}
|
||||
this.web3 = new Web3(this.provider);
|
||||
this.logger = options.logger || console;
|
||||
}
|
||||
|
||||
static async new(options) {
|
||||
const dt = new DevTxs(options);
|
||||
await dt._init();
|
||||
return dt;
|
||||
}
|
||||
|
||||
async _init() {
|
||||
const accounts = await this.web3.eth.getAccounts();
|
||||
this.web3.eth.defaultAccount = accounts[0];
|
||||
}
|
||||
|
||||
sendTx(cb) {
|
||||
// Send TXs only in dev networks
|
||||
if (this.networkId !== constants.blockchain.networkIds.development && this.networkId !== constants.blockchain.networkIds.development_parity) {
|
||||
return;
|
||||
}
|
||||
this.web3.eth.sendTransaction({value: "0", to: this.web3.eth.defaultAccount, from: this.web3.eth.defaultAccount}).then(cb);
|
||||
}
|
||||
|
||||
startRegularTxs(cb) {
|
||||
const self = this;
|
||||
self.web3.eth.net.getId().then((networkId) => {
|
||||
self.networkId = networkId;
|
||||
if (self.networkId !== constants.blockchain.networkIds.development && this.networkId !== constants.blockchain.networkIds.development_parity) {
|
||||
return;
|
||||
}
|
||||
this.regularTxsInt = setInterval(function() { self.sendTx(() => {}); }, 1500);
|
||||
if (cb) {
|
||||
cb();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
stopRegularTxs(cb) {
|
||||
if(!this.regularTxsInt) {
|
||||
return cb('Regular txs not enabled.');
|
||||
}
|
||||
clearInterval(this.regularTxsInt);
|
||||
cb();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = DevTxs;
|
|
@ -1,167 +0,0 @@
|
|||
import { dappPath } from 'embark-utils';
|
||||
import { __ } from 'embark-i18n';
|
||||
const async = require('async');
|
||||
const DevTxs = require('./dev_txs');
|
||||
const constants = require('embark-core/constants');
|
||||
|
||||
const PROCESS_NAME = 'blockchain';
|
||||
|
||||
/**
|
||||
* BlockchainListener has two functions:
|
||||
* 1. Register API endpoints (HTTP GET and WS) to retrieve blockchain logs
|
||||
* when in standalone mode (ie `embark blockchain`).
|
||||
* 2. Listen to log events from the IPC connection (to `embark blockchain`)
|
||||
* and ensure they are processed through the LogHandler.
|
||||
*/
|
||||
class BlockchainListener {
|
||||
|
||||
/**
|
||||
* @param {Plugin} embark Embark module plugin object
|
||||
* @param {Object} options Options object containing:
|
||||
* - {Ipc} ipc IPC started by embark (in server role) used for communication
|
||||
* with the standalone blockchain process.
|
||||
*/
|
||||
constructor(embark, {ipc}) {
|
||||
this.embark = embark;
|
||||
this.events = embark.events;
|
||||
this.logger = embark.logger;
|
||||
this.ipc = ipc;
|
||||
this.isDev = this.embark.config.env === constants.environments.development;
|
||||
this.devTxs = null;
|
||||
this.fs = this.embark.fs;
|
||||
this.proxyLogFile = dappPath(".embark", "proxyLogs.json");
|
||||
|
||||
this.writeProxyLogFile = async.cargo((tasks, callback) => {
|
||||
const data = this._readProxyLogs();
|
||||
|
||||
tasks.forEach(task => {
|
||||
data[new Date().getTime()] = task;
|
||||
});
|
||||
|
||||
this.fs.writeJson(this.proxyLogFile, data, err => {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
}
|
||||
callback();
|
||||
});
|
||||
});
|
||||
|
||||
this.ipc.server.once('connect', () => {
|
||||
this.events.request('process:logs:register', {processName: PROCESS_NAME, eventName: "blockchain:log", silent: true});
|
||||
this._listenToBlockchainLogs();
|
||||
});
|
||||
if (this.ipc.isServer() && this.isDev) {
|
||||
this.events.request('blockchain:ready', () => {
|
||||
DevTxs.new({blockchainConfig: this.embark.config.blockchainConfig}).then(devTxs => {
|
||||
this.devTxs = devTxs;
|
||||
this.events.emit('blockchain:devtxs:ready');
|
||||
});
|
||||
});
|
||||
|
||||
this._registerConsoleCommands();
|
||||
this._listenToIpcCommands();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens to log events emitted by the standalone blockchain and ensures
|
||||
* they are processed through the LogHandler.
|
||||
*
|
||||
* @return {void}
|
||||
*/
|
||||
_listenToBlockchainLogs() {
|
||||
this.ipc.on('blockchain:log', ({logLevel, message}) => {
|
||||
this.events.emit('blockchain:log', logLevel, message);
|
||||
});
|
||||
}
|
||||
|
||||
_listenToIpcCommands() {
|
||||
this.ipc.on('blockchain:proxy:log', (log) => {
|
||||
this.logger.trace(log);
|
||||
});
|
||||
this.ipc.on('blockchain:proxy:logtofile', (log) => {
|
||||
this._saveProxyLog(log);
|
||||
});
|
||||
|
||||
this.ipc.on('blockchain:devtxs:sendtx', () => {
|
||||
this._sendTx(() => {});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
_registerConsoleCommands() {
|
||||
this.embark.registerConsoleCommand({
|
||||
description: __('Toggles regular transactions used to prevent transactions from getting stuck when using Geth and Metamask'),
|
||||
matches: ['devtxs on', 'devtxs off', 'regularTxs on', 'regularTxs off'],
|
||||
usage: "devtxs on/off",
|
||||
process: (cmd, callback) => {
|
||||
if (cmd.startsWith('regularTxs')) {
|
||||
this.logger.info(__("Deprecation notice: The command 'regularTxs on/off' is now deprecated in favor of 'devtxs on/off' and will be removed in future versions."));
|
||||
}
|
||||
const enable = cmd.trim().endsWith('on');
|
||||
this.logger.info(`${enable ? 'Enabling' : 'Disabling'} regular transactions...`);
|
||||
if(enable) {
|
||||
return this._startRegularTxs(() => {
|
||||
const message = __('Regular transactions have been enabled');
|
||||
this.logger.info(message);
|
||||
callback(null, message);
|
||||
});
|
||||
}
|
||||
this._stopRegularTxs(() => {
|
||||
const message = __('Regular transactions have been disabled');
|
||||
this.logger.info(message);
|
||||
callback(null, message);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
this.embark.registerConsoleCommand({
|
||||
description: __('Sends a transaction from default --dev account (generally used if txs are getting stuck in geth in development)'),
|
||||
matches: ['senddevtx'],
|
||||
process: (cmd, callback) => {
|
||||
this.logger.info(__('Sending a tx from the dev account...'));
|
||||
return this._sendTx((receipt) => {
|
||||
const message = __('Transaction sent. Receipt:') + `\n${JSON.stringify(receipt)}`;
|
||||
this.logger.debug(message);
|
||||
callback(null, message);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
_startRegularTxs(cb) {
|
||||
if(this.devTxs) {
|
||||
return this.devTxs.startRegularTxs(cb);
|
||||
}
|
||||
this.events.once('blockchain:devtxs:ready', () => { this.devTxs.startRegularTxs(cb); });
|
||||
}
|
||||
|
||||
_stopRegularTxs(cb) {
|
||||
if(this.devTxs) {
|
||||
return this.devTxs.stopRegularTxs(cb);
|
||||
}
|
||||
this.events.once('blockchain:devtxs:ready', () => { this.devTxs.stopRegularTxs(cb); });
|
||||
}
|
||||
|
||||
_sendTx(cb) {
|
||||
if(this.devTxs) {
|
||||
return this.devTxs.sendTx(cb);
|
||||
}
|
||||
this.events.once('blockchain:devtxs:ready', () => { this.devTxs.sendTx(cb); });
|
||||
}
|
||||
|
||||
_saveProxyLog(log) {
|
||||
this.writeProxyLogFile.push(log);
|
||||
}
|
||||
|
||||
_readProxyLogs() {
|
||||
this.fs.ensureFileSync(this.proxyLogFile);
|
||||
try {
|
||||
return JSON.parse(this.fs.readFileSync(this.proxyLogFile));
|
||||
} catch (_error) {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = BlockchainListener;
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"include": ["src/**/*"]
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"extends": "../../tslint.json"
|
||||
}
|
|
@ -93,7 +93,6 @@
|
|||
"embark-accounts-manager": "^4.1.1",
|
||||
"embark-api": "^4.1.1",
|
||||
"embark-authenticator": "^4.1.1",
|
||||
"embark-blockchain-listener": "^4.1.1",
|
||||
"embark-code-runner": "^4.1.1",
|
||||
"embark-compiler": "^4.1.1",
|
||||
"embark-console": "^4.1.1",
|
||||
|
|
Loading…
Reference in New Issue