diff --git a/.gitignore b/.gitignore
index ac98c5a..5cbe11f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,7 @@
### App ###
-/dist/
-/native.js
-/_test.js
+dist/
+/packages/nanocurrency/native.js
### TS ###
diff --git a/.gitmodules b/.gitmodules
index bb04a95..7b5d23d 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
-[submodule "src/native/blake2"]
- path = src/native/blake2
+[submodule "packages/nanocurrency/src/native/blake2"]
+ path = packages/nanocurrency/src/native/blake2
url = https://github.com/BLAKE2/BLAKE2.git
diff --git a/.travis.yml b/.travis.yml
index e302048..1fef428 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,8 +14,6 @@ branches:
install:
- yarn
script:
- - yarn build:prod
- - yarn test
- - yarn lint
-after_success:
- - yarn travis-deploy-once "yarn semantic-release"
+ - yarn lerna run build:prod
+ - yarn lerna run test
+ - yarn lerna run lint
diff --git a/examples/multi-threaded/index.html b/examples/multi-threaded/index.html
deleted file mode 100644
index 6753c9c..0000000
--- a/examples/multi-threaded/index.html
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/multi-threaded/worker.js b/examples/multi-threaded/worker.js
deleted file mode 100644
index 3219923..0000000
--- a/examples/multi-threaded/worker.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/* eslint-env worker */
-/* global NanoCurrency:false */
-
-importScripts('https://cdn.jsdelivr.net/npm/nanocurrency@2.0.0/dist/nanocurrency.umd.js');
-
-onmessage = async function({ data }) {
- const { blockHash, workerNumber, workerCount } = data;
-
- postMessage({ type: 'started' });
-
- const work = await NanoCurrency.computeWork(blockHash, workerNumber, workerCount);
-
- postMessage({ type: 'done', work });
-};
diff --git a/examples/pow-benchmark/worker.js b/examples/pow-benchmark/worker.js
deleted file mode 100644
index 3219923..0000000
--- a/examples/pow-benchmark/worker.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/* eslint-env worker */
-/* global NanoCurrency:false */
-
-importScripts('https://cdn.jsdelivr.net/npm/nanocurrency@2.0.0/dist/nanocurrency.umd.js');
-
-onmessage = async function({ data }) {
- const { blockHash, workerNumber, workerCount } = data;
-
- postMessage({ type: 'started' });
-
- const work = await NanoCurrency.computeWork(blockHash, workerNumber, workerCount);
-
- postMessage({ type: 'done', work });
-};
diff --git a/lerna.json b/lerna.json
new file mode 100644
index 0000000..fac1066
--- /dev/null
+++ b/lerna.json
@@ -0,0 +1,7 @@
+{
+ "packages": [
+ "packages/*"
+ ],
+ "version": "independent",
+ "npmClient": "yarn"
+}
diff --git a/package.json b/package.json
index 4b45b94..a99b184 100644
--- a/package.json
+++ b/package.json
@@ -1,95 +1,19 @@
{
- "name": "nanocurrency",
- "description":
- "A toolkit for the Nano cryptocurrency, allowing you to derive keys, generate seeds, hashes, signatures, proofs of work and blocks.",
- "version": "0.0.0-development",
- "author": {
- "name": "Marvin ROGER",
- "email": "dev@marvinroger.fr",
- "url": "https://www.marvinroger.fr"
- },
- "browser": {
- "path": false,
- "fs": false,
- "crypto": false,
- "util": false,
- "./dist/nanocurrency.cjs.js": "./dist/nanocurrency.umd.js"
- },
- "bugs": "https://github.com/marvinroger/nanocurrency-js/issues",
+ "private": true,
+ "workspaces": [
+ "packages/*"
+ ],
"dependencies": {
- "bignumber.js": "^7.2.0",
- "blakejs": "^1.1.0",
- "yargs": "^12.0.1"
+ "@types/node": "^11.11.0",
+ "@types/yargs": "^12.0.9",
+ "cross-env": "^5.2.0",
+ "jest": "^24.3.1",
+ "lerna": "^3.13.1",
+ "prettier": "^1.16.4",
+ "tslint": "^5.13.1",
+ "typedoc": "^0.14.2",
+ "typedoc-plugin-internal-external": "^2.0.1",
+ "typescript": "^3.3.3333"
},
- "devDependencies": {
- "@types/node": "^10.0.0",
- "@types/yargs": "^11.0.0",
- "bundlesize": "^0.17.0",
- "cross-env": "^5.1.3",
- "cross-os": "^1.2.2",
- "cross-var": "^1.1.0",
- "jest": "^23.0.0",
- "prettier": "^1.12.1",
- "puppeteer": "^1.1.1",
- "rollup": "^0.62.0",
- "rollup-plugin-commonjs": "^9.0.0",
- "rollup-plugin-license": "^0.7.0",
- "rollup-plugin-node-resolve": "^3.0.2",
- "rollup-plugin-terser": "^1.0.1",
- "rollup-plugin-typescript2": "^0.14.0",
- "semantic-release": "^15.0.2",
- "travis-deploy-once": "^5.0.0",
- "tslint": "^5.10.0",
- "tslint-config-airbnb": "^5.8.0",
- "tslint-config-prettier": "^1.12.0",
- "typedoc": "^0.11.1",
- "typedoc-plugin-internal-external": "^1.0.10",
- "typescript": "^2.8.3"
- },
- "files": ["dist/"],
- "homepage": "https://github.com/marvinroger/nanocurrency-js",
- "jest": {
- "testPathIgnorePatterns": ["/__tests__/data/", "/node_modules/"]
- },
- "keywords": ["crypto", "currency", "nano", "pow", "raiblocks"],
- "license": "GPL-3.0",
- "main": "dist/nanocurrency.cjs.js",
- "module": "dist/nanocurrency.esm.js",
- "types": "dist/types/index.d.ts",
- "bin": {
- "nanocurrency": "dist/bin/index.js"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/marvinroger/nanocurrency-js.git"
- },
- "scripts": {
- "build:dev": "yarn build:dev:native && yarn build:dev:js",
- "build:dev:js": "cross-env NODE_ENV=development rollup -c",
- "build:dev:native": "cross-env EMCC_ARGS=\"\" cross-os build:native__cross",
- "build:native__common":
- "cross-var docker run --rm -v $PWD:/src trzeci/emscripten emcc -o native.js $EMCC_ARGS -s WASM=1 -s MODULARIZE=1 -s SINGLE_FILE=1 -s \"EXTRA_EXPORTED_RUNTIME_METHODS=[\\\"cwrap\\\"]\" src/native/functions.c src/native/blake2/ref/blake2b-ref.c",
- "build:native__cross": {
- "darwin": "cross-env PWD=\"$(pwd)\" yarn build:native__common",
- "linux": "cross-env PWD=\"$(pwd)\" yarn build:native__common",
- "win32": "cross-env PWD=\"%cd%\" yarn build:native__common"
- },
- "build:prod": "yarn build:prod:native && yarn build:prod:js",
- "build:prod:js": "cross-env NODE_ENV=production rollup -c",
- "build:prod:native":
- "cross-env EMCC_ARGS=\"-O3 --closure 1 --llvm-lto 3\" cross-os build:native__cross",
- "generate-docs": "typedoc src/index.ts",
- "format": "prettier --write \"{src,__tests__}/**/*.{ts,js}\"",
- "lint": "tslint --project . \"src/**/*.ts\"",
- "prepublishOnly": "yarn build:prod:js",
- "semantic-release": "semantic-release",
- "test": "jest && bundlesize",
- "travis-deploy-once": "travis-deploy-once"
- },
- "bundlesize": [
- {
- "path": "./dist/nanocurrency.*.js",
- "maxSize": "100kB"
- }
- ]
+ "name": "nanocurrency-workspace"
}
diff --git a/__tests__/cli.js b/packages/nanocurrency-cli/__tests__/cli.js
similarity index 98%
rename from __tests__/cli.js
rename to packages/nanocurrency-cli/__tests__/cli.js
index a762da6..ec01ec5 100644
--- a/__tests__/cli.js
+++ b/packages/nanocurrency-cli/__tests__/cli.js
@@ -3,12 +3,12 @@
const path = require('path');
const util = require('util');
const exec = util.promisify(require('child_process').exec);
-const nano = require('../dist/nanocurrency.cjs');
+const nano = require('nanocurrency');
const cli = async args => {
try {
const { stdout, stderr } = await exec(
- 'node ' + path.join(__dirname, '../dist/bin/index.js') + ' ' + args
+ 'node ' + path.join(__dirname, '../dist/index.js') + ' ' + args
);
return {
diff --git a/packages/nanocurrency-cli/package.json b/packages/nanocurrency-cli/package.json
new file mode 100644
index 0000000..28eb76a
--- /dev/null
+++ b/packages/nanocurrency-cli/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "nanocurrency-cli",
+ "description": "A toolkit for the Nano cryptocurrency, allowing you to derive keys, generate seeds, hashes, signatures, proofs of work and blocks.",
+ "version": "0.0.0-development",
+ "author": {
+ "name": "Marvin ROGER",
+ "email": "dev@marvinroger.fr",
+ "url": "https://www.marvinroger.fr"
+ },
+ "bugs": "https://github.com/marvinroger/nanocurrency-js/issues",
+ "dependencies": {
+ "nanocurrency": "^2.0.4",
+ "yargs": "^13.0.0"
+ },
+ "files": [
+ "dist/"
+ ],
+ "homepage": "https://github.com/marvinroger/nanocurrency-js",
+ "keywords": [
+ "crypto",
+ "currency",
+ "nano",
+ "pow",
+ "raiblocks"
+ ],
+ "license": "GPL-3.0",
+ "bin": {
+ "nanocurrency": "dist/index.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/marvinroger/nanocurrency-js.git"
+ },
+ "scripts": {
+ "build:prod": "tsc --build",
+ "format": "prettier --write \"{src,__tests__}/**/*.{ts,js}\"",
+ "lint": "tslint --project . \"src/**/*.ts\"",
+ "prepublishOnly": "yarn build",
+ "test": "jest"
+ }
+}
diff --git a/src/cli/index.ts b/packages/nanocurrency-cli/src/index.ts
similarity index 98%
rename from src/cli/index.ts
rename to packages/nanocurrency-cli/src/index.ts
index 12fbf4c..41694c3 100644
--- a/src/cli/index.ts
+++ b/packages/nanocurrency-cli/src/index.ts
@@ -1,6 +1,6 @@
+#!/usr/bin/env node
import * as yargs from 'yargs';
-
-const nanocurrency = require('../nanocurrency.cjs');
+import * as nanocurrency from 'nanocurrency';
const wrapSubcommand = (yargs: yargs.Argv) =>
yargs
@@ -151,8 +151,8 @@ yargs
},
async argv => {
const converted = await nanocurrency.convert(argv.input, {
- from: argv.from,
- to: argv.to,
+ from: argv.from as any,
+ to: argv.to as any,
});
console.log(converted);
}
diff --git a/packages/nanocurrency-cli/tsconfig.json b/packages/nanocurrency-cli/tsconfig.json
new file mode 100644
index 0000000..f158630
--- /dev/null
+++ b/packages/nanocurrency-cli/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig",
+ "files": ["src/index.ts"],
+ "compilerOptions": {
+ "outDir": "dist"
+ }
+}
diff --git a/__tests__/accelerated.js.bak b/packages/nanocurrency/__tests__/accelerated.js.bak
similarity index 100%
rename from __tests__/accelerated.js.bak
rename to packages/nanocurrency/__tests__/accelerated.js.bak
diff --git a/__tests__/block.js b/packages/nanocurrency/__tests__/block.js
similarity index 100%
rename from __tests__/block.js
rename to packages/nanocurrency/__tests__/block.js
diff --git a/__tests__/browser.js b/packages/nanocurrency/__tests__/browser.js
similarity index 100%
rename from __tests__/browser.js
rename to packages/nanocurrency/__tests__/browser.js
diff --git a/__tests__/conversion.js b/packages/nanocurrency/__tests__/conversion.js
similarity index 100%
rename from __tests__/conversion.js
rename to packages/nanocurrency/__tests__/conversion.js
diff --git a/__tests__/data/invalid.js b/packages/nanocurrency/__tests__/data/invalid.js
similarity index 100%
rename from __tests__/data/invalid.js
rename to packages/nanocurrency/__tests__/data/invalid.js
diff --git a/__tests__/data/valid_blocks.json b/packages/nanocurrency/__tests__/data/valid_blocks.json
similarity index 100%
rename from __tests__/data/valid_blocks.json
rename to packages/nanocurrency/__tests__/data/valid_blocks.json
diff --git a/__tests__/data/valid_keys.json b/packages/nanocurrency/__tests__/data/valid_keys.json
similarity index 100%
rename from __tests__/data/valid_keys.json
rename to packages/nanocurrency/__tests__/data/valid_keys.json
diff --git a/__tests__/hash.js b/packages/nanocurrency/__tests__/hash.js
similarity index 100%
rename from __tests__/hash.js
rename to packages/nanocurrency/__tests__/hash.js
diff --git a/__tests__/keys.js b/packages/nanocurrency/__tests__/keys.js
similarity index 100%
rename from __tests__/keys.js
rename to packages/nanocurrency/__tests__/keys.js
diff --git a/__tests__/signature.js b/packages/nanocurrency/__tests__/signature.js
similarity index 100%
rename from __tests__/signature.js
rename to packages/nanocurrency/__tests__/signature.js
diff --git a/__tests__/work.js b/packages/nanocurrency/__tests__/work.js
similarity index 100%
rename from __tests__/work.js
rename to packages/nanocurrency/__tests__/work.js
diff --git a/docs/assets/css/main.css b/packages/nanocurrency/docs/assets/css/main.css
similarity index 100%
rename from docs/assets/css/main.css
rename to packages/nanocurrency/docs/assets/css/main.css
diff --git a/docs/assets/css/main.css.map b/packages/nanocurrency/docs/assets/css/main.css.map
similarity index 100%
rename from docs/assets/css/main.css.map
rename to packages/nanocurrency/docs/assets/css/main.css.map
diff --git a/docs/assets/images/icons.png b/packages/nanocurrency/docs/assets/images/icons.png
similarity index 100%
rename from docs/assets/images/icons.png
rename to packages/nanocurrency/docs/assets/images/icons.png
diff --git a/docs/assets/images/icons@2x.png b/packages/nanocurrency/docs/assets/images/icons@2x.png
similarity index 100%
rename from docs/assets/images/icons@2x.png
rename to packages/nanocurrency/docs/assets/images/icons@2x.png
diff --git a/docs/assets/images/widgets.png b/packages/nanocurrency/docs/assets/images/widgets.png
similarity index 100%
rename from docs/assets/images/widgets.png
rename to packages/nanocurrency/docs/assets/images/widgets.png
diff --git a/docs/assets/images/widgets@2x.png b/packages/nanocurrency/docs/assets/images/widgets@2x.png
similarity index 100%
rename from docs/assets/images/widgets@2x.png
rename to packages/nanocurrency/docs/assets/images/widgets@2x.png
diff --git a/docs/assets/js/main.js b/packages/nanocurrency/docs/assets/js/main.js
similarity index 100%
rename from docs/assets/js/main.js
rename to packages/nanocurrency/docs/assets/js/main.js
diff --git a/docs/assets/js/search.js b/packages/nanocurrency/docs/assets/js/search.js
similarity index 100%
rename from docs/assets/js/search.js
rename to packages/nanocurrency/docs/assets/js/search.js
diff --git a/docs/enums/unit.html b/packages/nanocurrency/docs/enums/unit.html
similarity index 100%
rename from docs/enums/unit.html
rename to packages/nanocurrency/docs/enums/unit.html
diff --git a/docs/index.html b/packages/nanocurrency/docs/index.html
similarity index 100%
rename from docs/index.html
rename to packages/nanocurrency/docs/index.html
diff --git a/docs/interfaces/blockdata.html b/packages/nanocurrency/docs/interfaces/blockdata.html
similarity index 100%
rename from docs/interfaces/blockdata.html
rename to packages/nanocurrency/docs/interfaces/blockdata.html
diff --git a/docs/interfaces/computeworkparams.html b/packages/nanocurrency/docs/interfaces/computeworkparams.html
similarity index 100%
rename from docs/interfaces/computeworkparams.html
rename to packages/nanocurrency/docs/interfaces/computeworkparams.html
diff --git a/docs/interfaces/convertparams.html b/packages/nanocurrency/docs/interfaces/convertparams.html
similarity index 100%
rename from docs/interfaces/convertparams.html
rename to packages/nanocurrency/docs/interfaces/convertparams.html
diff --git a/docs/interfaces/deriveaddressparams.html b/packages/nanocurrency/docs/interfaces/deriveaddressparams.html
similarity index 100%
rename from docs/interfaces/deriveaddressparams.html
rename to packages/nanocurrency/docs/interfaces/deriveaddressparams.html
diff --git a/docs/interfaces/hashblockparams.html b/packages/nanocurrency/docs/interfaces/hashblockparams.html
similarity index 100%
rename from docs/interfaces/hashblockparams.html
rename to packages/nanocurrency/docs/interfaces/hashblockparams.html
diff --git a/docs/interfaces/signblockparams.html b/packages/nanocurrency/docs/interfaces/signblockparams.html
similarity index 100%
rename from docs/interfaces/signblockparams.html
rename to packages/nanocurrency/docs/interfaces/signblockparams.html
diff --git a/docs/interfaces/validateworkparams.html b/packages/nanocurrency/docs/interfaces/validateworkparams.html
similarity index 100%
rename from docs/interfaces/validateworkparams.html
rename to packages/nanocurrency/docs/interfaces/validateworkparams.html
diff --git a/docs/interfaces/verifyblockparams.html b/packages/nanocurrency/docs/interfaces/verifyblockparams.html
similarity index 100%
rename from docs/interfaces/verifyblockparams.html
rename to packages/nanocurrency/docs/interfaces/verifyblockparams.html
diff --git a/examples/pow-benchmark/index.html b/packages/nanocurrency/examples/pow-benchmark/index.html
similarity index 93%
rename from examples/pow-benchmark/index.html
rename to packages/nanocurrency/examples/pow-benchmark/index.html
index cf75f29..45a3543 100644
--- a/examples/pow-benchmark/index.html
+++ b/packages/nanocurrency/examples/pow-benchmark/index.html
@@ -5,14 +5,12 @@
-
+