Skip to content

Commit

Permalink
Add typescript support (#3652)
Browse files Browse the repository at this point in the history
* modernize web3-core

* add tsconfig

* add tsc to package.json

* ignore lib

* build works

* tests pass

* update script

* remove old dist

* address comments

* change main

* bump cache

* add build step to ci

* add pre build step for ci tests

* remove comments

* update changelog

* revert to old dist
  • Loading branch information
GregTheGreek committed Jul 25, 2020
1 parent b0b135c commit 1fc6217
Show file tree
Hide file tree
Showing 52 changed files with 473 additions and 206 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
path: |
node_modules
*/*/node_modules
key: 0-${{ runner.os }}-node12-${{ hashFiles('**/package-lock.json') }}
key: 2-${{ runner.os }}-node12-${{ hashFiles('**/package-lock.json') }}
- run: bash ./scripts/install.sh
if: steps.cache-deps.outputs.cache-hit != 'true'
- run: bash ./scripts/ci.sh
Expand All @@ -48,7 +48,7 @@ jobs:
path: |
node_modules
*/*/node_modules
key: 0-${{ runner.os }}-node${{ matrix.node }}-${{ hashFiles('**/package-lock.json') }}
key: 2-${{ runner.os }}-node${{ matrix.node }}-${{ hashFiles('**/package-lock.json') }}
- run: bash ./scripts/install.sh
if: steps.cache-deps.outputs.cache-hit != 'true'
- run: bash ./scripts/ci.sh
Expand Down Expand Up @@ -78,7 +78,7 @@ jobs:
path: |
node_modules
*/*/node_modules
key: 0-${{ runner.os }}-node12-${{ hashFiles('**/package-lock.json') }}
key: 2-${{ runner.os }}-node12-${{ hashFiles('**/package-lock.json') }}
- run: bash ./scripts/install.sh
if: steps.cache-deps.outputs.cache-hit != 'true'
- run: bash ./scripts/ci.sh
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,4 @@ contracts/
migrations/
truffle-config.js
test/config/ensAddresses.json
*/**/lib
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,12 @@ Released with 1.0.0-beta.37 code base.

### Added

- Support for typescript files (.ts) to be writtern alongside regular .js files (#3652)

### Changed

- `npm run build` now uses TSC to compile (.js allowed) and the build folder is now located under `lib` (#3652)
- Modernized web3-core to use newer es syntax (#3652)

### Fixed

271 changes: 153 additions & 118 deletions package-lock.json

Large diffs are not rendered by default.

7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
"scripts": {
"version": "npm run build",
"postinstall": "npm run bootstrap",
"build": "npm run bootstrap && webpack && cp -r ./dist ./packages/web3",
"build": "npm run bootstrap && lerna run tsc && webpack && cp -r ./dist ./packages/web3",
"publish": "lerna publish",
"bootstrap": "lerna bootstrap --hoist",
"lint": "jshint *.js packages",
"test": "mocha --grep E2E --invert; jshint *.js packages",
"test:unit": "nyc --no-clean --silent _mocha -- -R spec --grep E2E --invert --exit",
"test": "mocha -R spec --require ts-node/register --grep E2E --invert",
"test:unit": "nyc --no-clean --silent _mocha -- -R spec --require ts-node/register --grep E2E --invert --exit",
"test:cov": "npm run cov:clean; npm run test:unit; npm run test:e2e:clients; npm run cov:merge_reports",
"dtslint": "lerna run dtslint",
"depcheck": "lerna exec dependency-check -- --missing --verbose .",
Expand Down Expand Up @@ -128,6 +128,7 @@
"nyc": "^14.1.1",
"pify": "^4.0.1",
"sandboxed-module": "^2.0.3",
"ts-node": "^8.10.2",
"typescript": "^3.9.5",
"underscore": "1.9.1",
"wait-port": "^0.2.6",
Expand Down
3 changes: 2 additions & 1 deletion packages/web3-bzz/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
},
"types": "types/index.d.ts",
"scripts": {
"tsc": "tsc -b tsconfig.json",
"dtslint": "dtslint --localTs ../../node_modules/typescript/lib types"
},
"main": "src/index.js",
"main": "lib/index.js",
"dependencies": {
"@types/node": "^12.12.6",
"got": "9.6.0",
Expand Down
9 changes: 9 additions & 0 deletions packages/web3-bzz/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "./lib"
},
"include": [
"./src"
]
}
3 changes: 2 additions & 1 deletion packages/web3-core-helpers/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
},
"types": "types/index.d.ts",
"scripts": {
"tsc": "tsc -b tsconfig.json",
"dtslint": "dtslint --localTs ../../node_modules/typescript/lib types"
},
"main": "src/index.js",
"main": "lib/index.js",
"dependencies": {
"underscore": "1.9.1",
"web3-eth-iban": "1.2.11",
Expand Down
9 changes: 9 additions & 0 deletions packages/web3-core-helpers/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "./lib"
},
"include": [
"./src"
]
}
3 changes: 2 additions & 1 deletion packages/web3-core-method/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
},
"types": "types/index.d.ts",
"scripts": {
"tsc": "tsc -b tsconfig.json",
"dtslint": "dtslint --localTs ../../node_modules/typescript/lib types"
},
"main": "src/index.js",
"main": "lib/index.js",
"dependencies": {
"@ethersproject/transactions": "^5.0.0-beta.135",
"underscore": "1.9.1",
Expand Down
9 changes: 9 additions & 0 deletions packages/web3-core-method/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "./lib"
},
"include": [
"./src"
]
}
5 changes: 4 additions & 1 deletion packages/web3-core-promievent/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
"engines": {
"node": ">=8.0.0"
},
"main": "src/index.js",
"main": "lib/index.js",
"scripts": {
"tsc": "tsc -b tsconfig.json"
},
"dependencies": {
"eventemitter3": "4.0.4"
}
Expand Down
9 changes: 9 additions & 0 deletions packages/web3-core-promievent/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "./lib"
},
"include": [
"./src"
]
}
5 changes: 4 additions & 1 deletion packages/web3-core-requestmanager/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
"engines": {
"node": ">=8.0.0"
},
"main": "src/index.js",
"main": "lib/index.js",
"scripts": {
"tsc": "tsc -b tsconfig.json"
},
"dependencies": {
"underscore": "1.9.1",
"web3-core-helpers": "1.2.11",
Expand Down
9 changes: 9 additions & 0 deletions packages/web3-core-requestmanager/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "./lib"
},
"include": [
"./src"
]
}
3 changes: 2 additions & 1 deletion packages/web3-core-subscriptions/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
},
"types": "types/index.d.ts",
"scripts": {
"tsc": "tsc -b tsconfig.json",
"dtslint": "dtslint --localTs ../../node_modules/typescript/lib types"
},
"main": "src/index.js",
"main": "lib/index.js",
"dependencies": {
"eventemitter3": "4.0.4",
"underscore": "1.9.1",
Expand Down
9 changes: 9 additions & 0 deletions packages/web3-core-subscriptions/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "./lib"
},
"include": [
"./src"
]
}
3 changes: 2 additions & 1 deletion packages/web3-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
},
"types": "types/index.d.ts",
"scripts": {
"tsc": "tsc -b tsconfig.json",
"dtslint": "dtslint --localTs ../../node_modules/typescript/lib types"
},
"main": "src/index.js",
"main": "lib/index.js",
"dependencies": {
"@types/bn.js": "^4.11.5",
"@types/node": "^12.12.6",
Expand Down
117 changes: 59 additions & 58 deletions packages/web3-core/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,67 +20,68 @@
* @date 2017
*/

"use strict";
const requestManager = require("web3-core-requestmanager");
const extend = require("./extend");

const packageInit = (pkg, args) => {
args = Array.prototype.slice.call(args);

var requestManager = require('web3-core-requestmanager');
var extend = require('./extend.js');
if (!pkg) {
throw new Error('You need to instantiate using the "new" keyword.');
}

module.exports = {
packageInit: function (pkg, args) {
args = Array.prototype.slice.call(args);

if (!pkg) {
throw new Error('You need to instantiate using the "new" keyword.');
}

// make property of pkg._provider, which can properly set providers
Object.defineProperty(pkg, 'currentProvider', {
get: function () {
return pkg._provider;
},
set: function (value) {
return pkg.setProvider(value);
},
enumerable: true,
configurable: true
});

// inherit from parent package or create a new RequestManager
if (args[0] && args[0]._requestManager) {
pkg._requestManager = args[0]._requestManager;
} else {
pkg._requestManager = new requestManager.Manager(args[0], args[1]);
}

// add givenProvider
pkg.givenProvider = requestManager.Manager.givenProvider;
pkg.providers = requestManager.Manager.providers;

pkg._provider = pkg._requestManager.provider;

// add SETPROVIDER function (don't overwrite if already existing)
if (!pkg.setProvider) {
pkg.setProvider = function (provider, net) {
pkg._requestManager.setProvider(provider, net);
pkg._provider = pkg._requestManager.provider;
return true;
};
}

pkg.setRequestManager = function(manager) {
pkg._requestManager = manager;
pkg._provider = manager.provider;
};
// make property of pkg._provider, which can properly set providers
Object.defineProperty(pkg, 'currentProvider', {
get: () => {
return pkg._provider;
},
set: (value) => {
return pkg.setProvider(value);
},
enumerable: true,
configurable: true
});

// inherit from parent package or create a new RequestManager
if (args[0] && args[0]._requestManager) {
pkg._requestManager = args[0]._requestManager;
} else {
pkg._requestManager = new requestManager.Manager(args[0], args[1]);
}

// add givenProvider
pkg.givenProvider = requestManager.Manager.givenProvider;
pkg.providers = requestManager.Manager.providers;

// attach batch request creation
pkg.BatchRequest = requestManager.BatchManager.bind(null, pkg._requestManager);
pkg._provider = pkg._requestManager.provider;

// attach extend function
pkg.extend = extend(pkg);
},
addProviders: function (pkg) {
pkg.givenProvider = requestManager.Manager.givenProvider;
pkg.providers = requestManager.Manager.providers;
// add SETPROVIDER function (don't overwrite if already existing)
if (!pkg.setProvider) {
pkg.setProvider = (provider, net) => {
pkg._requestManager.setProvider(provider, net);
pkg._provider = pkg._requestManager.provider;
return true;
};
}
};

pkg.setRequestManager = (manager) => {
pkg._requestManager = manager;
pkg._provider = manager.provider;
};

// attach batch request creation
pkg.BatchRequest = requestManager.BatchManager.bind(null, pkg._requestManager);

// attach extend function
pkg.extend = extend(pkg);
}

const addProviders = (pkg) => {
pkg.givenProvider = requestManager.Manager.givenProvider;
pkg.providers = requestManager.Manager.providers;
}

module.exports = {
packageInit,
addProviders
}
9 changes: 9 additions & 0 deletions packages/web3-core/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "./lib"
},
"include": [
"./src"
]
}
3 changes: 2 additions & 1 deletion packages/web3-eth-abi/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
},
"types": "types/index.d.ts",
"scripts": {
"tsc": "tsc -b tsconfig.json",
"dtslint": "dtslint --localTs ../../node_modules/typescript/lib types"
},
"main": "src/index.js",
"main": "lib/index.js",
"dependencies": {
"@ethersproject/abi": "5.0.0-beta.153",
"underscore": "1.9.1",
Expand Down
9 changes: 9 additions & 0 deletions packages/web3-eth-abi/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "./lib"
},
"include": [
"./src"
]
}
3 changes: 2 additions & 1 deletion packages/web3-eth-accounts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
},
"types": "types/index.d.ts",
"scripts": {
"tsc": "tsc -b tsconfig.json",
"dtslint": "dtslint --localTs ../../node_modules/typescript/lib types"
},
"main": "src/index.js",
"main": "lib/index.js",
"dependencies": {
"crypto-browserify": "3.12.0",
"eth-lib": "0.2.8",
Expand Down
Loading

0 comments on commit 1fc6217

Please sign in to comment.