Merge pull request #3475 from ethcore/ng-fix-parity-jsapi
Make parity.js usable by Node and Browser
This commit is contained in:
commit
d0cbbe2ec3
@ -43,6 +43,7 @@
|
|||||||
"test": "mocha 'src/**/*.spec.js'",
|
"test": "mocha 'src/**/*.spec.js'",
|
||||||
"test:coverage": "istanbul cover _mocha -- 'src/**/*.spec.js'",
|
"test:coverage": "istanbul cover _mocha -- 'src/**/*.spec.js'",
|
||||||
"test:e2e": "mocha 'src/**/*.e2e.js'",
|
"test:e2e": "mocha 'src/**/*.e2e.js'",
|
||||||
|
"test:npm": "(cd .npmjs && npm i) && node test/npmLibrary && (rm -rf .npmjs/node_modules)",
|
||||||
"prepush": "npm run lint:cached"
|
"prepush": "npm run lint:cached"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bignumber.js": "^2.3.0",
|
"bignumber.js": "^2.3.0",
|
||||||
"js-sha3": "^0.5.2"
|
"js-sha3": "^0.5.2",
|
||||||
|
"node-fetch": "^1.6.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,10 +14,22 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'babel-polyfill/dist/polyfill.js';
|
||||||
|
import es6Promise from 'es6-promise';
|
||||||
|
es6Promise.polyfill();
|
||||||
|
|
||||||
|
const isNode = typeof global !== 'undefined' && typeof global !== 'undefined';
|
||||||
|
const isBrowser = typeof self !== 'undefined' && typeof self.window !== 'undefined';
|
||||||
|
|
||||||
|
if (isBrowser) {
|
||||||
|
require('whatwg-fetch');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isNode) {
|
||||||
|
global.fetch = require('node-fetch');
|
||||||
|
}
|
||||||
|
|
||||||
import Abi from './abi';
|
import Abi from './abi';
|
||||||
import Api from './api';
|
import Api from './api';
|
||||||
|
|
||||||
export {
|
module.exports = { Api, Abi };
|
||||||
Abi,
|
|
||||||
Api
|
|
||||||
};
|
|
||||||
|
45
js/test/npmLibrary.js
Normal file
45
js/test/npmLibrary.js
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// Copyright 2015, 2016 Ethcore (UK) Ltd.
|
||||||
|
// This file is part of Parity.
|
||||||
|
|
||||||
|
// Parity is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
|
||||||
|
// Parity is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
try {
|
||||||
|
var Api = require('../.npmjs/library.js').Api;
|
||||||
|
var Abi = require('../.npmjs/library.js').Abi;
|
||||||
|
|
||||||
|
if (typeof Api !== 'function') {
|
||||||
|
throw new Error('No Api');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof Abi !== 'function') {
|
||||||
|
throw new Error('No Abi');
|
||||||
|
}
|
||||||
|
|
||||||
|
var transport = new Api.Transport.Http('http://localhost:8545');
|
||||||
|
var api = new Api(transport);
|
||||||
|
|
||||||
|
api.eth
|
||||||
|
.blockNumber()
|
||||||
|
.then((block) => {
|
||||||
|
console.log('library working fine', '(block #' + block.toFormat() + ')');
|
||||||
|
process.exit(0);
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
console.log('library working fine (disconnected)');
|
||||||
|
process.exit(0);
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
console.error('An error occured:', e.toString().split('\n')[0]);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
@ -26,6 +26,7 @@ const DEST = process.env.BUILD_DEST || '.build';
|
|||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
context: path.join(__dirname, './src'),
|
context: path.join(__dirname, './src'),
|
||||||
|
target: 'node',
|
||||||
entry: {
|
entry: {
|
||||||
// library
|
// library
|
||||||
'inject': ['./web3.js'],
|
'inject': ['./web3.js'],
|
||||||
@ -34,9 +35,18 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
output: {
|
output: {
|
||||||
path: path.join(__dirname, DEST),
|
path: path.join(__dirname, DEST),
|
||||||
filename: '[name].js'
|
filename: '[name].js',
|
||||||
|
library: '[name].js',
|
||||||
|
libraryTarget: 'umd'
|
||||||
|
},
|
||||||
|
externals: {
|
||||||
|
'node-fetch': 'node-fetch',
|
||||||
|
'vertx': 'vertx'
|
||||||
},
|
},
|
||||||
module: {
|
module: {
|
||||||
|
noParse: [
|
||||||
|
/babel-polyfill/
|
||||||
|
],
|
||||||
loaders: [
|
loaders: [
|
||||||
{
|
{
|
||||||
test: /\.js$/,
|
test: /\.js$/,
|
||||||
|
@ -24,13 +24,23 @@ const isProd = ENV === 'production';
|
|||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
context: path.join(__dirname, './src'),
|
context: path.join(__dirname, './src'),
|
||||||
|
target: 'node',
|
||||||
entry: 'library.js',
|
entry: 'library.js',
|
||||||
output: {
|
output: {
|
||||||
path: path.join(__dirname, '.npmjs'),
|
path: path.join(__dirname, '.npmjs'),
|
||||||
filename: 'library.js',
|
filename: 'library.js',
|
||||||
libraryTarget: 'commonjs'
|
library: 'Parity',
|
||||||
|
libraryTarget: 'umd',
|
||||||
|
umdNamedDefine: true
|
||||||
|
},
|
||||||
|
externals: {
|
||||||
|
'node-fetch': 'node-fetch',
|
||||||
|
'vertx': 'vertx'
|
||||||
},
|
},
|
||||||
module: {
|
module: {
|
||||||
|
noParse: [
|
||||||
|
/babel-polyfill/
|
||||||
|
],
|
||||||
loaders: [
|
loaders: [
|
||||||
{
|
{
|
||||||
test: /(\.jsx|\.js)$/,
|
test: /(\.jsx|\.js)$/,
|
||||||
|
Loading…
Reference in New Issue
Block a user