Skip to content

Commit 727dc4b

Browse files
author
Micah Riggan
committed
Adding typescript code
1 parent f562afb commit 727dc4b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2356
-1134
lines changed

src/chain.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ module.exports = {
77
lib: require('bitcore-lib-cash'),
88
p2p: require('bitcore-p2p-cash'),
99
},
10-
}
10+
}

src/config.ts

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
const os = require('os');
2-
const program = require('commander');
1+
import * as os from "os";
2+
import parseArgv from "./utils/parseArgv";
3+
import ConfigType from "./types/Config";
4+
let program = parseArgv([], ["config"]);
35

4-
program
5-
.version('8.0.0')
6-
.option('-c, --config <path>', 'The path to bitcore config')
7-
.parse(process.argv);
8-
9-
function findConfig() {
6+
function findConfig(): ConfigType | undefined {
107
let foundConfig;
118
const envConfigPath = process.env.BITCORE_CONFIG_PATH;
129
const argConfigPath = program.config;
13-
const configFileName = 'bitcore.config.json';
10+
const configFileName = "bitcore.config.json";
1411
let bitcoreConfigPaths = [
1512
`${os.homedir()}/${configFileName}`,
1613
`../../../${configFileName}`,
@@ -24,7 +21,7 @@ function findConfig() {
2421
for (let path of bitcoreConfigPaths) {
2522
if (!foundConfig) {
2623
try {
27-
const bitcoreConfig = require(path);
24+
const bitcoreConfig = require(path) as { bitcoreNode: ConfigType };
2825
foundConfig = bitcoreConfig.bitcoreNode;
2926
} catch (e) {
3027
foundConfig = undefined;
@@ -34,8 +31,8 @@ function findConfig() {
3431
return foundConfig;
3532
}
3633

37-
function setTrustedPeers(config) {
38-
for (let [chain, chainObj] of Object.entries(config.chains)) {
34+
function setTrustedPeers(config: ConfigType): ConfigType {
35+
for (let [chain, chainObj] of Object.entries(config)) {
3936
for (let network of Object.keys(chainObj)) {
4037
let env = process.env;
4138
const envString = `TRUSTED_${chain.toUpperCase()}_${network.toUpperCase()}_PEER`;
@@ -51,34 +48,37 @@ function setTrustedPeers(config) {
5148
}
5249
return config;
5350
}
54-
const Config = function() {
55-
let config = {
51+
const Config = function(): ConfigType {
52+
let config: ConfigType = {
5653
maxPoolSize: 20,
54+
pruneSpentScripts: true,
5755
port: 3000,
58-
dbHost: process.env.DB_HOST || '127.0.0.1',
59-
dbName: process.env.DB_NAME || 'bitcore',
56+
dbHost: process.env.DB_HOST || "127.0.0.1",
57+
dbName: process.env.DB_NAME || "bitcore",
6058
numWorkers: os.cpus().length,
6159
chains: {}
6260
};
6361

6462
let foundConfig = findConfig();
6563
Object.assign(config, foundConfig, {});
6664
if (!Object.keys(config.chains).length) {
67-
config.chains.BTC = {
68-
mainnet: {
69-
chainSource: 'p2p',
70-
trustedPeers: [{ host: '127.0.0.1', port: 8333 }],
71-
rpc: {
72-
host: '127.0.0.1',
73-
port: 8332,
74-
username: 'bitcoin',
75-
password: 'bitcoin'
65+
Object.assign(config.chains, {
66+
BTC: {
67+
mainnet: {
68+
chainSource: "p2p",
69+
trustedPeers: [{ host: "127.0.0.1", port: 8333 }],
70+
rpc: {
71+
host: "127.0.0.1",
72+
port: 8332,
73+
username: "bitcoin",
74+
password: "bitcoin"
75+
}
7676
}
7777
}
78-
};
78+
});
7979
}
8080
config = setTrustedPeers(config);
8181
return config;
8282
};
8383

84-
module.exports = new Config();
84+
export default Config();

src/decorators/Loggify.ts

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import logger from '../logger';
2+
import util from 'util';
3+
4+
let LoggifiedClasses: { [key: string]: boolean } = {};
5+
export function LoggifyClass<T extends { new (...args: any[]): {} }>(
6+
aClass: T
7+
) {
8+
return class extends aClass {
9+
constructor(...args: any[]) {
10+
super(...args);
11+
var self = this;
12+
if (!LoggifiedClasses[aClass.name]) {
13+
LoggifiedClasses[aClass.name] = true;
14+
logger.debug(
15+
`Loggifying ${aClass.name} with args:: ${JSON.stringify(args)}`
16+
);
17+
LoggifyObject(aClass, aClass.name, self);
18+
}
19+
}
20+
};
21+
}
22+
23+
export function LoggifyMethod(className: string) {
24+
return function(
25+
target: any,
26+
propertyKey: string,
27+
descriptor: TypedPropertyDescriptor<Function>
28+
) {
29+
let prop = propertyKey;
30+
if (descriptor.value != undefined) {
31+
descriptor.value = LoggifyFunction(descriptor.value, className);
32+
}
33+
};
34+
}
35+
36+
export function LoggifyFunction(fn: Function, logPrefix?: string, bind?: any) {
37+
let copy = fn;
38+
if (bind) {
39+
copy = copy.bind(bind);
40+
}
41+
return function(...methodargs: any[]) {
42+
logger.debug(`${logPrefix}::args::${util.inspect(methodargs)}`);
43+
let returnVal = copy(...methodargs);
44+
if (returnVal && <Promise<any>>returnVal.then) {
45+
returnVal
46+
.catch((err: any) => {
47+
logger.error(`${logPrefix}::catch::${err}`);
48+
throw err;
49+
})
50+
.then((data: any) => {
51+
logger.debug(`${logPrefix}::resolved::${util.inspect(data)}`);
52+
return data;
53+
});
54+
} else {
55+
logger.debug(`${logPrefix}::returned::${util.inspect(returnVal)}`);
56+
}
57+
return returnVal;
58+
};
59+
}
60+
61+
export function LoggifyObject(obj: any, logPrefix: string = '', bind?: any) {
62+
for (let prop of Object.getOwnPropertyNames(obj)) {
63+
if (typeof obj[prop] === 'function') {
64+
let copy = obj[prop];
65+
if (bind) {
66+
copy = copy.bind(bind);
67+
}
68+
logger.debug(`Loggifying ${logPrefix}::${prop}`);
69+
obj[prop] = LoggifyFunction(obj[prop], `${logPrefix}::${prop}`, bind);
70+
}
71+
}
72+
return obj;
73+
}

src/index.js

Whitespace-only changes.

src/logger.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
const winston = require('winston');
2-
3-
const logger = winston.createLogger({
4-
format: winston.format.combine(
5-
winston.format.colorize({ all: true }),
6-
winston.format.simple()
7-
),
1+
import * as winston from 'winston';
2+
import parseArgv from './utils/parseArgv';
3+
let args = parseArgv([], ['DEBUG']);
4+
const logLevel = args.DEBUG ? 'debug' : 'info';
5+
const logger = new winston.Logger({
86
transports: [
9-
new winston.transports.Console()
7+
new winston.transports.Console({
8+
colorize: true,
9+
level: logLevel
10+
})
1011
]
1112
});
1213

13-
module.exports = logger;
14+
export default logger;

0 commit comments

Comments
 (0)