aboutsummaryrefslogtreecommitdiffstats
path: root/packages/utils
diff options
context:
space:
mode:
authorLeonid Logvinov <logvinov.leon@gmail.com>2017-12-07 01:55:09 +0800
committerLeonid Logvinov <logvinov.leon@gmail.com>2017-12-07 01:55:09 +0800
commitf1b267cc9fe7f6e5566dc2535b064b92aef92df1 (patch)
treec07a9dd32c5b959d33587ce2d38098dfe397badb /packages/utils
parent598f1dd2d8a89b0e3ab04b2917138997031bafc6 (diff)
downloaddexon-sol-tools-f1b267cc9fe7f6e5566dc2535b064b92aef92df1.tar
dexon-sol-tools-f1b267cc9fe7f6e5566dc2535b064b92aef92df1.tar.gz
dexon-sol-tools-f1b267cc9fe7f6e5566dc2535b064b92aef92df1.tar.bz2
dexon-sol-tools-f1b267cc9fe7f6e5566dc2535b064b92aef92df1.tar.lz
dexon-sol-tools-f1b267cc9fe7f6e5566dc2535b064b92aef92df1.tar.xz
dexon-sol-tools-f1b267cc9fe7f6e5566dc2535b064b92aef92df1.tar.zst
dexon-sol-tools-f1b267cc9fe7f6e5566dc2535b064b92aef92df1.zip
Refactor web3Wrapper to a separate package
Diffstat (limited to 'packages/utils')
-rw-r--r--packages/utils/README.md10
-rw-r--r--packages/utils/package.json33
-rw-r--r--packages/utils/src/index.ts1
-rw-r--r--packages/utils/src/promisify.ts24
-rw-r--r--packages/utils/tsconfig.json15
-rw-r--r--packages/utils/tslint.json5
6 files changed, 88 insertions, 0 deletions
diff --git a/packages/utils/README.md b/packages/utils/README.md
new file mode 100644
index 000000000..5191e0350
--- /dev/null
+++ b/packages/utils/README.md
@@ -0,0 +1,10 @@
+utils
+------
+
+Utils to be shared across 0x projects and packages
+
+## Install
+
+```bash
+yarn add @0xproject/utils
+```
diff --git a/packages/utils/package.json b/packages/utils/package.json
new file mode 100644
index 000000000..f49a95f28
--- /dev/null
+++ b/packages/utils/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "@0xproject/utils",
+ "version": "0.0.1",
+ "description": "0x TS utils",
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "scripts": {
+ "build": "tsc",
+ "clean": "shx rm -rf lib",
+ "lint": "tslint --project . 'src/**/*.ts'"
+ },
+ "license": "Apache-2.0",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/0xProject/0x.js.git"
+ },
+ "bugs": {
+ "url": "https://github.com/0xProject/0x.js/issues"
+ },
+ "homepage": "https://github.com/0xProject/0x.js/packages/utils/README.md",
+ "devDependencies": {
+ "@0xproject/tslint-config": "^0.2.0",
+ "@types/lodash": "^4.14.86",
+ "npm-run-all": "^4.1.2",
+ "shx": "^0.2.2",
+ "tslint": "5.8.0",
+ "typescript": "~2.6.1"
+ },
+ "dependencies": {
+ "bignumber.js": "~4.1.0",
+ "lodash": "^4.17.4"
+ }
+}
diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts
new file mode 100644
index 000000000..a61f04ad2
--- /dev/null
+++ b/packages/utils/src/index.ts
@@ -0,0 +1 @@
+export {promisify} from './promisify';
diff --git a/packages/utils/src/promisify.ts b/packages/utils/src/promisify.ts
new file mode 100644
index 000000000..c114cf32f
--- /dev/null
+++ b/packages/utils/src/promisify.ts
@@ -0,0 +1,24 @@
+import * as _ from 'lodash';
+
+/**
+ * Transforms callback-based function -- func(arg1, arg2 .. argN, callback) -- into an ES6-compatible Promise.
+ * Promisify provides a default callback of the form (error, result) and rejects when `error` is not null. You can also
+ * supply thisArg object as the second argument which will be passed to `apply`.
+ */
+export function promisify<T>(
+ originalFn: (
+ ...args: any[],
+ // HACK: This can't be properly typed without variadic kinds https://github.com/Microsoft/TypeScript/issues/5453
+ ) => void,
+ thisArg?: any,
+): (...callArgs: any[]) => Promise<T> {
+ const promisifiedFunction = async (...callArgs: any[]): Promise<T> => {
+ return new Promise<T>((resolve, reject) => {
+ const callback = (err: Error|null, data?: T) => {
+ _.isNull(err) ? resolve(data) : reject(err);
+ };
+ originalFn.apply(thisArg, [...callArgs, callback]);
+ });
+ };
+ return promisifiedFunction;
+}
diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json
new file mode 100644
index 000000000..111df6d3b
--- /dev/null
+++ b/packages/utils/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "target": "es5",
+ "lib": [ "es2017", "dom"],
+ "outDir": "lib",
+ "sourceMap": true,
+ "declaration": true,
+ "noImplicitAny": true,
+ "strictNullChecks": true
+ },
+ "include": [
+ "./src/**/*"
+ ]
+}
diff --git a/packages/utils/tslint.json b/packages/utils/tslint.json
new file mode 100644
index 000000000..a07795151
--- /dev/null
+++ b/packages/utils/tslint.json
@@ -0,0 +1,5 @@
+{
+ "extends": [
+ "@0xproject/tslint-config"
+ ]
+}