Skip to content
This repository has been archived by the owner on Dec 10, 2020. It is now read-only.

Commit

Permalink
Merge pull request #155 from ethereumjs/fix/browser-build
Browse files Browse the repository at this point in the history
Migrate browser folder files to typescript & fix npm build
  • Loading branch information
holgerd77 committed Oct 23, 2020
2 parents f774a4b + dcf1dab commit 1abcd26
Show file tree
Hide file tree
Showing 8 changed files with 108 additions and 105 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ jobs:
- uses: actions/checkout@v2
- run: npm install
- run: npm run lint
- run: npm run build
- run: npm run coverage
- uses: coverallsapp/github-action@master
with:
Expand Down
75 changes: 0 additions & 75 deletions browser/index.js

This file was deleted.

74 changes: 74 additions & 0 deletions browser/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import Common from 'ethereumjs-common'
const level = require('level')

// Blockchain
export * from '../lib/blockchain/chain'

// Peer
export * from '../lib/net/peer/peer'
export * from '../lib/net/peer/libp2ppeer'
export * from './libp2pnode'

// Peer Pool
export * from '../lib/net/peerpool'

// Protocol
export * from '../lib/net/protocol/protocol'
export * from '../lib/net/protocol/ethprotocol'
export * from '../lib/net/protocol/lesprotocol'
export * from '../lib/net/protocol/flowcontrol'

// Server
export * from '../lib/net/server/server'
export * from '../lib/net/server/libp2pserver'

// Node
export * from '../lib/node'

// Service
export * from '../lib/service/service'
export * from '../lib/service/fastethereumservice'
export * from '../lib/service/lightethereumservice'

// Synchronizer
export * from '../lib/sync/sync'
export * from '../lib/sync/fastsync'
export * from '../lib/sync/lightsync'

// Utilities
export * from '../lib/util'

// Logging
export * from './logging'
import { getLogger } from './logging'

export function createNode(args: any) {
const logger = getLogger({ loglevel: args.loglevel })
const options = {
common: new Common(args.network || 'mainnet'),
servers: [new exports.Libp2pServer({ multiaddrs: [], ...args })],
syncmode: args.syncmode || 'fast',
db: level(args.db || 'ethereumjs'),
logger: logger,
}
return new exports.Node(options)
}

export function run(args: any) {
const node = createNode(args)
const logger = node.logger
logger.info('Initializing Ethereumjs client...')
logger.info(`Connecting to network: ${node.common.chainName()}`)
node.on('error', (err: any) => logger.error(err))
node.on('listening', (details: any) => {
logger.info(`Listener up transport=${details.transport} url=${details.url}`)
})
node.on('synchronized', () => {
logger.info('Synchronized')
})
node.open().then(() => {
logger.info('Synchronizing blockchain...')
node.start()
})
return node
}
25 changes: 11 additions & 14 deletions browser/libp2pnode.js → browser/libp2pnode.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,25 @@
'use strict'

/**
* Libp2p Bundle
* @memberof module:net/peer
*/

const WS = require('libp2p-websockets')
const Bootstrap = require('libp2p-bootstrap')
const Multiplex = require('libp2p-mplex')
const SECIO = require('libp2p-secio')
import LibP2pWebsockets from 'libp2p-websockets'
import LibP2pBootstrap from 'libp2p-bootstrap'
import mplex from 'libp2p-mplex'
import secio from 'libp2p-secio'

const libp2p = require('libp2p')
const promisify = require('util-promisify')

class Libp2pNode extends libp2p {
constructor(options) {
export class Libp2pNode extends libp2p {
constructor(options: any) {
super({
peerInfo: options.peerInfo,
modules: {
transport: [WS],
streamMuxer: [Multiplex],
connEncryption: [SECIO],
peerDiscovery: [Bootstrap],
transport: [LibP2pWebsockets],
streamMuxer: [mplex],
connEncryption: [secio],
peerDiscovery: [LibP2pBootstrap],
},
config: {
peerDiscovery: {
Expand All @@ -43,5 +42,3 @@ class Libp2pNode extends libp2p {
this.asyncDialProtocol = promisify(this.dialProtocol.bind(this))
}
}

module.exports = Libp2pNode
13 changes: 0 additions & 13 deletions browser/logging.js

This file was deleted.

10 changes: 10 additions & 0 deletions browser/logging.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const pino = require('pino')

export function getLogger(options = { loglevel: 'info' }) {
return pino({
level: options.loglevel,
base: null,
})
}

export const defaultLogger = getLogger({ loglevel: 'debug' })
2 changes: 1 addition & 1 deletion tsconfig.browser.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"extends": "@ethereumjs/config-typescript/tsconfig.browser.json",
"include": ["browser/index.js"],
"include": ["browser/index.ts"],
"exclude": ["lib/index.js"],
"compilerOptions": {
"outDir": "dist.browser",
Expand Down
13 changes: 11 additions & 2 deletions webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@ module.exports = {
condition: 'always',
replacement(resourcePath) {
const mapping = {
[resolve('./dist.browser/lib/logging.js')]: resolve('./browser/logging.js'),
[resolve('./dist.browser/lib/logging.js')]: resolve(
'./dist.browser/browser/logging.js'
),
[resolve('./dist.browser/lib/net/peer/libp2pnode.js')]: resolve(
'./browser/libp2pnode.js'
'./dist.browser/browser/libp2pnode.js'
),
}
return mapping[resourcePath]
Expand All @@ -37,4 +39,11 @@ module.exports = {
path: resolve(__dirname, 'dist'),
library: 'ethereumjs',
},
node: {
dgram: 'empty', // used by: rlpxpeer via ethereumjs-devp2p
net: 'empty', // used by: rlpxpeer
},
performance: {
hints: false, // suppress maxAssetSize warnings etc..
},
}

0 comments on commit 1abcd26

Please sign in to comment.