Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix node 12 #24

Merged
merged 9 commits into from
May 19, 2019
Merged

Fix node 12 #24

merged 9 commits into from
May 19, 2019

Conversation

ahwayakchih
Copy link
Contributor

@ahwayakchih ahwayakchih commented May 14, 2019

First commit fixes build for Node.js v12.2.0.
Second commit is just because.

Encoding and decoding test fails on Alpine Linux 3.9.4 with Node.js 12.2.0, but it also failed before updating zlib. It also failed without any changes on Node.js 11.15.0. So that's probably related to running on Alpine or Node > 10.

Edit: This also drops support for Node v6, as per #25.

@vweevers
Copy link
Collaborator

Re: Alpine, you probably need to npm install with --build-from-source, because otherwise a prebuilt binary is used that was built with glibc and not musl (which is what Alpine uses).

@vweevers
Copy link
Collaborator

I'd prefer the zlib update in a separate PR, because that takes more time to review and would block the fix for node 12.

@ahwayakchih
Copy link
Contributor Author

@vweevers it does seem to build histogram.node from source (i can see compilation output for zlib and linking).

@ahwayakchih
Copy link
Contributor Author

I'd prefer the zlib update in a separate PR, because that takes more time to review and would block the fix for node 12.

Reverted.

@ahwayakchih
Copy link
Contributor Author

@vweevers i don't know what's this travis error is about:

*** Error in `/home/travis/build/mcollina/native-hdr-histogram/__nvm/versions/node/v12.2.0/bin/node': corrupted size vs. prev_size: 0x0000000003700ca0 ***

It builds fine in docker here, and test results are in more readable format:

/app $ npm install

> native-hdr-histogram@0.5.0 install /app
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using request for node-pre-gyp https download 
node-pre-gyp WARN Tried to download(403): https://autocannon-assets.s3-eu-west-1.amazonaws.com/native-hdr-histogram/v0.5.0/node-v72-linux-x64.tar.gz 
node-pre-gyp WARN Pre-built binaries not found for native-hdr-histogram@0.5.0 and node@12.2.0 (node-v72 ABI, musl) (falling back to source compile with node-gyp) 
make: Entering directory '/app/build'
  CC(target) Release/obj.target/zlib/zlib/adler32.o
  CC(target) Release/obj.target/zlib/zlib/compress.o
  CC(target) Release/obj.target/zlib/zlib/crc32.o
  CC(target) Release/obj.target/zlib/zlib/deflate.o
  CC(target) Release/obj.target/zlib/zlib/gzclose.o
  CC(target) Release/obj.target/zlib/zlib/gzlib.o
  CC(target) Release/obj.target/zlib/zlib/gzread.o
  CC(target) Release/obj.target/zlib/zlib/gzwrite.o
  CC(target) Release/obj.target/zlib/zlib/infback.o
../zlib/infback.c: In function 'inflateBack':
../zlib/infback.c:479:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = LEN;
             ~~~~~~~~~~~~^~~~~
../zlib/infback.c:481:9: note: here
         case LEN:
         ^~~~
  CC(target) Release/obj.target/zlib/zlib/inffast.o
  CC(target) Release/obj.target/zlib/zlib/inflate.o
../zlib/inflate.c: In function 'inflateMark':
../zlib/inflate.c:1507:61: warning: left shift of negative value [-Wshift-negative-value]
     if (strm == Z_NULL || strm->state == Z_NULL) return -1L << 16;
                                                             ^~
../zlib/inflate.c: In function 'inflate':
../zlib/inflate.c:720:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = EXLEN;
             ~~~~~~~~~~~~^~~~~~~
../zlib/inflate.c:721:9: note: here
         case EXLEN:
         ^~~~
../zlib/inflate.c:732:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = EXTRA;
             ~~~~~~~~~~~~^~~~~~~
../zlib/inflate.c:733:9: note: here
         case EXTRA:
         ^~~~
../zlib/inflate.c:754:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = NAME;
             ~~~~~~~~~~~~^~~~~~
../zlib/inflate.c:755:9: note: here
         case NAME:
         ^~~~
../zlib/inflate.c:775:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = COMMENT;
             ~~~~~~~~~~~~^~~~~~~~~
../zlib/inflate.c:776:9: note: here
         case COMMENT:
         ^~~~
../zlib/inflate.c:795:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = HCRC;
             ~~~~~~~~~~~~^~~~~~
../zlib/inflate.c:796:9: note: here
         case HCRC:
         ^~~~
../zlib/inflate.c:818:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = DICT;
             ~~~~~~~~~~~~^~~~~~
../zlib/inflate.c:819:9: note: here
         case DICT:
         ^~~~
../zlib/inflate.c:825:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = TYPE;
             ~~~~~~~~~~~~^~~~~~
../zlib/inflate.c:826:9: note: here
         case TYPE:
         ^~~~
../zlib/inflate.c:827:16: warning: this statement may fall through [-Wimplicit-fallthrough=]
             if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave;
                ^
../zlib/inflate.c:828:9: note: here
         case TYPEDO:
         ^~~~
../zlib/inflate.c:877:16: warning: this statement may fall through [-Wimplicit-fallthrough=]
             if (flush == Z_TREES) goto inf_leave;
                ^
../zlib/inflate.c:878:9: note: here
         case COPY_:
         ^~~~
../zlib/inflate.c:879:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = COPY;
             ~~~~~~~~~~~~^~~~~~
../zlib/inflate.c:880:9: note: here
         case COPY:
         ^~~~
../zlib/inflate.c:1018:16: warning: this statement may fall through [-Wimplicit-fallthrough=]
             if (flush == Z_TREES) goto inf_leave;
                ^
../zlib/inflate.c:1019:9: note: here
         case LEN_:
         ^~~~
../zlib/inflate.c:1020:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = LEN;
             ~~~~~~~~~~~~^~~~~
../zlib/inflate.c:1021:9: note: here
         case LEN:
         ^~~~
../zlib/inflate.c:1069:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = LENEXT;
             ~~~~~~~~~~~~^~~~~~~~
../zlib/inflate.c:1070:9: note: here
         case LENEXT:
         ^~~~
../zlib/inflate.c:1079:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = DIST;
             ~~~~~~~~~~~~^~~~~~
../zlib/inflate.c:1080:9: note: here
         case DIST:
         ^~~~
../zlib/inflate.c:1106:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = DISTEXT;
             ~~~~~~~~~~~~^~~~~~~~~
../zlib/inflate.c:1107:9: note: here
         case DISTEXT:
         ^~~~
../zlib/inflate.c:1122:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = MATCH;
             ~~~~~~~~~~~~^~~~~~~
../zlib/inflate.c:1123:9: note: here
         case MATCH:
         ^~~~
../zlib/inflate.c:1197:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = LENGTH;
             ~~~~~~~~~~~~^~~~~~~~
../zlib/inflate.c:1198:9: note: here
         case LENGTH:
         ^~~~
../zlib/inflate.c:1210:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
             state->mode = DONE;
             ~~~~~~~~~~~~^~~~~~
../zlib/inflate.c:1211:9: note: here
         case DONE:
         ^~~~
  CC(target) Release/obj.target/zlib/zlib/inftrees.o
  CC(target) Release/obj.target/zlib/zlib/trees.o
  CC(target) Release/obj.target/zlib/zlib/uncompr.o
  CC(target) Release/obj.target/zlib/zlib/zutil.o
  AR(target) Release/obj.target/zlib/zlib.a
  COPY Release/zlib.a
  CC(target) Release/obj.target/histogram/src/hdr_encoding.o
  CC(target) Release/obj.target/histogram/src/hdr_histogram.o
  CC(target) Release/obj.target/histogram/src/hdr_histogram_log.o
  CXX(target) Release/obj.target/histogram/hdr_histogram_wrap.o
In file included from ../hdr_histogram_wrap.cc:1:
../node_modules/nan/nan.h: In function 'void Nan::AsyncQueueWorker(Nan::AsyncWorker*)':
../node_modules/nan/nan.h:2232:62: warning: cast between incompatible function types from 'void (*)(uv_work_t*)' {aka 'void (*)(uv_work_s*)'} to 'uv_after_work_cb' {aka 'void (*)(uv_work_s*, int)'} [-Wcast-function-type]
     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                              ^
In file included from /home/node/.node-gyp/12.2.0/include/node/node.h:63,
                 from ../node_modules/nan/nan.h:53,
                 from ../hdr_histogram_wrap.cc:1:
/home/node/.node-gyp/12.2.0/include/node/v8.h: In instantiation of 'void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]':
/home/node/.node-gyp/12.2.0/include/node/node_object_wrap.h:84:78:   required from here
/home/node/.node-gyp/12.2.0/include/node/v8.h:9817:16: warning: cast between incompatible function types from 'v8::WeakCallbackInfo<node::ObjectWrap>::Callback' {aka 'void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)'} to 'Callback' {aka 'void (*)(const v8::WeakCallbackInfo<void>&)'} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/node/.node-gyp/12.2.0/include/node/v8.h: In instantiation of 'void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]':
../node_modules/nan/nan_object_wrap.h:65:61:   required from here
/home/node/.node-gyp/12.2.0/include/node/v8.h:9817:16: warning: cast between incompatible function types from 'v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback' {aka 'void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)'} to 'Callback' {aka 'void (*)(const v8::WeakCallbackInfo<void>&)'} [-Wcast-function-type]
  CXX(target) Release/obj.target/histogram/histogram.o
In file included from ../histogram.cc:1:
../node_modules/nan/nan.h: In function 'void Nan::AsyncQueueWorker(Nan::AsyncWorker*)':
../node_modules/nan/nan.h:2232:62: warning: cast between incompatible function types from 'void (*)(uv_work_t*)' {aka 'void (*)(uv_work_s*)'} to 'uv_after_work_cb' {aka 'void (*)(uv_work_s*, int)'} [-Wcast-function-type]
     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                              ^
In file included from ../node_modules/nan/nan.h:53,
                 from ../histogram.cc:1:
../histogram.cc: At global scope:
/home/node/.node-gyp/12.2.0/include/node/node.h:556:43: warning: cast between incompatible function types from 'void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)' {aka 'void (*)(v8::Local<v8::Object>)'} to 'node::addon_register_func' {aka 'void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)'} [-Wcast-function-type]
       (node::addon_register_func) (regfunc),                          \
                                           ^
/home/node/.node-gyp/12.2.0/include/node/node.h:590:3: note: in expansion of macro 'NODE_MODULE_X'
   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
   ^~~~~~~~~~~~~
../histogram.cc:8:1: note: in expansion of macro 'NODE_MODULE'
 NODE_MODULE(Histogram, InitAll)
 ^~~~~~~~~~~
In file included from /home/node/.node-gyp/12.2.0/include/node/node.h:63,
                 from ../node_modules/nan/nan.h:53,
                 from ../histogram.cc:1:
/home/node/.node-gyp/12.2.0/include/node/v8.h: In instantiation of 'void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]':
/home/node/.node-gyp/12.2.0/include/node/node_object_wrap.h:84:78:   required from here
/home/node/.node-gyp/12.2.0/include/node/v8.h:9817:16: warning: cast between incompatible function types from 'v8::WeakCallbackInfo<node::ObjectWrap>::Callback' {aka 'void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)'} to 'Callback' {aka 'void (*)(const v8::WeakCallbackInfo<void>&)'} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/node/.node-gyp/12.2.0/include/node/v8.h: In instantiation of 'void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]':
../node_modules/nan/nan_object_wrap.h:65:61:   required from here
/home/node/.node-gyp/12.2.0/include/node/v8.h:9817:16: warning: cast between incompatible function types from 'v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback' {aka 'void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)'} to 'Callback' {aka 'void (*)(const v8::WeakCallbackInfo<void>&)'} [-Wcast-function-type]
  SOLINK_MODULE(target) Release/obj.target/histogram.node
  COPY Release/histogram.node
  COPY /app/lib/binding/node-v72-linux-x64/histogram.node
  TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory '/app/build'
npm WARN prepublish-on-install As of npm@5, `prepublish` scripts are deprecated.
npm WARN prepublish-on-install Use `prepare` for build steps and `prepublishOnly` for upload-only.
npm WARN prepublish-on-install See the deprecation note in `npm help scripts` for more information.

> native-hdr-histogram@0.5.0 prepublish /app
> npm ls

native-hdr-histogram@0.5.0 /app
+-- aws-sdk@2.454.0
| +-- buffer@4.9.1
| | +-- base64-js@1.3.0
| | +-- ieee754@1.1.8 deduped
| | `-- isarray@1.0.0
| +-- events@1.1.1
| +-- ieee754@1.1.8
| +-- jmespath@0.15.0
| +-- querystring@0.2.0
| +-- sax@1.2.1
| +-- url@0.10.3
| | +-- punycode@1.3.2
| | `-- querystring@0.2.0 deduped
| +-- uuid@3.3.2
| `-- xml2js@0.4.19
|   +-- sax@1.2.4
|   `-- xmlbuilder@9.0.7
+-- nan@2.13.2
+-- node-pre-gyp@0.13.0
| +-- detect-libc@1.0.3
| +-- mkdirp@0.5.1
| | `-- minimist@0.0.8
| +-- needle@2.3.1
| | +-- debug@4.1.1
| | | `-- ms@2.1.1 deduped
| | +-- iconv-lite@0.4.24
| | | `-- safer-buffer@2.1.2
| | `-- sax@1.2.4 deduped
| +-- nopt@4.0.1
| | +-- abbrev@1.1.1
| | `-- osenv@0.1.5
| |   +-- os-homedir@1.0.2
| |   `-- os-tmpdir@1.0.2
| +-- npm-packlist@1.4.1
| | +-- ignore-walk@3.0.1
| | | `-- minimatch@3.0.4 deduped
| | `-- npm-bundled@1.0.6
| +-- npmlog@4.1.2
| | +-- are-we-there-yet@1.1.5
| | | +-- delegates@1.0.0
| | | `-- readable-stream@2.3.6 deduped
| | +-- console-control-strings@1.1.0
| | +-- gauge@2.7.4
| | | +-- aproba@1.2.0
| | | +-- console-control-strings@1.1.0 deduped
| | | +-- has-unicode@2.0.1
| | | +-- object-assign@4.1.1
| | | +-- signal-exit@3.0.2 deduped
| | | +-- string-width@1.0.2
| | | | +-- code-point-at@1.1.0
| | | | +-- is-fullwidth-code-point@1.0.0
| | | | | `-- number-is-nan@1.0.1
| | | | `-- strip-ansi@3.0.1 deduped
| | | +-- strip-ansi@3.0.1
| | | | `-- ansi-regex@2.1.1
| | | `-- wide-align@1.1.3
| | |   `-- string-width@1.0.2 deduped
| | `-- set-blocking@2.0.0
| +-- rc@1.2.8
| | +-- deep-extend@0.6.0
| | +-- ini@1.3.5
| | +-- minimist@1.2.0
| | `-- strip-json-comments@2.0.1
| +-- rimraf@2.6.3
| | `-- glob@7.1.4 deduped
| +-- semver@5.7.0
| `-- tar@4.4.8
|   +-- chownr@1.1.1
|   +-- fs-minipass@1.2.5
|   | `-- minipass@2.3.5 deduped
|   +-- minipass@2.3.5 deduped
|   +-- minizlib@1.2.1
|   | `-- minipass@2.3.5 deduped
|   +-- mkdirp@0.5.1 deduped
|   +-- safe-buffer@5.1.2
|   `-- yallist@3.0.3
+-- pre-commit@1.2.2
| +-- cross-spawn@5.1.0
| | +-- lru-cache@4.1.5
| | | +-- pseudomap@1.0.2
| | | `-- yallist@2.1.2
| | +-- shebang-command@1.2.0
| | | `-- shebang-regex@1.0.0
| | `-- which@1.2.14 deduped
| +-- spawn-sync@1.0.15
| | +-- concat-stream@1.6.2
| | | +-- buffer-from@1.1.1 deduped
| | | +-- inherits@2.0.3 deduped
| | | +-- readable-stream@2.3.6 deduped
| | | `-- typedarray@0.0.6
| | `-- os-shim@0.1.3
| `-- which@1.2.14
|   `-- isexe@2.0.0 deduped
+-- standard@12.0.1
| +-- eslint@5.4.0
| | +-- ajv@6.10.0
| | | +-- fast-deep-equal@2.0.1
| | | +-- fast-json-stable-stringify@2.0.0
| | | +-- json-schema-traverse@0.4.1
| | | `-- uri-js@4.2.2
| | |   `-- punycode@2.1.1
| | +-- babel-code-frame@6.26.0
| | | +-- chalk@1.1.3
| | | | +-- ansi-styles@2.2.1
| | | | +-- escape-string-regexp@1.0.5 deduped
| | | | +-- has-ansi@2.0.0
| | | | | `-- ansi-regex@2.1.1 deduped
| | | | +-- strip-ansi@3.0.1 deduped
| | | | `-- supports-color@2.0.0
| | | +-- esutils@2.0.2 deduped
| | | `-- js-tokens@3.0.2
| | +-- chalk@2.4.2
| | | +-- ansi-styles@3.2.1
| | | | `-- color-convert@1.9.3
| | | |   `-- color-name@1.1.3
| | | +-- escape-string-regexp@1.0.5 deduped
| | | `-- supports-color@5.5.0
| | |   `-- has-flag@3.0.0
| | +-- cross-spawn@6.0.5
| | | +-- nice-try@1.0.5
| | | +-- path-key@2.0.1
| | | +-- semver@5.7.0 deduped
| | | +-- shebang-command@1.2.0 deduped
| | | `-- which@1.2.14 deduped
| | +-- debug@3.2.6
| | | `-- ms@2.1.1 deduped
| | +-- doctrine@2.1.0
| | | `-- esutils@2.0.2 deduped
| | +-- eslint-scope@4.0.3
| | | +-- esrecurse@4.2.1
| | | | `-- estraverse@4.2.0 deduped
| | | `-- estraverse@4.2.0
| | +-- eslint-utils@1.3.1
| | +-- eslint-visitor-keys@1.0.0
| | +-- espree@4.1.0
| | | +-- acorn@6.1.1
| | | +-- acorn-jsx@5.0.1
| | | `-- eslint-visitor-keys@1.0.0 deduped
| | +-- esquery@1.0.1
| | | `-- estraverse@4.2.0 deduped
| | +-- esutils@2.0.2
| | +-- file-entry-cache@2.0.0
| | | +-- flat-cache@1.3.4
| | | | +-- circular-json@0.3.3
| | | | +-- graceful-fs@4.1.15 deduped
| | | | +-- rimraf@2.6.3 deduped
| | | | `-- write@0.2.1
| | | |   `-- mkdirp@0.5.1 deduped
| | | `-- object-assign@4.1.1 deduped
| | +-- functional-red-black-tree@1.0.1
| | +-- glob@7.1.4 deduped
| | +-- globals@11.12.0
| | +-- ignore@4.0.6
| | +-- imurmurhash@0.1.4
| | +-- inquirer@5.2.0
| | | +-- ansi-escapes@3.2.0
| | | +-- chalk@2.4.2 deduped
| | | +-- cli-cursor@2.1.0
| | | | `-- restore-cursor@2.0.0
| | | |   +-- onetime@2.0.1
| | | |   | `-- mimic-fn@1.2.0
| | | |   `-- signal-exit@3.0.2 deduped
| | | +-- cli-width@2.2.0
| | | +-- external-editor@2.2.0
| | | | +-- chardet@0.4.2
| | | | +-- iconv-lite@0.4.24 deduped
| | | | `-- tmp@0.0.33
| | | |   `-- os-tmpdir@1.0.2 deduped
| | | +-- figures@2.0.0
| | | | `-- escape-string-regexp@1.0.5 deduped
| | | +-- lodash@4.17.11 deduped
| | | +-- mute-stream@0.0.7
| | | +-- run-async@2.3.0
| | | | `-- is-promise@2.1.0
| | | +-- rxjs@5.5.12
| | | | `-- symbol-observable@1.0.1
| | | +-- string-width@2.1.1
| | | | +-- is-fullwidth-code-point@2.0.0
| | | | `-- strip-ansi@4.0.0 deduped
| | | +-- strip-ansi@4.0.0
| | | | `-- ansi-regex@3.0.0
| | | `-- through@2.3.8
| | +-- is-resolvable@1.1.0
| | +-- js-yaml@3.13.1
| | | +-- argparse@1.0.10
| | | | `-- sprintf-js@1.0.3
| | | `-- esprima@4.0.1
| | +-- json-stable-stringify-without-jsonify@1.0.1
| | +-- levn@0.3.0
| | | +-- prelude-ls@1.1.2
| | | `-- type-check@0.3.2
| | |   `-- prelude-ls@1.1.2 deduped
| | +-- lodash@4.17.11
| | +-- minimatch@3.0.4
| | | `-- brace-expansion@1.1.11
| | |   +-- balanced-match@1.0.0
| | |   `-- concat-map@0.0.1
| | +-- mkdirp@0.5.1 deduped
| | +-- natural-compare@1.4.0
| | +-- optionator@0.8.2
| | | +-- deep-is@0.1.3
| | | +-- fast-levenshtein@2.0.6
| | | +-- levn@0.3.0 deduped
| | | +-- prelude-ls@1.1.2 deduped
| | | +-- type-check@0.3.2 deduped
| | | `-- wordwrap@1.0.0
| | +-- path-is-inside@1.0.2
| | +-- pluralize@7.0.0
| | +-- progress@2.0.3
| | +-- regexpp@2.0.1
| | +-- require-uncached@1.0.3
| | | +-- caller-path@0.1.0
| | | | `-- callsites@0.2.0
| | | `-- resolve-from@1.0.1
| | +-- semver@5.7.0 deduped
| | +-- strip-ansi@4.0.0
| | | `-- ansi-regex@3.0.0
| | +-- strip-json-comments@2.0.1 deduped
| | +-- table@4.0.3
| | | +-- ajv@6.10.0 deduped
| | | +-- ajv-keywords@3.4.0
| | | +-- chalk@2.4.2 deduped
| | | +-- lodash@4.17.11 deduped
| | | +-- slice-ansi@1.0.0
| | | | `-- is-fullwidth-code-point@2.0.0
| | | `-- string-width@2.1.1
| | |   +-- is-fullwidth-code-point@2.0.0
| | |   `-- strip-ansi@4.0.0
| | |     `-- ansi-regex@3.0.0
| | `-- text-table@0.2.0
| +-- eslint-config-standard@12.0.0
| +-- eslint-config-standard-jsx@6.0.2
| +-- eslint-plugin-import@2.14.0
| | +-- contains-path@0.1.0
| | +-- debug@2.6.9
| | | `-- ms@2.0.0
| | +-- doctrine@1.5.0
| | | +-- esutils@2.0.2 deduped
| | | `-- isarray@1.0.0 deduped
| | +-- eslint-import-resolver-node@0.3.2
| | | +-- debug@2.6.9
| | | | `-- ms@2.0.0
| | | `-- resolve@1.10.1 deduped
| | +-- eslint-module-utils@2.4.0
| | | +-- debug@2.6.9
| | | | `-- ms@2.0.0
| | | `-- pkg-dir@2.0.0
| | |   `-- find-up@2.1.0 deduped
| | +-- has@1.0.3
| | | `-- function-bind@1.1.1
| | +-- lodash@4.17.11 deduped
| | +-- minimatch@3.0.4 deduped
| | +-- read-pkg-up@2.0.0
| | | +-- find-up@2.1.0
| | | | `-- locate-path@2.0.0
| | | |   +-- p-locate@2.0.0
| | | |   | `-- p-limit@1.3.0
| | | |   |   `-- p-try@1.0.0
| | | |   `-- path-exists@3.0.0 deduped
| | | `-- read-pkg@2.0.0
| | |   +-- load-json-file@2.0.0
| | |   | +-- graceful-fs@4.1.15 deduped
| | |   | +-- parse-json@2.2.0
| | |   | | `-- error-ex@1.3.2 deduped
| | |   | +-- pify@2.3.0
| | |   | `-- strip-bom@3.0.0 deduped
| | |   +-- normalize-package-data@2.5.0
| | |   | +-- hosted-git-info@2.7.1
| | |   | +-- resolve@1.10.1 deduped
| | |   | +-- semver@5.7.0 deduped
| | |   | `-- validate-npm-package-license@3.0.4
| | |   |   +-- spdx-correct@3.1.0
| | |   |   | +-- spdx-expression-parse@3.0.0 deduped
| | |   |   | `-- spdx-license-ids@3.0.4
| | |   |   `-- spdx-expression-parse@3.0.0
| | |   |     +-- spdx-exceptions@2.2.0
| | |   |     `-- spdx-license-ids@3.0.4 deduped
| | |   `-- path-type@2.0.0
| | |     `-- pify@2.3.0 deduped
| | `-- resolve@1.10.1
| |   `-- path-parse@1.0.6
| +-- eslint-plugin-node@7.0.1
| | +-- eslint-plugin-es@1.4.0
| | | +-- eslint-utils@1.3.1 deduped
| | | `-- regexpp@2.0.1 deduped
| | +-- eslint-utils@1.3.1 deduped
| | +-- ignore@4.0.6 deduped
| | +-- minimatch@3.0.4 deduped
| | +-- resolve@1.10.1 deduped
| | `-- semver@5.7.0 deduped
| +-- eslint-plugin-promise@4.0.1
| +-- eslint-plugin-react@7.11.1
| | +-- array-includes@3.0.3
| | | +-- define-properties@1.1.3
| | | | `-- object-keys@1.1.1
| | | `-- es-abstract@1.13.0
| | |   +-- es-to-primitive@1.2.0
| | |   | +-- is-callable@1.1.4 deduped
| | |   | +-- is-date-object@1.0.1
| | |   | `-- is-symbol@1.0.2
| | |   |   `-- has-symbols@1.0.0
| | |   +-- function-bind@1.1.1 deduped
| | |   +-- has@1.0.3 deduped
| | |   +-- is-callable@1.1.4
| | |   +-- is-regex@1.0.4
| | |   | `-- has@1.0.3 deduped
| | |   `-- object-keys@1.1.1 deduped
| | +-- doctrine@2.1.0 deduped
| | +-- has@1.0.3 deduped
| | +-- jsx-ast-utils@2.1.0
| | | `-- array-includes@3.0.3 deduped
| | `-- prop-types@15.7.2
| |   +-- loose-envify@1.4.0
| |   | `-- js-tokens@3.0.2 deduped
| |   +-- object-assign@4.1.1 deduped
| |   `-- react-is@16.8.6
| +-- eslint-plugin-standard@4.0.0
| `-- standard-engine@9.0.0
|   +-- deglob@2.1.1
|   | +-- find-root@1.1.0
|   | +-- glob@7.1.4 deduped
|   | +-- ignore@3.3.10
|   | +-- pkg-config@1.1.1
|   | | +-- debug-log@1.0.1
|   | | +-- find-root@1.1.0 deduped
|   | | `-- xtend@4.0.1
|   | +-- run-parallel@1.1.9
|   | `-- uniq@1.0.1
|   +-- get-stdin@6.0.0
|   +-- minimist@1.2.0
|   `-- pkg-conf@2.1.0
|     +-- find-up@2.1.0 deduped
|     `-- load-json-file@4.0.0
|       +-- graceful-fs@4.1.15 deduped
|       +-- parse-json@4.0.0
|       | +-- error-ex@1.3.2
|       | | `-- is-arrayish@0.2.1
|       | `-- json-parse-better-errors@1.0.2
|       +-- pify@3.0.0
|       `-- strip-bom@3.0.0
`-- tap@13.1.8
  +-- async-hook-domain@1.1.0
  | `-- source-map-support@0.5.12 deduped
  +-- bind-obj-methods@2.0.0
  +-- browser-process-hrtime@1.0.0
  +-- capture-stack-trace@1.0.1
  +-- chokidar@3.0.0
  | +-- anymatch@3.0.2
  | | +-- normalize-path@3.0.0 deduped
  | | `-- picomatch@2.0.6
  | +-- async-each@1.0.3
  | +-- braces@3.0.2
  | | `-- fill-range@7.0.1
  | |   `-- to-regex-range@5.0.1
  | |     `-- is-number@7.0.0
  | +-- UNMET OPTIONAL DEPENDENCY fsevents@^2.0.6
  | +-- glob-parent@5.0.0
  | | `-- is-glob@4.0.1 deduped
  | +-- is-binary-path@2.1.0
  | | `-- binary-extensions@2.0.0
  | +-- is-glob@4.0.1
  | | `-- is-extglob@2.1.1
  | +-- normalize-path@3.0.0
  | `-- readdirp@3.0.1
  |   `-- picomatch@2.0.6 deduped
  +-- color-support@1.1.3
  +-- coveralls@3.0.3
  | +-- growl@1.10.5
  | +-- js-yaml@3.13.1 deduped
  | +-- lcov-parse@0.0.10
  | +-- log-driver@1.2.7
  | +-- minimist@1.2.0
  | `-- request@2.88.0
  |   +-- aws-sign2@0.7.0
  |   +-- aws4@1.8.0
  |   +-- caseless@0.12.0
  |   +-- combined-stream@1.0.8
  |   | `-- delayed-stream@1.0.0
  |   +-- extend@3.0.2
  |   +-- forever-agent@0.6.1
  |   +-- form-data@2.3.3
  |   | +-- asynckit@0.4.0
  |   | +-- combined-stream@1.0.8 deduped
  |   | `-- mime-types@2.1.24 deduped
  |   +-- har-validator@5.1.3
  |   | +-- ajv@6.10.0 deduped
  |   | `-- har-schema@2.0.0
  |   +-- http-signature@1.2.0
  |   | +-- assert-plus@1.0.0
  |   | +-- jsprim@1.4.1
  |   | | +-- assert-plus@1.0.0 deduped
  |   | | +-- extsprintf@1.3.0
  |   | | +-- json-schema@0.2.3
  |   | | `-- verror@1.10.0
  |   | |   +-- assert-plus@1.0.0 deduped
  |   | |   +-- core-util-is@1.0.2 deduped
  |   | |   `-- extsprintf@1.3.0 deduped
  |   | `-- sshpk@1.16.1
  |   |   +-- asn1@0.2.4
  |   |   | `-- safer-buffer@2.1.2 deduped
  |   |   +-- assert-plus@1.0.0 deduped
  |   |   +-- bcrypt-pbkdf@1.0.2
  |   |   | `-- tweetnacl@0.14.5 deduped
  |   |   +-- dashdash@1.14.1
  |   |   | `-- assert-plus@1.0.0 deduped
  |   |   +-- ecc-jsbn@0.1.2
  |   |   | +-- jsbn@0.1.1 deduped
  |   |   | `-- safer-buffer@2.1.2 deduped
  |   |   +-- getpass@0.1.7
  |   |   | `-- assert-plus@1.0.0 deduped
  |   |   +-- jsbn@0.1.1
  |   |   +-- safer-buffer@2.1.2 deduped
  |   |   `-- tweetnacl@0.14.5
  |   +-- is-typedarray@1.0.0
  |   +-- isstream@0.1.2
  |   +-- json-stringify-safe@5.0.1
  |   +-- mime-types@2.1.24
  |   | `-- mime-db@1.40.0
  |   +-- oauth-sign@0.9.0
  |   +-- performance-now@2.1.0
  |   +-- qs@6.5.2
  |   +-- safe-buffer@5.1.2 deduped
  |   +-- tough-cookie@2.4.3
  |   | +-- psl@1.1.31
  |   | `-- punycode@1.4.1
  |   +-- tunnel-agent@0.6.0
  |   | `-- safe-buffer@5.1.2 deduped
  |   `-- uuid@3.3.2 deduped
  +-- diff@4.0.1
  +-- domain-browser@1.2.0
  +-- esm@3.2.22
  +-- findit@2.0.0
  +-- foreground-child@1.5.6
  | +-- cross-spawn@4.0.2
  | | +-- lru-cache@4.1.5 deduped
  | | `-- which@1.2.14 deduped
  | `-- signal-exit@3.0.2 deduped
  +-- fs-exists-cached@1.0.0
  +-- function-loop@1.0.2
  +-- glob@7.1.4
  | +-- fs.realpath@1.0.0
  | +-- inflight@1.0.6
  | | +-- once@1.4.0 deduped
  | | `-- wrappy@1.0.2
  | +-- inherits@2.0.3
  | +-- minimatch@3.0.4 deduped
  | +-- once@1.4.0
  | | `-- wrappy@1.0.2 deduped
  | `-- path-is-absolute@1.0.1
  +-- import-jsx@2.0.0
  | +-- babel-core@6.26.3
  | | +-- babel-code-frame@6.26.0 deduped
  | | +-- babel-generator@6.26.1
  | | | +-- babel-messages@6.23.0 deduped
  | | | +-- babel-runtime@6.26.0 deduped
  | | | +-- babel-types@6.26.0 deduped
  | | | +-- detect-indent@4.0.0
  | | | | `-- repeating@2.0.1
  | | | |   `-- is-finite@1.0.2
  | | | |     `-- number-is-nan@1.0.1 deduped
  | | | +-- jsesc@1.3.0
  | | | +-- lodash@4.17.11 deduped
  | | | +-- source-map@0.5.7
  | | | `-- trim-right@1.0.1
  | | +-- babel-helpers@6.24.1
  | | | +-- babel-runtime@6.26.0 deduped
  | | | `-- babel-template@6.26.0 deduped
  | | +-- babel-messages@6.23.0
  | | | `-- babel-runtime@6.26.0 deduped
  | | +-- babel-register@6.26.0
  | | | +-- babel-core@6.26.3 deduped
  | | | +-- babel-runtime@6.26.0 deduped
  | | | +-- core-js@2.6.5
  | | | +-- home-or-tmp@2.0.0
  | | | | +-- os-homedir@1.0.2 deduped
  | | | | `-- os-tmpdir@1.0.2 deduped
  | | | +-- lodash@4.17.11 deduped
  | | | +-- mkdirp@0.5.1 deduped
  | | | `-- source-map-support@0.4.18
  | | |   `-- source-map@0.5.7
  | | +-- babel-runtime@6.26.0
  | | | +-- core-js@2.6.5 deduped
  | | | `-- regenerator-runtime@0.11.1
  | | +-- babel-template@6.26.0
  | | | +-- babel-runtime@6.26.0 deduped
  | | | +-- babel-traverse@6.26.0 deduped
  | | | +-- babel-types@6.26.0 deduped
  | | | +-- babylon@6.18.0 deduped
  | | | `-- lodash@4.17.11 deduped
  | | +-- babel-traverse@6.26.0
  | | | +-- babel-code-frame@6.26.0 deduped
  | | | +-- babel-messages@6.23.0 deduped
  | | | +-- babel-runtime@6.26.0 deduped
  | | | +-- babel-types@6.26.0 deduped
  | | | +-- babylon@6.18.0 deduped
  | | | +-- debug@2.6.9
  | | | | `-- ms@2.0.0
  | | | +-- globals@9.18.0
  | | | +-- invariant@2.2.4
  | | | | `-- loose-envify@1.4.0 deduped
  | | | `-- lodash@4.17.11 deduped
  | | +-- babel-types@6.26.0
  | | | +-- babel-runtime@6.26.0 deduped
  | | | +-- esutils@2.0.2 deduped
  | | | +-- lodash@4.17.11 deduped
  | | | `-- to-fast-properties@1.0.3
  | | +-- babylon@6.18.0
  | | +-- convert-source-map@1.6.0 deduped
  | | +-- debug@2.6.9
  | | | `-- ms@2.0.0
  | | +-- json5@0.5.1
  | | +-- lodash@4.17.11 deduped
  | | +-- minimatch@3.0.4 deduped
  | | +-- path-is-absolute@1.0.1 deduped
  | | +-- private@0.1.8
  | | +-- slash@1.0.0
  | | `-- source-map@0.5.7
  | +-- babel-plugin-transform-es2015-destructuring@6.23.0
  | | `-- babel-runtime@6.26.0 deduped
  | +-- babel-plugin-transform-object-rest-spread@6.26.0
  | | +-- babel-plugin-syntax-object-rest-spread@6.13.0
  | | `-- babel-runtime@6.26.0 deduped
  | +-- babel-plugin-transform-react-jsx@6.24.1
  | | +-- babel-helper-builder-react-jsx@6.26.0
  | | | +-- babel-runtime@6.26.0 deduped
  | | | +-- babel-types@6.26.0 deduped
  | | | `-- esutils@2.0.2 deduped
  | | +-- babel-plugin-syntax-jsx@6.18.0
  | | `-- babel-runtime@6.26.0 deduped
  | +-- caller-path@2.0.0
  | | `-- caller-callsite@2.0.0
  | |   `-- callsites@2.0.0
  | `-- resolve-from@3.0.0
  +-- isexe@2.0.0
  +-- istanbul-lib-processinfo@1.0.0
  | +-- archy@1.0.0
  | +-- cross-spawn@6.0.5
  | | +-- nice-try@1.0.5 deduped
  | | +-- path-key@2.0.1 deduped
  | | +-- semver@5.7.0 deduped
  | | +-- shebang-command@1.2.0 deduped
  | | `-- which@1.2.14 deduped
  | +-- istanbul-lib-coverage@2.0.5
  | +-- rimraf@2.6.3 deduped
  | `-- uuid@3.3.2 deduped
  +-- jackspeak@1.3.7
  | `-- cliui@4.1.0
  |   +-- string-width@2.1.1
  |   | +-- is-fullwidth-code-point@2.0.0
  |   | `-- strip-ansi@4.0.0 deduped
  |   +-- strip-ansi@4.0.0
  |   | `-- ansi-regex@3.0.0
  |   `-- wrap-ansi@2.1.0
  |     +-- string-width@1.0.2 deduped
  |     `-- strip-ansi@3.0.1 deduped
  +-- minipass@2.3.5
  | +-- safe-buffer@5.1.2 deduped
  | `-- yallist@3.0.3 deduped
  +-- mkdirp@0.5.1 deduped
  +-- nyc@14.1.1
  | +-- archy@1.0.0 deduped
  | +-- caching-transform@3.0.2
  | | +-- hasha@3.0.0
  | | | `-- is-stream@1.1.0
  | | +-- make-dir@2.1.0 deduped
  | | +-- package-hash@3.0.0
  | | | +-- graceful-fs@4.1.15 deduped
  | | | +-- hasha@3.0.0 deduped
  | | | +-- lodash.flattendeep@4.4.0
  | | | `-- release-zalgo@1.0.0
  | | |   `-- es6-error@4.1.1
  | | `-- write-file-atomic@2.4.2 deduped
  | +-- convert-source-map@1.6.0
  | | `-- safe-buffer@5.1.2 deduped
  | +-- cp-file@6.2.0
  | | +-- graceful-fs@4.1.15 deduped
  | | +-- make-dir@2.1.0 deduped
  | | +-- nested-error-stacks@2.1.0
  | | +-- pify@4.0.1
  | | `-- safe-buffer@5.1.2 deduped
  | +-- find-cache-dir@2.1.0
  | | +-- commondir@1.0.1
  | | +-- make-dir@2.1.0 deduped
  | | `-- pkg-dir@3.0.0
  | |   `-- find-up@3.0.0
  | |     `-- locate-path@3.0.0
  | |       +-- p-locate@3.0.0
  | |       | `-- p-limit@2.2.0
  | |       |   `-- p-try@2.2.0
  | |       `-- path-exists@3.0.0 deduped
  | +-- find-up@3.0.0
  | | `-- locate-path@3.0.0
  | |   +-- p-locate@3.0.0
  | |   | `-- p-limit@2.2.0
  | |   |   `-- p-try@2.2.0
  | |   `-- path-exists@3.0.0
  | +-- foreground-child@1.5.6 deduped
  | +-- glob@7.1.4 deduped
  | +-- istanbul-lib-coverage@2.0.5 deduped
  | +-- istanbul-lib-hook@2.0.7
  | | `-- append-transform@1.0.0
  | |   `-- default-require-extensions@2.0.0
  | |     `-- strip-bom@3.0.0 deduped
  | +-- istanbul-lib-instrument@3.3.0
  | | +-- @babel/generator@7.4.4
  | | | +-- @babel/types@7.4.4 deduped
  | | | +-- jsesc@2.5.2
  | | | +-- lodash@4.17.11 deduped
  | | | +-- source-map@0.5.7
  | | | `-- trim-right@1.0.1 deduped
  | | +-- @babel/parser@7.4.4
  | | +-- @babel/template@7.4.4
  | | | +-- @babel/code-frame@7.0.0
  | | | | `-- @babel/highlight@7.0.0
  | | | |   +-- chalk@2.4.2 deduped
  | | | |   +-- esutils@2.0.2 deduped
  | | | |   `-- js-tokens@4.0.0
  | | | +-- @babel/parser@7.4.4 deduped
  | | | `-- @babel/types@7.4.4 deduped
  | | +-- @babel/traverse@7.4.4
  | | | +-- @babel/code-frame@7.0.0 deduped
  | | | +-- @babel/generator@7.4.4 deduped
  | | | +-- @babel/helper-function-name@7.1.0
  | | | | +-- @babel/helper-get-function-arity@7.0.0
  | | | | | `-- @babel/types@7.4.4 deduped
  | | | | +-- @babel/template@7.4.4 deduped
  | | | | `-- @babel/types@7.4.4 deduped
  | | | +-- @babel/helper-split-export-declaration@7.4.4
  | | | | `-- @babel/types@7.4.4 deduped
  | | | +-- @babel/parser@7.4.4 deduped
  | | | +-- @babel/types@7.4.4 deduped
  | | | +-- debug@4.1.1 deduped
  | | | +-- globals@11.12.0 deduped
  | | | `-- lodash@4.17.11 deduped
  | | +-- @babel/types@7.4.4
  | | | +-- esutils@2.0.2 deduped
  | | | +-- lodash@4.17.11 deduped
  | | | `-- to-fast-properties@2.0.0
  | | +-- istanbul-lib-coverage@2.0.5 deduped
  | | `-- semver@6.0.0
  | +-- istanbul-lib-report@2.0.8
  | | +-- istanbul-lib-coverage@2.0.5 deduped
  | | +-- make-dir@2.1.0 deduped
  | | `-- supports-color@6.1.0
  | |   `-- has-flag@3.0.0 deduped
  | +-- istanbul-lib-source-maps@3.0.6
  | | +-- debug@4.1.1 deduped
  | | +-- istanbul-lib-coverage@2.0.5 deduped
  | | +-- make-dir@2.1.0 deduped
  | | +-- rimraf@2.6.3 deduped
  | | `-- source-map@0.6.1 deduped
  | +-- istanbul-reports@2.2.4
  | | `-- handlebars@4.1.2
  | |   +-- neo-async@2.6.1
  | |   +-- optimist@0.6.1
  | |   | +-- minimist@0.0.8 deduped
  | |   | `-- wordwrap@0.0.3
  | |   +-- source-map@0.6.1 deduped
  | |   `-- uglify-js@3.5.12
  | |     +-- commander@2.20.0
  | |     `-- source-map@0.6.1 deduped
  | +-- js-yaml@3.13.1 deduped
  | +-- make-dir@2.1.0
  | | +-- pify@4.0.1
  | | `-- semver@5.7.0 deduped
  | +-- merge-source-map@1.1.0
  | | `-- source-map@0.6.1 deduped
  | +-- resolve-from@4.0.0
  | +-- rimraf@2.6.3 deduped
  | +-- signal-exit@3.0.2 deduped
  | +-- spawn-wrap@1.4.2
  | | +-- foreground-child@1.5.6 deduped
  | | +-- mkdirp@0.5.1 deduped
  | | +-- os-homedir@1.0.2 deduped
  | | +-- rimraf@2.6.3 deduped
  | | +-- signal-exit@3.0.2 deduped
  | | `-- which@1.3.1
  | |   `-- isexe@2.0.0 deduped
  | +-- test-exclude@5.2.3
  | | +-- glob@7.1.4 deduped
  | | +-- minimatch@3.0.4 deduped
  | | +-- read-pkg-up@4.0.0
  | | | +-- find-up@3.0.0
  | | | | `-- locate-path@3.0.0
  | | | |   +-- p-locate@3.0.0
  | | | |   | `-- p-limit@2.2.0
  | | | |   |   `-- p-try@2.2.0
  | | | |   `-- path-exists@3.0.0 deduped
  | | | `-- read-pkg@3.0.0
  | | |   +-- load-json-file@4.0.0
  | | |   | +-- graceful-fs@4.1.15 deduped
  | | |   | +-- parse-json@4.0.0
  | | |   | | +-- error-ex@1.3.2 deduped
  | | |   | | `-- json-parse-better-errors@1.0.2 deduped
  | | |   | +-- pify@3.0.0
  | | |   | `-- strip-bom@3.0.0 deduped
  | | |   +-- normalize-package-data@2.5.0 deduped
  | | |   `-- path-type@3.0.0
  | | |     `-- pify@3.0.0 deduped
  | | `-- require-main-filename@2.0.0
  | +-- uuid@3.3.2 deduped
  | +-- yargs@13.2.4
  | | +-- cliui@5.0.0
  | | | +-- string-width@3.1.0 deduped
  | | | +-- strip-ansi@5.2.0
  | | | | `-- ansi-regex@4.1.0
  | | | `-- wrap-ansi@5.1.0
  | | |   +-- ansi-styles@3.2.1
  | | |   | `-- color-convert@1.9.3 deduped
  | | |   +-- string-width@3.1.0 deduped
  | | |   `-- strip-ansi@5.2.0 deduped
  | | +-- find-up@3.0.0
  | | | `-- locate-path@3.0.0
  | | |   +-- p-locate@3.0.0
  | | |   | `-- p-limit@2.2.0
  | | |   |   `-- p-try@2.2.0
  | | |   `-- path-exists@3.0.0 deduped
  | | +-- get-caller-file@2.0.5
  | | +-- os-locale@3.1.0
  | | | +-- execa@1.0.0
  | | | | +-- cross-spawn@6.0.5
  | | | | | +-- nice-try@1.0.5 deduped
  | | | | | +-- path-key@2.0.1 deduped
  | | | | | +-- semver@5.7.0 deduped
  | | | | | +-- shebang-command@1.2.0 deduped
  | | | | | `-- which@1.2.14 deduped
  | | | | +-- get-stream@4.1.0
  | | | | | `-- pump@3.0.0
  | | | | |   +-- end-of-stream@1.4.1
  | | | | |   | `-- once@1.4.0 deduped
  | | | | |   `-- once@1.4.0 deduped
  | | | | +-- is-stream@1.1.0 deduped
  | | | | +-- npm-run-path@2.0.2
  | | | | | `-- path-key@2.0.1 deduped
  | | | | +-- p-finally@1.0.0
  | | | | +-- signal-exit@3.0.2 deduped
  | | | | `-- strip-eof@1.0.0
  | | | +-- lcid@2.0.0
  | | | | `-- invert-kv@2.0.0
  | | | `-- mem@4.3.0
  | | |   +-- map-age-cleaner@0.1.3
  | | |   | `-- p-defer@1.0.0
  | | |   +-- mimic-fn@2.1.0
  | | |   `-- p-is-promise@2.1.0
  | | +-- require-directory@2.1.1
  | | +-- require-main-filename@2.0.0 deduped
  | | +-- set-blocking@2.0.0 deduped
  | | +-- string-width@3.1.0
  | | | +-- emoji-regex@7.0.3
  | | | +-- is-fullwidth-code-point@2.0.0
  | | | `-- strip-ansi@5.2.0 deduped
  | | +-- which-module@2.0.0
  | | +-- y18n@4.0.0
  | | `-- yargs-parser@13.1.0 deduped
  | `-- yargs-parser@13.1.0
  |   +-- camelcase@5.3.1
  |   `-- decamelize@1.2.0
  +-- opener@1.5.1
  +-- own-or@1.0.0
  +-- own-or-env@1.0.1
  | `-- own-or@1.0.0 deduped
  +-- rimraf@2.6.3 deduped
  +-- signal-exit@3.0.2
  +-- source-map-support@0.5.12
  | +-- buffer-from@1.1.1
  | `-- source-map@0.6.1
  +-- stack-utils@1.0.2
  +-- tap-mocha-reporter@4.0.1
  | +-- color-support@1.1.3 deduped
  | +-- debug@2.6.9
  | | `-- ms@2.0.0
  | +-- diff@1.4.0
  | +-- escape-string-regexp@1.0.5
  | +-- glob@7.1.4 deduped
  | +-- readable-stream@2.3.6
  | | +-- core-util-is@1.0.2
  | | +-- inherits@2.0.3 deduped
  | | +-- isarray@1.0.0 deduped
  | | +-- process-nextick-args@2.0.0
  | | +-- safe-buffer@5.1.2 deduped
  | | +-- string_decoder@1.1.1
  | | | `-- safe-buffer@5.1.2 deduped
  | | `-- util-deprecate@1.0.2
  | +-- tap-parser@8.1.0
  | | +-- events-to-array@1.1.2 deduped
  | | +-- minipass@2.3.5 deduped
  | | `-- tap-yaml@1.0.0 deduped
  | +-- tap-yaml@1.0.0 deduped
  | `-- unicode-length@1.0.3
  |   +-- punycode@1.3.2 deduped
  |   `-- strip-ansi@3.0.1 deduped
  +-- tap-parser@9.3.2
  | +-- events-to-array@1.1.2
  | +-- minipass@2.3.5 deduped
  | `-- tap-yaml@1.0.0 deduped
  +-- tap-yaml@1.0.0
  | `-- yaml@1.5.1 deduped
  +-- tcompare@2.3.0
  +-- treport@0.3.0
  | +-- cardinal@2.1.1
  | | +-- ansicolors@0.3.2
  | | `-- redeyed@2.1.1
  | |   `-- esprima@4.0.1 deduped
  | +-- chalk@2.4.2 deduped
  | +-- import-jsx@2.0.0 deduped
  | +-- ink@2.1.1
  | | +-- @types/react@16.8.17
  | | | +-- @types/prop-types@15.7.1
  | | | `-- csstype@2.6.4
  | | +-- arrify@1.0.1
  | | +-- auto-bind@2.1.0
  | | | `-- @types/react@16.8.17 deduped
  | | +-- chalk@2.4.2 deduped
  | | +-- cli-cursor@2.1.0 deduped
  | | +-- cli-truncate@1.1.0
  | | | +-- slice-ansi@1.0.0 deduped
  | | | `-- string-width@2.1.1
  | | |   +-- is-fullwidth-code-point@2.0.0
  | | |   `-- strip-ansi@4.0.0
  | | |     `-- ansi-regex@3.0.0
  | | +-- is-ci@2.0.0
  | | | `-- ci-info@2.0.0
  | | +-- lodash.throttle@4.1.1
  | | +-- log-update@3.2.0
  | | | +-- ansi-escapes@3.2.0 deduped
  | | | +-- cli-cursor@2.1.0 deduped
  | | | `-- wrap-ansi@5.1.0
  | | |   +-- ansi-styles@3.2.1
  | | |   | `-- color-convert@1.9.3 deduped
  | | |   +-- string-width@3.1.0
  | | |   | +-- emoji-regex@7.0.3 deduped
  | | |   | +-- is-fullwidth-code-point@2.0.0
  | | |   | `-- strip-ansi@5.2.0 deduped
  | | |   `-- strip-ansi@5.2.0
  | | |     `-- ansi-regex@4.1.0
  | | +-- prop-types@15.7.2 deduped
  | | +-- react-reconciler@0.20.4
  | | | +-- loose-envify@1.4.0 deduped
  | | | +-- object-assign@4.1.1 deduped
  | | | +-- prop-types@15.7.2 deduped
  | | | `-- scheduler@0.13.6 deduped
  | | +-- scheduler@0.13.6
  | | | +-- loose-envify@1.4.0 deduped
  | | | `-- object-assign@4.1.1 deduped
  | | +-- signal-exit@3.0.2 deduped
  | | +-- slice-ansi@1.0.0 deduped
  | | +-- string-length@2.0.0 deduped
  | | +-- widest-line@2.0.1
  | | | `-- string-width@2.1.1
  | | |   +-- is-fullwidth-code-point@2.0.0
  | | |   `-- strip-ansi@4.0.0
  | | |     `-- ansi-regex@3.0.0
  | | +-- wrap-ansi@5.1.0
  | | | +-- ansi-styles@3.2.1
  | | | | `-- color-convert@1.9.3 deduped
  | | | +-- string-width@3.1.0
  | | | | +-- emoji-regex@7.0.3 deduped
  | | | | +-- is-fullwidth-code-point@2.0.0
  | | | | `-- strip-ansi@5.2.0 deduped
  | | | `-- strip-ansi@5.2.0
  | | |   `-- ansi-regex@4.1.0
  | | `-- yoga-layout-prebuilt@1.9.3
  | +-- ms@2.1.1
  | +-- react@16.8.6
  | | +-- loose-envify@1.4.0 deduped
  | | +-- object-assign@4.1.1 deduped
  | | +-- prop-types@15.7.2 deduped
  | | `-- scheduler@0.13.6 deduped
  | +-- string-length@2.0.0
  | | +-- astral-regex@1.0.0
  | | `-- strip-ansi@4.0.0
  | |   `-- ansi-regex@3.0.0
  | +-- tap-parser@9.3.2 deduped
  | `-- unicode-length@2.0.1
  |   +-- punycode@2.1.1
  |   `-- strip-ansi@3.0.1 deduped
  +-- trivial-deferred@1.0.1
  +-- ts-node@8.1.0
  | +-- arg@4.1.0
  | +-- diff@3.5.0
  | +-- make-error@1.3.5
  | +-- source-map-support@0.5.12 deduped
  | `-- yn@3.1.0
  +-- typescript@3.4.5
  +-- which@1.3.1
  | `-- isexe@2.0.0 deduped
  +-- write-file-atomic@2.4.2
  | +-- graceful-fs@4.1.15
  | +-- imurmurhash@0.1.4 deduped
  | `-- signal-exit@3.0.2 deduped
  +-- yaml@1.5.1
  | `-- @babel/runtime@7.4.4
  |   `-- regenerator-runtime@0.13.2
  `-- yapool@1.0.0

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.0.6 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.0.6: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 114 packages from 102 contributors, removed 8 packages, updated 14 packages, moved 5 packages and audited 1789 packages in 25.27s
found 0 vulnerabilities

/app $ npm test

> native-hdr-histogram@0.5.0 test /app
> standard && tap test.js

 FAIL  test.js
 ✖ percentile match

  test.js                                                           
  80 |   t.ok(instance.record(45))                                  
  81 |   const instance2 = Histogram.decode(instance.encode())      
> 82 |   t.equal(instance2.percentile(10), 42, 'percentile match')  
     | ----^                                                        
  83 |   t.equal(instance2.percentile(99), 45, 'percentile match')  
  84 |   t.end()                                                    
  85 | })                                                           

  found: 0
  wanted: 42
  compare: ===
  stack: |
    Test.<anonymous> (test.js:82:5)
    Object.<anonymous> (test.js:76:1)
    Object.<anonymous> (node_modules/append-transform/index.js:62:4)

 FAIL  test.js
 ✖ percentile match

  test.js                                                           
  81 |   const instance2 = Histogram.decode(instance.encode())      
  82 |   t.equal(instance2.percentile(10), 42, 'percentile match')  
> 83 |   t.equal(instance2.percentile(99), 45, 'percentile match')  
     | ----^                                                        
  84 |   t.end()                                                    
  85 | })                                                           
  86 |                                                              

  found: 0
  wanted: 45
  compare: ===
  stack: |
    Test.<anonymous> (test.js:83:5)
    Object.<anonymous> (test.js:76:1)
    Object.<anonymous> (node_modules/append-transform/index.js:62:4)

 FAIL  test.js 2 failed of 69 2s
 ✖ percentile match
 ✖ percentile match


                         
  🌈 SUMMARY RESULTS 🌈  
                         

 FAIL  test.js 2 failed of 69 2s
 ✖ percentile match
 ✖ percentile match

Suites:   1 failed, 1 of 1 completed
Asserts:  2 failed, 67 passed, of 69
Time:     2s
--------------|----------|----------|----------|----------|-------------------|
File          |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
--------------|----------|----------|----------|----------|-------------------|
All files     |      100 |      100 |      100 |      100 |                   |
 histogram.js |      100 |      100 |      100 |      100 |                   |
--------------|----------|----------|----------|----------|-------------------|
npm ERR! Test failed.  See above for more details.

@ahwayakchih
Copy link
Contributor Author

ahwayakchih commented May 14, 2019

@vweevers ok, now it passes on Node 12 on OSX, but fails on Linux: https://travis-ci.org/mcollina/native-hdr-histogram/builds/532237331?utm_source=github_status&utm_medium=notification

It fails encoding/decoding, same as here on Node 12 and 11 (Alpine Linux in Docker). It does work in Node 10.15 (same Alpine Linux in Docker).

Could we merge this and then find someone to help with encoding/decoding problem? Or should it be fixed with this PR?

@vweevers
Copy link
Collaborator

I don't have time to think about this atm, sorry.

@mcollina
Copy link
Owner

CI must be green, I'm sorry.

@ahwayakchih
Copy link
Contributor Author

@vweevers @mcollina updating HDR sources magically fixed encoding/decoding problem on linux, but broke x86 build on windows. I copied part of old code onto new one and windows x86 now works too. All green :).

appveyor.yml Outdated Show resolved Hide resolved
Try to use workaround for missing "default" Node v12 on appveyor:
appveyor/ci#2921 (comment)
@ahwayakchih
Copy link
Contributor Author

@mcollina, @vweevers can this be merged now? Or is there anything else that should be changed first?

Copy link
Owner

@mcollina mcollina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@mcollina mcollina merged commit 92e98cd into mcollina:master May 19, 2019
@ahwayakchih
Copy link
Contributor Author

Thanks!

@ahwayakchih ahwayakchih deleted the fix-for-node-12 branch May 19, 2019 01:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants