Skip to content

Commit 50d9ec6

Browse files
author
Julien Heller
committed
Merge branch 'develop'
2 parents ab2b521 + 05121d6 commit 50d9ec6

10 files changed

+129
-2068
lines changed

package.json

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "demux-eos",
3-
"version": "3.1.0",
3+
"version": "4.0.0",
44
"description": "Demux-js Action Reader implementations for EOSIO blockchains",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",
@@ -20,16 +20,16 @@
2020
"@types/node-fetch": "^2.1.6",
2121
"@types/request-promise-native": "^1.0.15",
2222
"jest": "^22.4.3",
23-
"release-it": "^7.5.0",
2423
"ts-jest": "^23.0.0",
2524
"tslint": "^5.10.0",
2625
"tslint-eslint-rules": "^5.3.1",
2726
"typedoc": "^0.11.1",
2827
"typescript": "^2.9.2"
2928
},
3029
"dependencies": {
30+
"@types/express": "^4.16.1",
3131
"bunyan": "^1.8.12",
32-
"demux": "^3.1.4-8cfe8c1.0",
32+
"demux": "^4.0.0",
3333
"eosjs": "^20.0.0-beta3",
3434
"massive": "^5.7.5",
3535
"mongodb": "^3.1.3",
@@ -38,13 +38,10 @@
3838
"request-promise-native": "^1.0.5"
3939
},
4040
"peerDependencies": {
41-
"demux": "^3.1.3"
41+
"demux": "4.0.0"
4242
},
4343
"scripts": {
44-
"release": "release-it",
45-
"compile": "tsc",
46-
"build": "tsc",
47-
"watch": "tsc -w",
44+
"build": "rm -rf dist/* && tsc",
4845
"lint": "tslint -c tslint.json -p tsconfig.json",
4946
"test": "jest",
5047
"build-docs": "./scripts/build-docs.sh",

scripts/build-docs.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
rm -rf docs/*
12
./node_modules/.bin/typedoc --mode file --theme minimal --target "ES6" --exclude "**/*.test.ts,**/testHelpers/*" --hideGenerator --excludeExternals --excludeNotExported --includeDeclarations --readme none --out docs

src/interfaces.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
1-
import { Action } from 'demux'
1+
import { Action, ActionReaderOptions } from 'demux'
2+
3+
export interface NodeosActionReaderOptions extends ActionReaderOptions {
4+
nodeosEndpoint?: string
5+
}
6+
7+
export interface MongoActionReaderOptions extends ActionReaderOptions {
8+
mongoEndpoint?: string
9+
dbName?: string
10+
}
11+
12+
export interface StateHistoryPostgresActionReaderOptions extends ActionReaderOptions {
13+
massiveConfig: any
14+
dbSchema?: string
15+
}
216

317
export interface EosAuthorization {
418
actor: string

src/mongo/MongoActionReader.test.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ describe('MongoActionReader', () => {
99
let reader: any
1010

1111
beforeEach(async () => {
12-
reader = new MongoActionReader('mongodb://127.0.0.1:27017', 0, false, 'EOS')
12+
reader = new MongoActionReader({
13+
startAtBlock: 0,
14+
onlyIrreversible: false,
15+
mongoEndpoint: 'mongodb://127.0.0.1:27017',
16+
dbName: 'EOS'
17+
})
1318
await reader.initialize()
1419
})
1520

@@ -29,7 +34,12 @@ describe('MongoActionReader', () => {
2934
})
3035

3136
it('throws if not correctly initialized', async () => {
32-
const failedReader = new MongoActionReader('mongodb://127.0.0.1:27017', 0, false, 'failed')
37+
const failedReader = new MongoActionReader({
38+
startAtBlock: 0,
39+
onlyIrreversible: false,
40+
mongoEndpoint: 'mongodb://127.0.0.1:27017',
41+
dbName: 'failed',
42+
})
3343
const result = failedReader.getNextBlock()
3444
expect(result).rejects.toThrow(NotInitializedError)
3545
})

src/mongo/MongoActionReader.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import * as Logger from 'bunyan'
21
import { AbstractActionReader, NotInitializedError } from 'demux'
32
import { Db, MongoClient } from 'mongodb'
43
import {
@@ -8,27 +7,24 @@ import {
87
RetrieveHeadBlockError,
98
RetrieveIrreversibleBlockError,
109
} from '../errors'
10+
import { MongoActionReaderOptions } from '../interfaces'
1111
import { retry } from '../utils'
1212
import { MongoBlock } from './MongoBlock'
1313

1414
/**
1515
* Implementation of an ActionReader that reads blocks from a mongodb instance.
1616
*/
1717
export class MongoActionReader extends AbstractActionReader {
18-
protected log: Logger
19-
20-
private mongodb: Db | null
18+
public dbName: string
19+
protected mongoEndpoint: string
2120
private readonly requiredCollections: Set<string> = new Set(['action_traces', 'block_states'])
21+
private mongodb: Db | null
2222

23-
constructor(
24-
protected mongoEndpoint: string = 'mongodb://127.0.0.1:27017',
25-
public startAtBlock: number = 1,
26-
protected onlyIrreversible: boolean = false,
27-
public dbName: string = 'EOS',
28-
) {
29-
super({startAtBlock, onlyIrreversible})
23+
constructor(options: MongoActionReaderOptions = {}) {
24+
super(options)
25+
this.mongoEndpoint = options.mongoEndpoint ? options.mongoEndpoint : 'mongodb://127.0.0.1:27017'
26+
this.dbName = options.dbName ? options.dbName : 'EOS'
3027
this.mongodb = null
31-
this.log = Logger.createLogger({ name: 'demux' })
3228
}
3329

3430
public async getHeadBlockNumber(numRetries: number = 120, waitTimeMs: number = 250): Promise<number> {

src/nodeos/NodeosActionReader.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ describe('NodeosActionReader', () => {
1717
})
1818

1919
beforeEach(() => {
20-
reader = new NodeosActionReader('', 10, false)
20+
reader = new NodeosActionReader({
21+
nodeosEndpoint: '',
22+
startAtBlock: 10,
23+
onlyIrreversible: false
24+
})
2125
})
2226

2327
it('returns head block number', async () => {

src/nodeos/NodeosActionReader.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import * as Logger from 'bunyan'
21
import { AbstractActionReader, NotInitializedError } from 'demux'
32
import request from 'request-promise-native'
43
import { RetrieveBlockError, RetrieveHeadBlockError, RetrieveIrreversibleBlockError } from '../errors'
4+
import { NodeosActionReaderOptions } from '../interfaces'
55
import { retry } from '../utils'
66
import { NodeosBlock } from './NodeosBlock'
77

@@ -12,17 +12,11 @@ import { NodeosBlock } from './NodeosBlock'
1212
*/
1313
export class NodeosActionReader extends AbstractActionReader {
1414
protected nodeosEndpoint: string
15-
protected log: Logger
1615

17-
constructor(
18-
nodeosEndpoint: string = 'http://localhost:8888',
19-
public startAtBlock: number = 1,
20-
protected onlyIrreversible: boolean = false,
21-
) {
22-
super({startAtBlock, onlyIrreversible})
16+
constructor(options: NodeosActionReaderOptions = {}) {
17+
super(options)
18+
const nodeosEndpoint = options.nodeosEndpoint ? options.nodeosEndpoint : 'http://localhost:8888'
2319
this.nodeosEndpoint = nodeosEndpoint.replace(/\/+$/g, '') // Removes trailing slashes
24-
25-
this.log = Logger.createLogger({ name: 'demux' })
2620
}
2721

2822
/**

src/state-history/StateHistoryPostgresActionReader.test.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,16 @@ import { StateHistoryPostgresActionReader } from './StateHistoryPostgresActionRe
33
describe('StateHistoryPostgresActionReader', () => {
44
let reader: any
55
beforeEach(async () => {
6-
reader = new StateHistoryPostgresActionReader(
7-
{},
8-
{
6+
reader = new StateHistoryPostgresActionReader({
7+
massiveConfig: {
98
host: 'localhost',
109
port: 5432,
1110
database: 'statehistory',
1211
user: 'docker',
1312
password: 'docker'
1413
},
15-
'chain'
16-
)
14+
dbSchema: 'chain',
15+
})
1716

1817
await reader.setup()
1918
})

src/state-history/StateHistoryPostgresActionReader.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1-
import { AbstractActionReader, ActionReaderOptions, NotInitializedError } from 'demux'
1+
import { AbstractActionReader, NotInitializedError } from 'demux'
22
import massive from 'massive'
3+
import { StateHistoryPostgresActionReaderOptions } from '../interfaces'
34
import { StateHistoryPostgresBlock } from './StateHistoryPostgresBlock'
45

56
export class StateHistoryPostgresActionReader extends AbstractActionReader {
67
private db: any
78
private massiveInstance: massive.Database | null = null
9+
private massiveConfig: any
10+
private dbSchema: string
811

9-
constructor(
10-
options: ActionReaderOptions,
11-
private massiveConfig: any,
12-
private dbSchema: string = 'chain',
13-
) {
12+
constructor(options: StateHistoryPostgresActionReaderOptions) {
1413
super(options)
14+
this.massiveConfig = options.massiveConfig
15+
this.dbSchema = options.dbSchema ? options.dbSchema : 'chain'
1516
}
1617

1718
public async getHeadBlockNumber(): Promise<number> {

0 commit comments

Comments
 (0)