sponnet / locals-faucetserver

a (testnet) Ether faucet with a React frontend and a REST API
MIT License
155 stars 71 forks source link

Error #6

Closed DrHyperKALICH closed 6 years ago

DrHyperKALICH commented 6 years ago

Hello!

Please help me to resolve this error at start:

/root/locals-faucetserver/node_modules/bitcore-mnemonic/node_modules/bitcore-lib/index.js:12 throw new Error(message); ^

Error: More than one instance of bitcore-lib found. Please make sure to require bitcore-lib and check that submodules do not also include their own bitcore-lib dependency. at Object.bitcore.versionGuard (/root/locals-faucetserver/node_modules/bitcore-mnemonic/node_modules/bitcore-lib/index.js:12:11) at Object. (/root/locals-faucetserver/node_modules/bitcore-mnemonic/node_modules/bitcore-lib/index.js:15:9) at Module._compile (module.js:652:30) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3) at Module.require (module.js:596:17) at require (internal/module.js:11:18) at Object. (/root/locals-faucetserver/node_modules/bitcore-mnemonic/lib/mnemonic.js:3:15)

sponnet commented 6 years ago

I had these problems too before, they appeared for me in certain versions of the eth-lightwallet module. I believe I switched back to an older version to resolve it. ( 2.3.1 )

Please check if you have exactly this version of the lightwallet module installed

Below are the versions I have installed on the faucet server currently. You can use a specific version of any module removing the tilde(~) and caret(^) in the file package.json

Hope this helps ! If you manage to fix it using these tips - please let me know. Thx !

$ npm list

├─┬ cors@2.7.1
│ └── vary@1.1.0
├─┬ eth-lightwallet@2.3.1
│ ├── bignumber.js@2.0.7 (git://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2)
│ ├─┬ bitcore-lib@0.13.14
│ │ ├── bn.js@2.0.4
│ │ ├── bs58@2.0.0
│ │ ├── buffer-compare@1.0.0
│ │ ├─┬ elliptic@3.0.3
│ │ │ ├── brorand@1.0.5
│ │ │ └── hash.js@1.0.3
│ │ ├── inherits@2.0.1
│ │ ├── lodash@3.10.1
│ │ └── sha512@0.0.1
│ ├─┬ bitcore-mnemonic@1.0.1
│ │ └── unorm@1.4.1
│ ├── crypto-js@3.1.6
│ ├─┬ elliptic@3.1.0
│ │ ├── bn.js@2.2.0
│ │ ├── brorand@1.0.5
│ │ ├── hash.js@1.0.3
│ │ └── inherits@2.0.1
│ ├─┬ ethereumjs-tx@1.1.1
│ │ └── ethereum-common@0.0.17
│ ├─┬ ethereumjs-util@4.3.0
│ │ ├── bn.js@4.11.3
│ │ ├─┬ keccakjs@0.1.0
│ │ │ ├─┬ browserify-sha3@0.0.1
│ │ │ │ └── js-sha3@0.3.1
│ │ │ └── sha3@1.2.0
│ │ └─┬ secp256k1@3.0.1
│ │   ├── bindings@1.2.1
│ │   ├── bn.js@4.11.3
│ │   ├─┬ drbg.js@1.0.1
│ │   │ ├─┬ browserify-aes@1.0.6
│ │   │ │ ├── buffer-xor@1.0.3
│ │   │ │ ├── cipher-base@1.0.2
│ │   │ │ └── evp_bytestokey@1.0.0
│ │   │ ├─┬ create-hash@1.1.2
│ │   │ │ ├── ripemd160@1.0.1
│ │   │ │ └── sha.js@2.4.5
│ │   │ └── create-hmac@1.1.4
│ │   ├── elliptic@6.2.3
│ │   └── nan@2.2.1
│ ├── rlp@2.0.0
│ ├── scrypt-async@1.2.0
│ └── tweetnacl@0.13.2
├─┬ express@4.13.4
│ ├─┬ accepts@1.2.13
│ │ ├─┬ mime-types@2.1.10
│ │ │ └── mime-db@1.22.0
│ │ └── negotiator@0.5.3
│ ├── array-flatten@1.1.1
│ ├── content-disposition@0.5.1
│ ├── content-type@1.0.1
│ ├── cookie@0.1.5
│ ├── cookie-signature@1.0.6
│ ├─┬ debug@2.2.0
│ │ └── ms@0.7.1
│ ├── depd@1.1.0
│ ├── escape-html@1.0.3
│ ├── etag@1.7.0
│ ├─┬ finalhandler@0.4.1
│ │ └── unpipe@1.0.0
│ ├── fresh@0.3.0
│ ├── merge-descriptors@1.0.1
│ ├── methods@1.1.2
│ ├─┬ on-finished@2.3.0
│ │ └── ee-first@1.1.1
│ ├── parseurl@1.3.1
│ ├── path-to-regexp@0.1.7
│ ├─┬ proxy-addr@1.0.10
│ │ ├── forwarded@0.1.0
│ │ └── ipaddr.js@1.0.5
│ ├── qs@4.0.0
│ ├── range-parser@1.0.3
│ ├─┬ send@0.13.1
│ │ ├── destroy@1.0.4
│ │ ├── http-errors@1.3.1
│ │ ├── mime@1.3.4
│ │ └── statuses@1.2.1
│ ├── serve-static@1.10.2
│ ├─┬ type-is@1.6.12
│ │ └── media-typer@0.3.0
│ ├── utils-merge@1.0.0
│ └── vary@1.0.1
├─┬ firebase@2.4.2
│ └─┬ faye-websocket@0.9.3
│   └─┬ websocket-driver@0.5.2
│     └── websocket-extensions@0.1.1
├─┬ firebase-queue@1.3.1
│ ├── node-uuid@1.4.7
│ ├── rsvp@3.2.1
│ └─┬ winston@2.2.0
│   ├── async@1.0.0
│   ├── colors@1.0.3
│   ├── cycle@1.0.3
│   ├── eyes@0.1.8
│   ├── isstream@0.1.2
│   ├── pkginfo@0.3.1
│   └── stack-trace@0.0.9
├─┬ hooked-web3-provider@1.0.0
│ └─┬ web3@0.15.1
│   └── bignumber.js@2.0.7 (git://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2)
├── lodash@4.11.1
└─┬ web3@0.15.3
  ├── bignumber.js@2.0.7 (git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2)
  ├── utf8@2.1.1
  └── xmlhttprequest@1.8.0
DrHyperKALICH commented 6 years ago

Please make "npm list" from static/locals-faucet folder.

Now i got module.js:434 return process.dlopen(module, path._makeLong(filename)); ^

Error: Module version mismatch. Expected 46, got 57.

sponnet commented 6 years ago

sure

├─┬ browser-sync@2.12.3
│ ├─┬ browser-sync-client@2.4.2
│ │ ├── etag@1.7.0
│ │ └── fresh@0.3.0
│ ├─┬ browser-sync-ui@0.5.19
│ │ ├── async-each-series@0.1.1
│ │ ├─┬ stream-throttle@0.1.3
│ │ │ └── limiter@1.1.0
│ │ └─┬ weinre@2.0.0-pre-I0Z7U9OV
│ │   └─┬ express@2.5.11
│ │     ├─┬ connect@1.9.2
│ │     │ └── formidable@1.0.17
│ │     ├── mime@1.2.4
│ │     ├── mkdirp@0.3.0
│ │     └── qs@0.4.2
│ ├── bs-recipes@1.2.2
│ ├─┬ chokidar@1.4.3
│ │ ├── anymatch@1.3.0
│ │ ├── async-each@1.0.0
│ │ ├── UNMET OPTIONAL DEPENDENCY fsevents@^1.0.0
│ │ ├── glob-parent@2.0.0
│ │ ├── inherits@2.0.1
│ │ ├─┬ is-binary-path@1.0.1
│ │ │ └── binary-extensions@1.4.0
│ │ ├── is-glob@2.0.1
│ │ ├── path-is-absolute@1.0.0
│ │ └── readdirp@2.0.0
│ ├─┬ connect@3.4.1
│ │ ├─┬ debug@2.2.0
│ │ │ └── ms@0.7.1
│ │ ├─┬ finalhandler@0.4.1
│ │ │ ├─┬ on-finished@2.3.0
│ │ │ │ └── ee-first@1.1.1
│ │ │ └── unpipe@1.0.0
│ │ ├── parseurl@1.3.1
│ │ └── utils-merge@1.0.0
│ ├── dev-ip@1.0.1
│ ├─┬ easy-extender@2.3.2
│ │ └── lodash@3.10.1
│ ├─┬ eazy-logger@2.1.3
│ │ ├─┬ lodash.clonedeep@4.3.1
│ │ │ └── lodash._baseclone@4.5.6
│ │ ├─┬ opt-merger@1.1.1
│ │ │ └── lodash@3.10.1
│ │ └─┬ tfunk@3.0.2
│ │   └── object-path@0.9.2
│ ├── emitter-steward@1.0.0
│ ├─┬ fs-extra@0.26.7
│ │ ├── graceful-fs@4.1.3
│ │ ├── jsonfile@2.3.0
│ │ └── klaw@1.2.0
│ ├─┬ http-proxy@1.13.2
│ │ ├── eventemitter3@1.2.0
│ │ └── requires-port@1.0.0
│ ├── immutable@3.7.6
│ ├─┬ localtunnel@1.8.1
│ │ ├── openurl@1.1.0
│ │ ├─┬ request@2.65.0
│ │ │ ├── aws-sign2@0.6.0
│ │ │ ├─┬ bl@1.0.3
│ │ │ │ └─┬ readable-stream@2.0.6
│ │ │ │   └── isarray@1.0.0
│ │ │ ├── caseless@0.11.0
│ │ │ ├─┬ combined-stream@1.0.5
│ │ │ │ └── delayed-stream@1.0.0
│ │ │ ├── extend@3.0.0
│ │ │ ├── forever-agent@0.6.1
│ │ │ ├── form-data@1.0.0-rc4
│ │ │ ├─┬ har-validator@2.0.6
│ │ │ │ └─┬ is-my-json-valid@2.13.1
│ │ │ │   ├── generate-function@2.0.0
│ │ │ │   ├─┬ generate-object-property@1.2.0
│ │ │ │   │ └── is-property@1.0.2
│ │ │ │   └── jsonpointer@2.0.0
│ │ │ ├─┬ hawk@3.1.3
│ │ │ │ ├── boom@2.10.1
│ │ │ │ ├── cryptiles@2.0.5
│ │ │ │ ├── hoek@2.16.3
│ │ │ │ └── sntp@1.0.9
│ │ │ ├─┬ http-signature@0.11.0
│ │ │ │ ├── asn1@0.1.11
│ │ │ │ ├── assert-plus@0.1.5
│ │ │ │ └── ctype@0.5.3
│ │ │ ├── isstream@0.1.2
│ │ │ ├── json-stringify-safe@5.0.1
│ │ │ ├── oauth-sign@0.8.1
│ │ │ ├── qs@5.2.0
│ │ │ ├── stringstream@0.0.5
│ │ │ ├── tough-cookie@2.2.2
│ │ │ └── tunnel-agent@0.4.2
│ │ └─┬ yargs@3.29.0
│ │   ├── camelcase@1.2.1
│ │   └── window-size@0.1.4
│ ├── lodash@4.10.0
│ ├─┬ micromatch@2.3.7
│ │ ├─┬ arr-diff@2.0.0
│ │ │ └── arr-flatten@1.0.1
│ │ ├── array-unique@0.2.1
│ │ ├─┬ braces@1.8.4
│ │ │ ├─┬ expand-range@1.8.1
│ │ │ │ └─┬ fill-range@2.2.3
│ │ │ │   ├── is-number@2.1.0
│ │ │ │   ├── randomatic@1.1.5
│ │ │ │   └── repeat-string@1.5.4
│ │ │ ├── preserve@0.2.0
│ │ │ └── repeat-element@1.1.2
│ │ ├─┬ expand-brackets@0.1.5
│ │ │ └── is-posix-bracket@0.1.1
│ │ ├── extglob@0.3.2
│ │ ├── filename-regex@2.0.0
│ │ ├── is-extglob@1.0.0
│ │ ├─┬ kind-of@3.0.2
│ │ │ └── is-buffer@1.1.3
│ │ ├── normalize-path@2.0.1
│ │ ├─┬ parse-glob@3.0.4
│ │ │ ├── glob-base@0.3.0
│ │ │ └── is-dotfile@1.0.2
│ │ └─┬ regex-cache@0.4.3
│ │   ├── is-equal-shallow@0.1.3
│ │   └── is-primitive@2.0.0
│ ├── opn@3.0.3
│ ├─┬ portscanner@1.0.0
│ │ └── async@0.1.15
│ ├── qs@6.1.0
│ ├── resp-modifier@6.0.0
│ ├─┬ serve-index@1.7.3
│ │ ├─┬ accepts@1.2.13
│ │ │ └── negotiator@0.5.3
│ │ ├── batch@0.5.3
│ │ ├── escape-html@1.0.3
│ │ ├─┬ http-errors@1.3.1
│ │ │ └── statuses@1.2.1
│ │ └─┬ mime-types@2.1.10
│ │   └── mime-db@1.22.0
│ ├─┬ serve-static@1.10.2
│ │ └─┬ send@0.13.1
│ │   ├── depd@1.1.0
│ │   ├── destroy@1.0.4
│ │   ├── mime@1.3.4
│ │   └── range-parser@1.0.3
│ ├─┬ socket.io@1.4.5
│ │ ├─┬ engine.io@1.6.8
│ │ │ ├─┬ accepts@1.1.4
│ │ │ │ ├─┬ mime-types@2.0.14
│ │ │ │ │ └── mime-db@1.12.0
│ │ │ │ └── negotiator@0.4.9
│ │ │ ├── base64id@0.1.0
│ │ │ ├─┬ engine.io-parser@1.2.4
│ │ │ │ ├── after@0.8.1
│ │ │ │ ├── arraybuffer.slice@0.0.6
│ │ │ │ ├── base64-arraybuffer@0.1.2
│ │ │ │ ├── blob@0.0.4
│ │ │ │ ├── has-binary@0.1.6
│ │ │ │ └── utf8@2.1.0
│ │ │ └─┬ ws@1.0.1
│ │ │   ├── options@0.0.6
│ │ │   └── ultron@1.0.2
│ │ ├── has-binary@0.1.7
│ │ ├─┬ socket.io-adapter@0.4.0
│ │ │ └─┬ socket.io-parser@2.2.2
│ │ │   ├── debug@0.7.4
│ │ │   └── json3@3.2.6
│ │ ├─┬ socket.io-client@1.4.5
│ │ │ ├── backo2@1.0.2
│ │ │ ├── component-bind@1.0.0
│ │ │ ├── component-emitter@1.2.0
│ │ │ ├─┬ engine.io-client@1.6.8
│ │ │ │ ├── component-inherit@0.0.3
│ │ │ │ ├── has-cors@1.1.0
│ │ │ │ ├── parsejson@0.0.1
│ │ │ │ ├── parseqs@0.0.2
│ │ │ │ ├── xmlhttprequest-ssl@1.5.1
│ │ │ │ └── yeast@0.1.2
│ │ │ ├── indexof@0.0.1
│ │ │ ├── object-component@0.0.3
│ │ │ ├─┬ parseuri@0.0.4
│ │ │ │ └─┬ better-assert@1.0.2
│ │ │ │   └── callsite@1.0.0
│ │ │ └── to-array@0.1.4
│ │ └─┬ socket.io-parser@2.2.6
│ │   ├── benchmark@1.0.0
│ │   ├── component-emitter@1.1.2
│ │   └── json3@3.3.2
│ ├── ua-parser-js@0.7.10
│ ├── ucfirst@1.0.0
│ └─┬ yargs@4.4.0
│   ├── camelcase@2.1.1
│   ├─┬ cliui@3.2.0
│   │ └── wrap-ansi@2.0.0
│   ├── decamelize@1.2.0
│   ├─┬ lodash.assign@4.0.8
│   │ ├── lodash.keys@4.0.6
│   │ └── lodash.rest@4.0.2
│   ├─┬ os-locale@1.4.0
│   │ └─┬ lcid@1.0.0
│   │   └── invert-kv@1.0.0
│   ├─┬ pkg-conf@1.1.2
│   │ ├─┬ find-up@1.1.2
│   │ │ └── path-exists@2.1.0
│   │ ├─┬ load-json-file@1.1.0
│   │ │ └─┬ parse-json@2.2.0
│   │ │   └─┬ error-ex@1.3.0
│   │ │     └── is-arrayish@0.2.1
│   │ └── symbol@0.2.1
│   ├─┬ read-pkg-up@1.0.1
│   │ └─┬ read-pkg@1.1.0
│   │   └── path-type@1.1.0
│   ├── require-main-filename@1.0.1
│   ├─┬ string-width@1.0.1
│   │ ├── code-point-at@1.0.0
│   │ └── is-fullwidth-code-point@1.0.0
│   ├── window-size@0.2.0
│   ├── y18n@3.2.1
│   └─┬ yargs-parser@2.4.0
│     └── camelcase@2.1.1
├── connect-history-api-fallback@1.2.0
├─┬ del@2.2.0
│ ├─┬ globby@4.0.0
│ │ ├── array-union@1.0.1
│ │ ├── arrify@1.0.1
│ │ └── glob@6.0.4
│ ├── is-path-cwd@1.0.0
│ ├─┬ is-path-in-cwd@1.0.0
│ │ └─┬ is-path-inside@1.0.0
│ │   └── path-is-inside@1.0.1
│ ├── object-assign@4.0.1
│ ├── pify@2.3.0
│ ├─┬ pinkie-promise@2.0.1
│ │ └── pinkie@2.0.4
│ └─┬ rimraf@2.5.2
│   └── glob@7.0.3
├─┬ glob-all@3.0.1
│ └─┬ glob@4.5.3
│   ├─┬ inflight@1.0.4
│   │ └── wrappy@1.0.1
│   └── once@1.3.3
├─┬ gulp@3.9.1
│ ├── archy@1.0.0
│ ├─┬ chalk@1.1.3
│ │ ├── ansi-styles@2.2.1
│ │ ├── escape-string-regexp@1.0.5
│ │ ├─┬ has-ansi@2.0.0
│ │ │ └── ansi-regex@2.0.0
│ │ ├── strip-ansi@3.0.1
│ │ └── supports-color@2.0.0
│ ├── deprecated@0.0.1
│ ├─┬ gulp-util@3.0.7
│ │ ├── array-differ@1.0.0
│ │ ├── array-uniq@1.0.2
│ │ ├── beeper@1.1.0
│ │ ├── dateformat@1.0.12
│ │ ├─┬ gulplog@1.0.0
│ │ │ └── glogg@1.0.0
│ │ ├─┬ has-gulplog@0.1.0
│ │ │ └── sparkles@1.0.0
│ │ ├── lodash._reescape@3.0.0
│ │ ├── lodash._reevaluate@3.0.0
│ │ ├── lodash._reinterpolate@3.0.0
│ │ ├─┬ lodash.template@3.6.2
│ │ │ ├── lodash._basecopy@3.0.1
│ │ │ ├── lodash._basetostring@3.0.1
│ │ │ ├── lodash._basevalues@3.0.0
│ │ │ ├── lodash._isiterateecall@3.0.9
│ │ │ ├── lodash.escape@3.2.0
│ │ │ ├─┬ lodash.keys@3.1.2
│ │ │ │ ├── lodash._getnative@3.9.1
│ │ │ │ ├── lodash.isarguments@3.0.8
│ │ │ │ └── lodash.isarray@3.0.4
│ │ │ ├── lodash.restparam@3.6.1
│ │ │ └── lodash.templatesettings@3.1.1
│ │ ├─┬ multipipe@0.1.2
│ │ │ └─┬ duplexer2@0.0.2
│ │ │   └── readable-stream@1.1.14
│ │ ├── object-assign@3.0.0
│ │ ├── replace-ext@0.0.1
│ │ ├─┬ through2@2.0.1
│ │ │ └─┬ readable-stream@2.0.6
│ │ │   └── isarray@1.0.0
│ │ └── vinyl@0.5.3
│ ├── interpret@1.0.0
│ ├─┬ liftoff@2.2.1
│ │ ├── extend@2.0.1
│ │ ├─┬ findup-sync@0.3.0
│ │ │ └── glob@5.0.15
│ │ ├── flagged-respawn@0.3.2
│ │ └── rechoir@0.6.2
│ ├── minimist@1.2.0
│ ├─┬ orchestrator@0.3.7
│ │ ├── end-of-stream@0.1.5
│ │ ├── sequencify@0.0.7
│ │ └── stream-consume@0.1.0
│ ├── pretty-hrtime@1.0.2
│ ├── semver@4.3.6
│ ├─┬ tildify@1.2.0
│ │ └── os-homedir@1.0.1
│ ├─┬ v8flags@2.0.11
│ │ └── user-home@1.1.1
│ └─┬ vinyl-fs@0.3.14
│   ├── defaults@1.0.3
│   ├─┬ glob-stream@3.1.18
│   │ ├── glob@4.5.3
│   │ ├─┬ glob2base@0.0.12
│   │ │ └── find-index@0.1.1
│   │ ├── ordered-read-streams@0.1.0
│   │ └── unique-stream@1.0.0
│   ├─┬ glob-watcher@0.0.6
│   │ └─┬ gaze@0.5.2
│   │   └─┬ globule@0.1.0
│   │     ├─┬ glob@3.1.21
│   │     │ ├── graceful-fs@1.2.3
│   │     │ └── inherits@1.0.2
│   │     ├── lodash@1.0.2
│   │     └── minimatch@0.2.14
│   ├── graceful-fs@3.0.8
│   ├─┬ mkdirp@0.5.1
│   │ └── minimist@0.0.8
│   ├─┬ strip-bom@1.0.0
│   │ ├── first-chunk-stream@1.0.0
│   │ └── is-utf8@0.2.1
│   └─┬ vinyl@0.4.6
│     └── clone@0.2.0
├─┬ gulp-autoprefixer@3.1.0
│ ├─┬ autoprefixer@6.3.6
│ │ ├── browserslist@1.3.1
│ │ ├── caniuse-db@1.0.30000459
│ │ ├── normalize-range@0.1.2
│ │ ├── num2fraction@1.2.2
│ │ └── postcss-value-parser@3.3.0
│ ├─┬ postcss@5.0.19
│ │ ├── js-base64@2.1.9
│ │ ├── source-map@0.5.3
│ │ └─┬ supports-color@3.1.2
│ │   └── has-flag@1.0.0
│ ├─┬ through2@2.0.1
│ │ ├─┬ readable-stream@2.0.6
│ │ │ └── isarray@1.0.0
│ │ └── xtend@4.0.1
│ └── vinyl-sourcemaps-apply@0.2.1
├─┬ gulp-cache@0.4.4
│ ├── bluebird@3.3.5
│ ├─┬ cache-swap@0.2.3
│ │ └─┬ mkdirp@0.5.1
│ │   └── minimist@0.0.8
│ ├─┬ object.omit@2.0.0
│ │ ├─┬ for-own@0.1.4
│ │ │ └── for-in@0.1.5
│ │ └── is-extendable@0.1.1
│ ├── object.pick@1.1.2
│ ├─┬ readable-stream@2.1.0
│ │ ├── core-util-is@1.0.2
│ │ ├─┬ inline-process-browser@2.0.1
│ │ │ └─┬ falafel@1.2.0
│ │ │   ├── acorn@1.2.2
│ │ │   ├── foreach@2.0.5
│ │ │   └── object-keys@1.0.9
│ │ ├── isarray@1.0.0
│ │ ├── process-nextick-args@1.0.6
│ │ ├── string_decoder@0.10.31
│ │ ├─┬ unreachable-branch-transform@0.5.1
│ │ │ ├── esmangle-evaluator@1.0.0
│ │ │ └─┬ recast@0.11.5
│ │ │   ├── ast-types@0.8.16
│ │ │   └── private@0.1.6
│ │ └── util-deprecate@1.0.2
│ ├── try-json-parse@0.1.1
│ └─┬ vinyl@1.1.1
│   ├── clone@1.0.2
│   └── clone-stats@0.0.1
├─┬ gulp-changed@1.3.0
│ └─┬ through2@2.0.1
│   └─┬ readable-stream@2.0.6
│     └── isarray@1.0.0
├─┬ gulp-gh-pages@0.5.4
│ ├─┬ gift@0.6.1
│ │ └── underscore@1.7.0
│ ├─┬ vinyl-fs@2.4.3
│ │ ├─┬ duplexify@3.4.3
│ │ │ └── end-of-stream@1.0.0
│ │ ├─┬ glob-stream@5.3.2
│ │ │ ├── glob@5.0.15
│ │ │ ├─┬ ordered-read-streams@0.3.0
│ │ │ │ └── is-stream@1.1.0
│ │ │ ├─┬ through2@0.6.5
│ │ │ │ └── readable-stream@1.0.34
│ │ │ ├─┬ to-absolute-glob@0.1.1
│ │ │ │ └── extend-shallow@2.0.1
│ │ │ └─┬ unique-stream@2.2.1
│ │ │   └─┬ json-stable-stringify@1.0.1
│ │ │     └── jsonify@0.0.0
│ │ ├─┬ gulp-sourcemaps@1.6.0
│ │ │ ├── convert-source-map@1.2.0
│ │ │ ├─┬ through2@2.0.1
│ │ │ │ └─┬ readable-stream@2.0.6
│ │ │ │   └── isarray@1.0.0
│ │ │ └── vinyl@1.1.1
│ │ ├── is-valid-glob@0.3.0
│ │ ├── lazystream@1.0.0
│ │ ├─┬ lodash.isequal@4.1.4
│ │ │ ├── lodash._root@3.0.1
│ │ │ └── lodash._stack@4.1.3
│ │ ├─┬ mkdirp@0.5.1
│ │ │ └── minimist@0.0.8
│ │ ├── strip-bom@2.0.0
│ │ ├── strip-bom-stream@1.0.0
│ │ ├─┬ through2@2.0.1
│ │ │ └─┬ readable-stream@2.0.6
│ │ │   └── isarray@1.0.0
│ │ ├─┬ through2-filter@2.0.0
│ │ │ └─┬ through2@2.0.1
│ │ │   └─┬ readable-stream@2.0.6
│ │ │     └── isarray@1.0.0
│ │ ├── vali-date@1.0.0
│ │ └── vinyl@1.1.1
│ └── wrap-promise@1.0.1
├─┬ gulp-html-extract@0.1.0
│ ├─┬ cheerio@0.19.0
│ │ ├─┬ css-select@1.0.0
│ │ │ ├── boolbase@1.0.0
│ │ │ ├── css-what@1.0.0
│ │ │ ├── domutils@1.4.3
│ │ │ └── nth-check@1.0.1
│ │ ├─┬ dom-serializer@0.1.0
│ │ │ └── domelementtype@1.1.3
│ │ ├── entities@1.1.1
│ │ ├─┬ htmlparser2@3.8.3
│ │ │ ├── domelementtype@1.3.0
│ │ │ ├── domhandler@2.3.0
│ │ │ ├── domutils@1.5.1
│ │ │ ├── entities@1.0.0
│ │ │ └── readable-stream@1.1.14
│ │ └── lodash@3.10.1
│ ├─┬ gulp-util@2.2.14
│ │ ├─┬ chalk@0.4.0
│ │ │ ├── ansi-styles@1.0.0
│ │ │ ├── has-color@0.1.7
│ │ │ └── strip-ansi@0.1.1
│ │ ├── lodash._reinterpolate@2.4.1
│ │ ├─┬ lodash.template@2.4.1
│ │ │ ├── lodash._escapestringchar@2.4.1
│ │ │ ├─┬ lodash.defaults@2.4.1
│ │ │ │ ├── lodash._objecttypes@2.4.1
│ │ │ │ └── lodash.keys@2.4.1
│ │ │ ├─┬ lodash.escape@2.4.1
│ │ │ │ ├─┬ lodash._escapehtmlchar@2.4.1
│ │ │ │ │ └── lodash._htmlescapes@2.4.1
│ │ │ │ └─┬ lodash._reunescapedhtml@2.4.1
│ │ │ │   └── lodash.keys@2.4.1
│ │ │ ├─┬ lodash.keys@2.4.1
│ │ │ │ ├── lodash._isnative@2.4.1
│ │ │ │ ├── lodash._shimkeys@2.4.1
│ │ │ │ └── lodash.isobject@2.4.1
│ │ │ ├── lodash.templatesettings@2.4.1
│ │ │ └─┬ lodash.values@2.4.1
│ │ │   └── lodash.keys@2.4.1
│ │ ├── minimist@0.0.10
│ │ ├─┬ multipipe@0.0.2
│ │ │ └── duplexer2@0.0.1
│ │ └── vinyl@0.2.3
│ └─┬ through2@0.4.1
│   ├── readable-stream@1.0.34
│   └─┬ xtend@2.1.2
│     └── object-keys@0.4.0
├─┬ gulp-if@2.0.0
│ ├─┬ gulp-match@1.0.1
│ │ └── minimatch@3.0.0
│ ├─┬ ternary-stream@2.0.0
│ │ ├── fork-stream@0.0.4
│ │ └─┬ through2@2.0.1
│ │   └─┬ readable-stream@2.0.6
│ │     └── isarray@1.0.0
│ └─┬ through2@2.0.1
│   └─┬ readable-stream@2.0.6
│     └── isarray@1.0.0
├─┬ gulp-imagemin@2.4.0
│ ├─┬ imagemin@4.0.0
│ │ ├─┬ buffer-to-vinyl@1.1.0
│ │ │ ├── file-type@3.8.0
│ │ │ ├── uuid@2.0.2
│ │ │ └── vinyl@1.1.1
│ │ ├─┬ concat-stream@1.5.1
│ │ │ ├─┬ readable-stream@2.0.6
│ │ │ │ └── isarray@1.0.0
│ │ │ └── typedarray@0.0.6
│ │ ├─┬ imagemin-gifsicle@4.2.0
│ │ │ ├─┬ gifsicle@3.0.3
│ │ │ │ ├─┬ bin-build@2.2.0
│ │ │ │ │ ├── archive-type@3.2.0
│ │ │ │ │ ├─┬ decompress@3.0.0
│ │ │ │ │ │ ├─┬ decompress-tar@3.1.0
│ │ │ │ │ │ │ ├── is-tar@1.0.0
│ │ │ │ │ │ │ ├── object-assign@2.1.1
│ │ │ │ │ │ │ ├─┬ strip-dirs@1.1.1
│ │ │ │ │ │ │ │ ├─┬ is-absolute@0.1.7
│ │ │ │ │ │ │ │ │ └── is-relative@0.1.3
│ │ │ │ │ │ │ │ ├── is-natural-number@2.0.0
│ │ │ │ │ │ │ │ └── sum-up@1.0.3
│ │ │ │ │ │ │ ├─┬ tar-stream@1.5.2
│ │ │ │ │ │ │ │ └── end-of-stream@1.1.0
│ │ │ │ │ │ │ └─┬ vinyl@0.4.6
│ │ │ │ │ │ │   └── clone@0.2.0
│ │ │ │ │ │ ├─┬ decompress-tarbz2@3.1.0
│ │ │ │ │ │ │ ├── is-bzip2@1.0.0
│ │ │ │ │ │ │ ├── object-assign@2.1.1
│ │ │ │ │ │ │ ├─┬ seek-bzip@1.0.5
│ │ │ │ │ │ │ │ └── commander@2.8.1
│ │ │ │ │ │ │ └─┬ vinyl@0.4.6
│ │ │ │ │ │ │   └── clone@0.2.0
│ │ │ │ │ │ ├─┬ decompress-targz@3.1.0
│ │ │ │ │ │ │ ├── is-gzip@1.0.0
│ │ │ │ │ │ │ ├── object-assign@2.1.1
│ │ │ │ │ │ │ └─┬ vinyl@0.4.6
│ │ │ │ │ │ │   └── clone@0.2.0
│ │ │ │ │ │ ├─┬ decompress-unzip@3.4.0
│ │ │ │ │ │ │ ├── is-zip@1.0.0
│ │ │ │ │ │ │ ├── stat-mode@0.2.1
│ │ │ │ │ │ │ ├─┬ through2@2.0.1
│ │ │ │ │ │ │ │ └─┬ readable-stream@2.0.6
│ │ │ │ │ │ │ │   └── isarray@1.0.0
│ │ │ │ │ │ │ ├── vinyl@1.1.1
│ │ │ │ │ │ │ └─┬ yauzl@2.4.1
│ │ │ │ │ │ │   └─┬ fd-slicer@1.0.1
│ │ │ │ │ │ │     └── pend@1.2.0
│ │ │ │ │ │ ├── vinyl-assign@1.2.1
│ │ │ │ │ │ └─┬ vinyl-fs@2.4.3
│ │ │ │ │ │   ├─┬ glob-stream@5.3.2
│ │ │ │ │ │   │ ├── glob@5.0.15
│ │ │ │ │ │   │ ├── ordered-read-streams@0.3.0
│ │ │ │ │ │   │ ├─┬ through2@0.6.5
│ │ │ │ │ │   │ │ └── readable-stream@1.0.34
│ │ │ │ │ │   │ └── unique-stream@2.2.1
│ │ │ │ │ │   ├─┬ mkdirp@0.5.1
│ │ │ │ │ │   │ └── minimist@0.0.8
│ │ │ │ │ │   ├─┬ through2@2.0.1
│ │ │ │ │ │   │ └─┬ readable-stream@2.0.6
│ │ │ │ │ │   │   └── isarray@1.0.0
│ │ │ │ │ │   └── vinyl@1.1.1
│ │ │ │ │ ├─┬ download@4.4.3
│ │ │ │ │ │ ├─┬ caw@1.2.0
│ │ │ │ │ │ │ ├── get-proxy@1.1.0
│ │ │ │ │ │ │ └── object-assign@3.0.0
│ │ │ │ │ │ ├─┬ filenamify@1.2.1
│ │ │ │ │ │ │ ├── filename-reserved-regex@1.0.0
│ │ │ │ │ │ │ ├── strip-outer@1.0.0
│ │ │ │ │ │ │ └── trim-repeated@1.0.0
│ │ │ │ │ │ ├── gulp-decompress@1.2.0
│ │ │ │ │ │ ├── is-url@1.2.1
│ │ │ │ │ │ ├── vinyl@1.1.1
│ │ │ │ │ │ ├─┬ vinyl-fs@2.4.3
│ │ │ │ │ │ │ ├─┬ glob-stream@5.3.2
│ │ │ │ │ │ │ │ ├── glob@5.0.15
│ │ │ │ │ │ │ │ ├── ordered-read-streams@0.3.0
│ │ │ │ │ │ │ │ ├─┬ through2@0.6.5
│ │ │ │ │ │ │ │ │ └── readable-stream@1.0.34
│ │ │ │ │ │ │ │ └── unique-stream@2.2.1
│ │ │ │ │ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ │ │ │ │ └── minimist@0.0.8
│ │ │ │ │ │ │ └─┬ through2@2.0.1
│ │ │ │ │ │ │   └─┬ readable-stream@2.0.6
│ │ │ │ │ │ │     └── isarray@1.0.0
│ │ │ │ │ │ └─┬ ware@1.3.0
│ │ │ │ │ │   └─┬ wrap-fn@0.1.5
│ │ │ │ │ │     └── co@3.1.0
│ │ │ │ │ ├─┬ exec-series@1.0.2
│ │ │ │ │ │ └── async-each-series@1.1.0
│ │ │ │ │ └─┬ url-regex@3.1.1
│ │ │ │ │   └── ip-regex@1.0.3
│ │ │ │ ├─┬ bin-wrapper@3.0.2
│ │ │ │ │ ├─┬ bin-check@2.0.0
│ │ │ │ │ │ └── executable@1.1.0
│ │ │ │ │ ├─┬ bin-version-check@2.1.0
│ │ │ │ │ │ ├─┬ bin-version@1.0.4
│ │ │ │ │ │ │ └─┬ find-versions@1.2.1
│ │ │ │ │ │ │   └── semver-regex@1.0.0
│ │ │ │ │ │ ├── semver@4.3.6
│ │ │ │ │ │ └── semver-truncate@1.1.0
│ │ │ │ │ ├─┬ each-async@1.1.1
│ │ │ │ │ │ ├── onetime@1.1.0
│ │ │ │ │ │ └── set-immediate-shim@1.0.1
│ │ │ │ │ ├── lazy-req@1.1.0
│ │ │ │ │ └── os-filter-obj@1.0.3
│ │ │ │ └─┬ logalot@2.1.0
│ │ │ │   ├── figures@1.5.0
│ │ │ │   └─┬ squeak@1.3.0
│ │ │ │     ├── console-stream@0.1.1
│ │ │ │     └─┬ lpad-align@1.1.0
│ │ │ │       └── lpad@2.0.1
│ │ │ └── is-gif@1.0.0
│ │ ├─┬ imagemin-jpegtran@4.3.2
│ │ │ ├── is-jpg@1.0.0
│ │ │ ├── jpegtran-bin@3.0.6
│ │ │ └─┬ through2@2.0.1
│ │ │   └─┬ readable-stream@2.0.6
│ │ │     └── isarray@1.0.0
│ │ ├─┬ imagemin-optipng@4.3.0
│ │ │ ├─┬ exec-buffer@2.0.1
│ │ │ │ └── tempfile@1.1.1
│ │ │ ├── is-png@1.0.0
│ │ │ └── optipng-bin@3.1.1
│ │ ├─┬ imagemin-svgo@4.2.1
│ │ │ ├── is-svg@1.1.1
│ │ │ ├─┬ svgo@0.6.4
│ │ │ │ ├─┬ coa@1.0.1
│ │ │ │ │ └── q@1.4.1
│ │ │ │ ├── colors@1.1.2
│ │ │ │ ├─┬ csso@1.8.1
│ │ │ │ │ └─┬ clap@1.1.0
│ │ │ │ │   └── chalk@1.1.1
│ │ │ │ ├── js-yaml@3.5.5
│ │ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ │ └── minimist@0.0.8
│ │ │ │ ├── sax@1.2.1
│ │ │ │ └── whet.extend@0.9.9
│ │ │ └─┬ through2@2.0.1
│ │ │   └─┬ readable-stream@2.0.6
│ │ │     └── isarray@1.0.0
│ │ ├── optional@0.1.3
│ │ ├─┬ stream-combiner2@1.1.1
│ │ │ └── duplexer2@0.1.4
│ │ └─┬ vinyl-fs@2.4.3
│ │   ├─┬ glob-stream@5.3.2
│ │   │ ├── glob@5.0.15
│ │   │ ├── ordered-read-streams@0.3.0
│ │   │ ├─┬ through2@0.6.5
│ │   │ │ └── readable-stream@1.0.34
│ │   │ └── unique-stream@2.2.1
│ │   ├─┬ mkdirp@0.5.1
│ │   │ └── minimist@0.0.8
│ │   ├─┬ through2@2.0.1
│ │   │ └─┬ readable-stream@2.0.6
│ │   │   └── isarray@1.0.0
│ │   └── vinyl@1.1.1
│ ├─┬ plur@2.1.2
│ │ └── irregular-plurals@1.1.0
│ ├─┬ pretty-bytes@2.0.1
│ │ ├── get-stdin@4.0.1
│ │ ├─┬ meow@3.7.0
│ │ │ ├─┬ camelcase-keys@2.1.0
│ │ │ │ └── camelcase@2.1.1
│ │ │ ├─┬ loud-rejection@1.3.0
│ │ │ │ ├── array-find-index@1.0.1
│ │ │ │ └── signal-exit@2.1.2
│ │ │ ├── map-obj@1.0.1
│ │ │ ├─┬ normalize-package-data@2.3.5
│ │ │ │ ├── hosted-git-info@2.1.4
│ │ │ │ ├─┬ is-builtin-module@1.0.0
│ │ │ │ │ └── builtin-modules@1.1.1
│ │ │ │ └─┬ validate-npm-package-license@3.0.1
│ │ │ │   ├─┬ spdx-correct@1.0.2
│ │ │ │   │ └── spdx-license-ids@1.2.1
│ │ │ │   └─┬ spdx-expression-parse@1.0.2
│ │ │ │     └── spdx-exceptions@1.0.4
│ │ │ ├─┬ redent@1.0.0
│ │ │ │ ├── indent-string@2.1.0
│ │ │ │ └── strip-indent@1.0.1
│ │ │ └── trim-newlines@1.0.0
│ │ └── number-is-nan@1.0.0
│ └─┬ through2-concurrent@1.1.0
│   └─┬ through2@2.0.1
│     └─┬ readable-stream@2.0.6
│       └── isarray@1.0.0
├─┬ gulp-jscs@3.0.2
│ ├─┬ jscs@2.11.0
│ │ ├─┬ babel-jscs@2.0.5
│ │ │ ├─┬ babel-core@5.8.38
│ │ │ │ ├── babel-plugin-constant-folding@1.0.1
│ │ │ │ ├── babel-plugin-dead-code-elimination@1.0.2
│ │ │ │ ├── babel-plugin-eval@1.0.1
│ │ │ │ ├── babel-plugin-inline-environment-variables@1.0.1
│ │ │ │ ├── babel-plugin-jscript@1.0.4
│ │ │ │ ├── babel-plugin-member-expression-literals@1.0.1
│ │ │ │ ├── babel-plugin-property-literals@1.0.1
│ │ │ │ ├─┬ babel-plugin-proto-to-assign@1.0.4
│ │ │ │ │ └── lodash@3.10.1
│ │ │ │ ├── babel-plugin-react-constant-elements@1.0.3
│ │ │ │ ├── babel-plugin-react-display-name@1.0.3
│ │ │ │ ├── babel-plugin-remove-console@1.0.1
│ │ │ │ ├── babel-plugin-remove-debugger@1.0.1
│ │ │ │ ├── babel-plugin-runtime@1.0.7
│ │ │ │ ├─┬ babel-plugin-undeclared-variables-check@1.0.2
│ │ │ │ │ └── leven@1.0.2
│ │ │ │ ├── babel-plugin-undefined-to-void@1.1.6
│ │ │ │ ├── babylon@5.8.38
│ │ │ │ ├── bluebird@2.10.2
│ │ │ │ ├── core-js@1.2.6
│ │ │ │ ├─┬ detect-indent@3.0.1
│ │ │ │ │ └── repeating@1.1.3
│ │ │ │ ├── fs-readdir-recursive@0.1.2
│ │ │ │ ├── globals@6.4.1
│ │ │ │ ├── home-or-tmp@1.0.0
│ │ │ │ ├── is-integer@1.0.6
│ │ │ │ ├── js-tokens@1.0.1
│ │ │ │ ├── json5@0.4.0
│ │ │ │ ├── lodash@3.10.1
│ │ │ │ ├─┬ output-file-sync@1.1.1
│ │ │ │ │ └─┬ mkdirp@0.5.1
│ │ │ │ │   └── minimist@0.0.8
│ │ │ │ ├── path-exists@1.0.0
│ │ │ │ ├─┬ regenerator@0.8.40
│ │ │ │ │ ├─┬ commoner@0.10.4
│ │ │ │ │ │ ├─┬ detective@4.3.1
│ │ │ │ │ │ │ └── defined@1.0.0
│ │ │ │ │ │ ├── glob@5.0.15
│ │ │ │ │ │ ├── iconv-lite@0.4.13
│ │ │ │ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ │ │ │ └── minimist@0.0.8
│ │ │ │ │ │ └─┬ recast@0.10.43
│ │ │ │ │ │   ├── ast-types@0.8.15
│ │ │ │ │ │   └── esprima-fb@15001.1001.0-dev-harmony-fb
│ │ │ │ │ ├─┬ defs@1.1.1
│ │ │ │ │ │ ├─┬ alter@0.2.0
│ │ │ │ │ │ │ └── stable@0.1.5
│ │ │ │ │ │ ├── ast-traverse@0.1.1
│ │ │ │ │ │ ├── breakable@1.0.0
│ │ │ │ │ │ ├── esprima-fb@15001.1001.0-dev-harmony-fb
│ │ │ │ │ │ ├── simple-fmt@0.1.0
│ │ │ │ │ │ ├── simple-is@0.2.0
│ │ │ │ │ │ ├── stringmap@0.2.2
│ │ │ │ │ │ ├── stringset@0.2.1
│ │ │ │ │ │ ├── tryor@0.1.2
│ │ │ │ │ │ └─┬ yargs@3.27.0
│ │ │ │ │ │   └── cliui@2.1.0
│ │ │ │ │ ├── esprima-fb@15001.1001.0-dev-harmony-fb
│ │ │ │ │ └─┬ recast@0.10.33
│ │ │ │ │   └── ast-types@0.8.12
│ │ │ │ ├─┬ regexpu@1.3.0
│ │ │ │ │ ├─┬ recast@0.10.43
│ │ │ │ │ │ ├── ast-types@0.8.15
│ │ │ │ │ │ └── esprima-fb@15001.1001.0-dev-harmony-fb
│ │ │ │ │ ├── regenerate@1.2.1
│ │ │ │ │ ├── regjsgen@0.2.0
│ │ │ │ │ └─┬ regjsparser@0.1.5
│ │ │ │ │   └── jsesc@0.5.0
│ │ │ │ ├── repeating@1.1.3
│ │ │ │ ├── shebang-regex@1.0.0
│ │ │ │ ├── slash@1.0.0
│ │ │ │ ├─┬ source-map-support@0.2.10
│ │ │ │ │ └── source-map@0.1.32
│ │ │ │ ├── to-fast-properties@1.0.2
│ │ │ │ ├── trim-right@1.0.1
│ │ │ │ └── try-resolve@1.0.1
│ │ │ └─┬ lodash.assign@3.2.0
│ │ │   ├─┬ lodash._baseassign@3.2.0
│ │ │   │ └── lodash.keys@3.1.2
│ │ │   ├─┬ lodash._createassigner@3.1.1
│ │ │   │ └── lodash._bindcallback@3.0.1
│ │ │   └── lodash.keys@3.1.2
│ │ ├─┬ cli-table@0.3.1
│ │ │ └── colors@1.0.3
│ │ ├─┬ commander@2.9.0
│ │ │ └── graceful-readlink@1.0.1
│ │ ├─┬ escope@3.6.0
│ │ │ ├─┬ es6-map@0.1.3
│ │ │ │ ├── es6-set@0.1.4
│ │ │ │ ├── es6-symbol@3.0.2
│ │ │ │ └── event-emitter@0.3.4
│ │ │ ├── es6-weak-map@2.0.1
│ │ │ └─┬ esrecurse@4.1.0
│ │ │   └── estraverse@4.1.1
│ │ ├── esprima@2.7.2
│ │ ├── estraverse@4.2.0
│ │ ├── exit@0.1.2
│ │ ├── glob@5.0.15
│ │ ├─┬ js-yaml@3.4.6
│ │ │ ├─┬ argparse@1.0.7
│ │ │ │ └── sprintf-js@1.0.3
│ │ │ └── inherit@2.2.3
│ │ ├─┬ jscs-jsdoc@1.3.2
│ │ │ ├── comment-parser@0.3.1
│ │ │ └─┬ jsdoctypeparser@1.2.0
│ │ │   └── lodash@3.10.1
│ │ ├── jscs-preset-wikimedia@1.0.0
│ │ ├─┬ jsonlint@1.6.2
│ │ │ ├── JSV@4.0.2
│ │ │ └─┬ nomnom@1.8.1
│ │ │   ├─┬ chalk@0.4.0
│ │ │   │ ├── ansi-styles@1.0.0
│ │ │   │ └── strip-ansi@0.1.1
│ │ │   └── underscore@1.6.0
│ │ ├── lodash@3.10.1
│ │ ├── minimatch@3.0.0
│ │ ├── natural-compare@1.2.2
│ │ ├── pathval@0.1.1
│ │ ├─┬ prompt@0.2.14
│ │ │ ├── pkginfo@0.4.0
│ │ │ ├─┬ read@1.0.7
│ │ │ │ └── mute-stream@0.0.6
│ │ │ ├── revalidator@0.1.8
│ │ │ ├─┬ utile@0.2.1
│ │ │ │ ├── async@0.2.10
│ │ │ │ ├── deep-equal@1.0.1
│ │ │ │ ├── i@0.3.4
│ │ │ │ └── ncp@0.4.2
│ │ │ └─┬ winston@0.8.3
│ │ │   ├── async@0.2.10
│ │ │   ├── colors@0.6.2
│ │ │   ├── cycle@1.0.3
│ │ │   ├── eyes@0.1.8
│ │ │   ├── pkginfo@0.3.1
│ │ │   └── stack-trace@0.0.9
│ │ ├── reserved-words@0.1.1
│ │ ├── strip-json-comments@1.0.4
│ │ ├── to-double-quotes@2.0.0
│ │ ├── to-single-quotes@2.0.0
│ │ ├── vow@0.4.12
│ │ ├─┬ vow-fs@0.3.5
│ │ │ ├── glob@4.5.3
│ │ │ └── vow-queue@0.4.2
│ │ └─┬ xmlbuilder@3.1.0
│ │   └── lodash@3.10.1
│ └─┬ through2@2.0.1
│   └─┬ readable-stream@2.0.6
│     └── isarray@1.0.0
├─┬ gulp-jscs-stylish@1.4.0
│ └─┬ gulp-tap@0.1.3
│   └─┬ event-stream@3.1.7
│     └── split@0.2.10
├─┬ gulp-jshint@1.12.0
│ ├─┬ jshint@2.9.2
│ │ ├─┬ cli@0.6.6
│ │ │ └─┬ glob@3.2.11
│ │ │   └─┬ minimatch@0.3.0
│ │ │     ├── lru-cache@2.7.3
│ │ │     └── sigmund@1.0.1
│ │ ├─┬ console-browserify@1.1.0
│ │ │ └── date-now@0.1.4
│ │ ├── lodash@3.7.0
│ │ └── shelljs@0.3.0
│ ├── lodash@3.10.1
│ ├─┬ minimatch@2.0.10
│ │ └─┬ brace-expansion@1.1.3
│ │   ├── balanced-match@0.3.0
│ │   └── concat-map@0.0.1
│ ├─┬ rcloader@0.1.2
│ │ ├── lodash@2.4.2
│ │ └─┬ rcfinder@0.1.8
│ │   └── lodash@2.4.2
│ └─┬ through2@0.6.5
│   └── readable-stream@1.0.34
├─┬ gulp-load-plugins@1.2.2
│ ├─┬ findup-sync@0.2.1
│ │ └── glob@4.3.5
│ ├── multimatch@2.0.0
│ └── resolve@1.1.7
├─┬ gulp-minify-css@1.2.4
│ ├─┬ clean-css@3.4.12
│ │ ├── commander@2.8.1
│ │ └─┬ source-map@0.4.4
│ │   └── amdefine@1.0.0
│ └─┬ vinyl-bufferstream@1.0.1
│   └─┬ bufferstreams@1.0.1
│     └── readable-stream@1.1.14
├─┬ gulp-minify-html@1.0.6
│ └─┬ minimize@1.8.1
│   ├── argh@0.1.4
│   ├── async@1.5.2
│   ├─┬ cli-color@1.1.0
│   │ ├── d@0.1.1
│   │ ├── es5-ext@0.10.11
│   │ ├── es6-iterator@2.0.0
│   │ ├─┬ memoizee@0.3.10
│   │ │ ├─┬ es6-weak-map@0.1.4
│   │ │ │ ├── es6-iterator@0.1.3
│   │ │ │ └── es6-symbol@2.0.1
│   │ │ ├── lru-queue@0.1.0
│   │ │ └── next-tick@0.2.2
│   │ └── timers-ext@0.1.0
│   ├─┬ diagnostics@1.0.1
│   │ ├─┬ colorspace@1.0.1
│   │ │ ├─┬ color@0.8.0
│   │ │ │ ├── color-convert@0.5.3
│   │ │ │ └─┬ color-string@0.3.0
│   │ │ │   └── color-name@1.1.1
│   │ │ └── text-hex@0.0.0
│   │ ├─┬ enabled@1.0.2
│   │ │ └── env-variable@0.0.3
│   │ └─┬ kuler@0.0.0
│   │   └── colornames@0.0.2
│   ├── emits@3.0.0
│   ├─┬ htmlparser2@3.9.0
│   │ └── domutils@1.5.1
│   └── node-uuid@1.4.7
├── gulp-rename@1.2.2
├─┬ gulp-replace@0.5.4
│ ├─┬ istextorbinary@1.0.2
│ │ ├── binaryextensions@1.0.0
│ │ └── textextensions@1.0.1
│ └─┬ replacestream@4.0.0
│   └── object-assign@3.0.0
├─┬ gulp-size@2.1.0
│ ├─┬ gzip-size@3.0.0
│ │ └── duplexer@0.1.1
│ ├── pretty-bytes@3.0.1
│ ├── stream-counter@1.0.0
│ └─┬ through2@2.0.1
│   └─┬ readable-stream@2.0.6
│     └── isarray@1.0.0
├─┬ gulp-uglify@1.5.3
│ ├── deap@1.0.0
│ ├─┬ fancy-log@1.2.0
│ │ └── time-stamp@1.0.1
│ ├─┬ isobject@2.0.0
│ │ └── isarray@0.0.1
│ ├─┬ through2@2.0.1
│ │ └─┬ readable-stream@2.0.6
│ │   └── isarray@1.0.0
│ ├─┬ uglify-js@2.6.2
│ │ ├── async@0.2.10
│ │ ├── uglify-to-browserify@1.0.2
│ │ └─┬ yargs@3.10.0
│ │   ├─┬ cliui@2.1.0
│ │   │ ├─┬ center-align@0.1.3
│ │   │ │ ├─┬ align-text@0.1.4
│ │   │ │ │ └── longest@1.0.1
│ │   │ │ └── lazy-cache@1.0.3
│ │   │ ├── right-align@0.1.3
│ │   │ └── wordwrap@0.0.2
│ │   └── window-size@0.1.0
│ └── uglify-save-license@0.4.1
├─┬ gulp-useref@2.1.0
│ ├─┬ event-stream@3.3.2
│ │ ├── from@0.1.3
│ │ ├── map-stream@0.1.0
│ │ ├── pause-stream@0.0.11
│ │ ├── split@0.3.3
│ │ ├── stream-combiner@0.0.4
│ │ └── through@2.3.8
│ ├── glob@5.0.15
│ ├─┬ gulp-concat@2.6.0
│ │ └── concat-with-sourcemaps@1.0.4
│ ├─┬ is-relative-url@1.0.0
│ │ └── is-absolute-url@1.0.0
│ ├── node-useref@0.3.15
│ └─┬ vinyl-fs@2.4.3
│   ├─┬ glob-stream@5.3.2
│   │ ├── ordered-read-streams@0.3.0
│   │ └── unique-stream@2.2.1
│   ├─┬ mkdirp@0.5.1
│   │ └── minimist@0.0.8
│   ├─┬ through2@2.0.1
│   │ └─┬ readable-stream@2.0.6
│   │   └── isarray@1.0.0
│   └── vinyl@1.1.1
├─┬ gulp-vulcanize@6.1.0
│ └─┬ through2@2.0.1
│   └─┬ readable-stream@2.0.6
│     └── isarray@1.0.0
├─┬ jshint-stylish@2.1.0
│ ├── log-symbols@1.0.2
│ ├── string-length@1.0.1
│ └── text-table@0.2.0
├── merge-stream@1.0.0
├── require-dir@0.3.0
├── run-sequence@1.1.5
└─┬ vulcanize@1.14.8
  ├─┬ dom5@1.3.1
  │ └── parse5@1.5.1
  ├── es6-promise@2.3.0
  ├─┬ hydrolysis@1.23.3
  │ ├─┬ babel-polyfill@6.7.4
  │ │ ├── babel-regenerator-runtime@6.5.0
  │ │ ├── babel-runtime@5.8.38
  │ │ └── core-js@2.2.2
  │ ├─┬ doctrine@0.7.2
  │ │ └── esutils@1.1.6
  │ ├─┬ escodegen@1.8.0
  │ │ ├── estraverse@1.9.3
  │ │ ├── esutils@2.0.2
  │ │ ├─┬ optionator@0.8.1
  │ │ │ ├── deep-is@0.1.3
  │ │ │ ├── fast-levenshtein@1.1.3
  │ │ │ ├── levn@0.3.0
  │ │ │ ├── prelude-ls@1.1.2
  │ │ │ ├── type-check@0.3.2
  │ │ │ └── wordwrap@1.0.0
  │ │ └── source-map@0.2.0
  │ ├─┬ espree@3.1.4
  │ │ ├── acorn@3.1.0
  │ │ └─┬ acorn-jsx@3.0.0
  │ │   └── acorn@3.1.0
  │ └── estraverse@3.1.0
  ├─┬ nopt@3.0.6
  │ └── abbrev@1.0.7
  ├── path-posix@1.0.0
  └─┬ update-notifier@0.6.3
    ├─┬ boxen@0.3.1
    │ ├── filled-array@1.1.0
    │ ├─┬ repeating@2.0.1
    │ │ └── is-finite@1.0.1
    │ └── widest-line@1.0.0
    ├─┬ configstore@2.0.0
    │ ├─┬ dot-prop@2.4.0
    │ │ └── is-obj@1.0.1
    │ ├─┬ mkdirp@0.5.1
    │ │ └── minimist@0.0.8
    │ ├── os-tmpdir@1.0.1
    │ ├── osenv@0.1.3
    │ ├─┬ write-file-atomic@1.1.4
    │ │ ├── imurmurhash@0.1.4
    │ │ └── slide@1.1.6
    │ └── xdg-basedir@2.0.0
    ├── is-npm@1.0.0
    ├─┬ latest-version@2.0.0
    │ └─┬ package-json@2.3.2
    │   ├─┬ got@5.6.0
    │   │ ├─┬ create-error-class@3.0.2
    │   │ │ └── capture-stack-trace@1.0.0
    │   │ ├── duplexer2@0.1.4
    │   │ ├── is-plain-obj@1.1.0
    │   │ ├── is-redirect@1.0.0
    │   │ ├── is-retry-allowed@1.0.0
    │   │ ├── lowercase-keys@1.0.0
    │   │ ├── node-status-codes@1.0.0
    │   │ ├── read-all-stream@3.1.0
    │   │ ├── timed-out@2.0.0
    │   │ ├── unzip-response@1.0.0
    │   │ └─┬ url-parse-lax@1.0.0
    │   │   └── prepend-http@1.0.3
    │   ├─┬ rc@1.1.6
    │   │ ├── deep-extend@0.4.1
    │   │ └── ini@1.3.4
    │   └── registry-url@3.1.0
    └─┬ semver-diff@2.1.0
      └── semver@5.1.0
DrHyperKALICH commented 6 years ago

Many thanks! gulp@3.9.1 let me go one more step :)

One more question, now i got

"Keystore is not of correct version."

That i need to put in wallet.json?

looks like geth json not work...

sponnet commented 6 years ago

I added a script mkwallet.js that generates a random wallet.json file.

Instructions are here - https://github.com/sponnet/locals-faucetserver#installing

DrHyperKALICH commented 6 years ago

Thanks for an answer!

So, node mkwallet.js test > wallet.json gave me {"encSeed":{"encStr":"/oluIe2p+59rv2Y0qrMYZJhpd/hm1rmmLV2ysA0snfHdCpMJ0WF5RFuaY9nwjcu/faU/s/yf2VMSTOdtURs00DgtfjOOdXEVZbS07VPTcpAso9iun1DXdwFaXUiKG9HE1ZRV9kbRKYB2QM+pGqARUakAn+EH0CXvgjRrGGK+PDyMFJHUkv14CA==","nonce":"Zjw3xH8LjmMVNf19U1ckAmwkfIPteRwk"},"ksData":{"m/0'/0'/0'":{"info":{"curve":"secp256k1","purpose":"sign"},"encHdPathPriv":{"encStr":"R03EY435sF6IVW627xUvOS5J3KaJSlDuMlrQVyH1np093Wrw+y01aWtpWZ0VNF3E+74CqETndqWqTlVS+CYSRmacOKvKtO+zihA2RO9VyQxpf8bcfSpecXp5MawXH5Ff3lDG3GGYb6fJXZvXbPY7MIyMI67AM2GB2F1JL5beUQ==","nonce":"xBmoHmUVjTQgIrQWhGc9FPxjJiwQ+MjL"},"hdIndex":1,"encPrivKeys":{"a4316ab145f25102e7f5b36c337582df0ce58860":{"key":"bfkpnTupWy+Dvnb3iPz75HI6193L2DQCSpifJxWX2TNFVJqsEFYW1VvH8qWm18LC","nonce":"e1IPWl876gH+qt0v5DRt4aHzEugarVh5"}},"addresses":["a4316ab145f25102e7f5b36c337582df0ce58860"]}},"encHdRootPriv":{"encStr":"t87gI1/MgoFEMQ/QIr5TnpSsv6FLjxPLauushPlBPzNWLaRC08GtUGpzyCeETaTl2ZwqYGiXLX0IdVxDhlC2Ays6wjJR3QrkAxwf9/SNVaZnC85Lfn8wD843fhqndrbQ3OlsxTYn4xasmSr8wAHmAi6Iizjrf7/ZatIlonAZpw==","nonce":"2RerT7e/v2rMODjwYjQ+VRRhilZvUB7d"},"version":2}

in index.js lightwallet.keystore.deriveKeyFromPassword("test", function(err, pwDerivedKey)

and as a result:

irebase Login Succeeded! { auth: null, expires: null, token: '', uid: null, provider: 'custom' } FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "_state" at /queue1524728945758/tasks to your security rules for better performance FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "_state" at /queue1524728945758/tasks to your security rules for better performance /root/locals-faucetserver/node_modules/eth-lightwallet/lib/upgrade.js:47 throw new Error('Keystore is not of correct version.') ^

Error: Keystore is not of correct version. at Object.upgradeOldSerialized (/root/locals-faucetserver/node_modules/eth-lightwallet/lib/upgrade.js:47:11) at /root/locals-faucetserver/index.js:52:24 at cb (/root/locals-faucetserver/node_modules/eth-lightwallet/lib/keystore.js:457:5) at /root/locals-faucetserver/node_modules/scrypt-async/scrypt-async.js:474:9 at Immediate._onImmediate (/root/locals-faucetserver/node_modules/scrypt-async/scrypt-async.js:433:11) at runCallback (timers.js:794:20) at tryOnImmediate (timers.js:752:5) at processImmediate [as _immediateCallback] (timers.js:729:5)

DrHyperKALICH commented 6 years ago

eth-lightwallet@2.3.1 is used btw

sponnet commented 6 years ago

How did you solve the More than one instance of bitcore-lib found error ? I installed a fresh copy on another machine , but ofcourse run in to the same problem as you described. If I can get past it , I could help with solving the keystore problem.

DrHyperKALICH commented 6 years ago

I am manually installed modules from the 1st post

nvm use 8.11.1 npm install cors@2.7.1 eth-lightwallet@2.3.1 bitcore-mnemonic@1.0.1 crypto-js@3.1.6 elliptic@3.1.0 ethereumjs-tx@1.1.1 ethereumjs-util@4.3.0 rlp@2.0.0 scrypt-async@1.2.0 tweetnacl@0.13.2 express@4.13.4 firebase@2.4.2 firebase-queue@1.3.1 hooked-web3-provider@1.0.0 lodash@4.11.1 web3@0.15.3

and in static/locals-faucet after npm install i manually installed npm install gulp@3.9.1

sponnet commented 6 years ago

So if you create a wallet.json now - the upgrade is not needed anymore. I commented out that piece of code in the index.js. If you update the index.js to the head version, it works. ( at least here ).

Can you verify ?

DrHyperKALICH commented 6 years ago

and now...

module.js:434 return process.dlopen(module, path._makeLong(filename)); ^

Error: Module version mismatch. Expected 46, got 57. at Error (native) at Object.Module._extensions..node (module.js:434:18) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Module.require (module.js:353:17) at require (internal/module.js:12:17) at Object. (/root/locals-faucetserver/node_modules/keccakjs/index.js:1:80) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32)

DrHyperKALICH commented 6 years ago

not sure what module needs another version

keccakjs is 0.1.0 as above

sponnet commented 6 years ago

I fixed the versions of the modules in the package.json, then I removed and installed all node packages for the project. Please pull again now.

rm -Rf node_modules/
npm i
node mkwallet.js test > wallet.json
node index.js

then the faucet starts up without a hitch

...
Fawcet listening on port  3000

I'm running this version of nodeJS / npm

$ npm -v
5.6.0
$ node -v
v8.0.0
DrHyperKALICH commented 6 years ago

Great job! Its started!

But... http://104.131.77.78:3000/ Cannot GET /

Log from start: Firebase Login Succeeded! { auth: null, expires: null, token: '', uid: null, provider: 'custom' } FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "_state" at /queue1524742542864/tasks to your security rules for better performance FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "_state" at /queue1524742542864/tasks to your security rules for better performance connecting to ETH node: http://localhost:8545 Wallet initted addr=6cd8be3be99ce2880c24e2e35d14f2e1640e6163 Fawcet listening on port 3000

sponnet commented 6 years ago

did you go into the static folder and gulp the thing ?

cd static/locals-faucet/
gulp

It should create a locals-faucetserver/static/locals-faucet/dist folder

And then I get the web interface too.

image

DrHyperKALICH commented 6 years ago

yep, forgot it...

but it gives me this, even on v8.0.0 even on 8.11.1

[12:33:39] Using gulpfile ~/faucet/locals-faucetserver/static/locals-faucet/gulpfile.js [12:33:39] Starting 'clean'... [12:33:39] Finished 'clean' after 8.71 ms [12:33:39] Starting 'default'... [12:33:39] Starting 'copy'... [12:33:39] Starting 'styles'... [12:33:40] styles all files 98 B [12:33:40] Finished 'styles' after 981 ms [12:33:40] copy all files 2.07 MB [12:33:40] Finished 'copy' after 1.47 s [12:33:40] Starting 'elements'... [12:33:40] Finished 'elements' after 14 ms [12:33:40] Starting 'ensureFiles'... [12:33:40] Finished 'ensureFiles' after 4.64 ms [12:33:40] Starting 'lint'... [12:33:42] Starting 'images'... [12:33:42] Starting 'fonts'... [12:33:42] Starting 'html'... [12:33:42] Finished 'fonts' after 236 ms [12:33:42] Finished 'lint' after 2.04 s

events.js:182 throw er; // Unhandled 'error' event ^ Error: spawn /root/faucet/locals-faucetserver/static/locals-faucet/node_modules/optipng-bin/vendor/optipng ENOENT at exports._errnoException (util.js:1026:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:189:19) at onErrorNT (internal/child_process.js:366:16) at _combinedTickCallback (internal/process/next_tick.js:102:11) at process._tickCallback (internal/process/next_tick.js:161:9)

DrHyperKALICH commented 6 years ago

npm install optipng-bin@3.1.1

helps! looks like it works.

the last question - how to get regular private key from wallet.json ?

sponnet commented 6 years ago

Yay ! It's in the array { .... "addresses":["a4316ab145f25102e7f5b36c337582df0ce58860"] } in the wallet.json. So that would be 0xa4316ab145f25102e7f5b36c337582df0ce58860

Make sure to generate a different wallet before you start using it than the wallet you pasted in this thread, because everyone can read its private key now..

The public key can also be seen in the UI - or when requesting the /faucetinfo endpoint

DrHyperKALICH commented 6 years ago

Yep, this is an address.

But how to get raw private key for this address from this type of wallet.json ?

For example MEW do not recognize this json file....

sponnet commented 6 years ago

Yeah, I simply added a script walletinfo.js that dumps this data.

$node walletinfo.js <walletfile> <password>

Which returns

public key= ce810a90801041a33ed8d63c81c218528d7a1820
private key= 466......<etc etc>.........

The script does not do any checking on the parameters , so it might explode right away if you provide wrong parameters, although it won't harm any of your files.

DrHyperKALICH commented 6 years ago

Millions of thanks!!!! My best wishes!

DrHyperKALICH commented 6 years ago

Sadly but faucet cannt sendout coins...

queue item is here... { _id: '-LB2_QzRvNVCtWl1Atxb', _owner: '4:cc0c63b6-7aee-4226-9702-93a8e0271a04:2', _progress: 0, _state: 'in_progress', _state_changed: 1524773535724, address: '0x00000830f5aa60a5acd364daf334d3d510b4fff9', amount: 1000000000000000000, paydate: 1524773535 } next payout in 0 sec gasprice is 41000000000 Transferring 1000000000000000 wei from 0x54e23b54017a38a41bf955e5573029469fccfd18 to 0x00000830f5aa60a5acd364daf334d3d510b4fff9 { from: '0x54e23b54017a38a41bf955e5573029469fccfd18', to: '0x00000830f5aa60a5acd364daf334d3d510b4fff9', value: 1000000000000000, gas: 314150, gasPrice: 41000000000 } buffer.js:215 if (obj.buffer instanceof ArrayBuffer || 'length' in obj) { ^

TypeError: Cannot use 'in' operator to search for 'length' in false at fromObject (buffer.js:215:56) at new Buffer (buffer.js:65:10) at Object.nacl.util.encodeBase64 (/root/faucet/locals-faucetserver/node_modules/tweetnacl/nacl-fast.js:2176:13) at nacl_encodeHex (/root/faucet/locals-faucetserver/node_modules/eth-lightwallet/lib/keystore.js:50:29) at Function.KeyStore._decryptKey (/root/faucet/locals-faucetserver/node_modules/eth-lightwallet/lib/keystore.js:146:10) at KeyStore.exportPrivateKey (/root/faucet/locals-faucetserver/node_modules/eth-lightwallet/lib/keystore.js:373:26) at Object.signTx (/root/faucet/locals-faucetserver/node_modules/eth-lightwallet/lib/signing.js:16:26) at /root/faucet/locals-faucetserver/node_modules/eth-lightwallet/lib/keystore.js:520:30 at cb (/root/faucet/locals-faucetserver/node_modules/eth-lightwallet/lib/keystore.js:457:5) at /root/faucet/locals-faucetserver/node_modules/scrypt-async/scrypt-async.js:518:13

DrHyperKALICH commented 6 years ago

tried different networks and nodes - the same error :(

sponnet commented 6 years ago

I assume you did send ETH to the account in your wallet.json ?

DrHyperKALICH commented 6 years ago

Yes, for sure! https://ropsten.etherscan.io/address/0x54e23b54017a38a41bf955e5573029469fccfd18

DrHyperKALICH commented 6 years ago

Any news, @sponnet? Really want for the faucet to work...

sponnet commented 6 years ago

I'll check it now, hang on.

sponnet commented 6 years ago

2 things you can try 1/ Check if the password you used to create your wallet with is also the same as in the index.js file here : https://github.com/sponnet/locals-faucetserver/blob/master/index.js#L67

2/ ( my preferred solution ) I created a new branch where I completely ripped out the firebase so that it now works with a local LevelDB database to keep track of everything. Code is simpler, and works here.

https://github.com/sponnet/locals-faucetserver/tree/leveldb

It seems to work - but let me know if you find any issues. If not I'll probably update the online faucet with this version soon.

DrHyperKALICH commented 6 years ago

It work with firebase, but gas price is strange... Look at tx https://ropsten.etherscan.io/tx/0x18745295099b192c39a16bc881d9d758ebf7fb9529b0bab214378823b96cdf2a In our private network gas price is ok, Gas Price = 0.0000000410, tx-s confirming.

With leveldb branch compile ok, but i get SyntaxErrors in index.js

/root/faucet2/locals-faucetserver/index.js:71 ]).then(([lengths, length]) => { ^

SyntaxError: Unexpected token [ at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:373:25) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Function.Module.runMain (module.js:441:10) at startup (node.js:140:18) at node.js:1043:3

sponnet commented 6 years ago

The gas price is taken from the network on every transaction - so it should be OK normally. It seems to work then using the firebase version ?

I removed the code that caused that error in the leveldb branch , it could be because of the nodeJS version that you currently use. Anyway that part had little added value, so I removed it.