googleapis / google-cloud-node

Google Cloud Client Library for Node.js
https://cloud.google.com/nodejs
Apache License 2.0
2.91k stars 592 forks source link

`npm install google-cloud` takes 83 seconds. #1627

Closed JustinBeckwith closed 8 years ago

JustinBeckwith commented 8 years ago

Installation of the google-cloud npm module has gotten just a little slow. I just ran this on OSX, and it took 83 seconds to complete. That's waaaaay too slow.

``` beckwith-macbookpro:web beckwith$ time npm install --save google-cloud > grpc@0.14.1 install /Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/compute/node_modules/grpc > node-pre-gyp install --fallback-to-build [grpc] Success: "/Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/compute/node_modules/grpc/src/node/extension_binary/grpc_node.node" is installed via remote > grpc@0.14.1 install /Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/dns/node_modules/grpc > node-pre-gyp install --fallback-to-build [grpc] Success: "/Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/dns/node_modules/grpc/src/node/extension_binary/grpc_node.node" is installed via remote > grpc@0.14.1 install /Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/prediction/node_modules/grpc > node-pre-gyp install --fallback-to-build [grpc] Success: "/Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/prediction/node_modules/grpc/src/node/extension_binary/grpc_node.node" is installed via remote > grpc@0.14.1 install /Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/resource/node_modules/grpc > node-pre-gyp install --fallback-to-build [grpc] Success: "/Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/resource/node_modules/grpc/src/node/extension_binary/grpc_node.node" is installed via remote > grpc@0.14.1 install /Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/storage/node_modules/grpc > node-pre-gyp install --fallback-to-build [grpc] Success: "/Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/storage/node_modules/grpc/src/node/extension_binary/grpc_node.node" is installed via remote > grpc@0.14.1 install /Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/translate/node_modules/grpc > node-pre-gyp install --fallback-to-build [grpc] Success: "/Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/translate/node_modules/grpc/src/node/extension_binary/grpc_node.node" is installed via remote > grpc@0.14.1 install /Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/vision/node_modules/grpc > node-pre-gyp install --fallback-to-build [grpc] Success: "/Users/beckwith/Code/next/cloudcats/web/node_modules/@google-cloud/vision/node_modules/grpc/src/node/extension_binary/grpc_node.node" is installed via remote > grpc@0.15.0 install /Users/beckwith/Code/next/cloudcats/web/node_modules/google-gax/node_modules/grpc > node-pre-gyp install --fallback-to-build [grpc] Success: "/Users/beckwith/Code/next/cloudcats/web/node_modules/google-gax/node_modules/grpc/src/node/extension_binary/grpc_node.node" is installed via remote > grpc@1.0.0 install /Users/beckwith/Code/next/cloudcats/web/node_modules/grpc > node-pre-gyp install --fallback-to-build [grpc] Success: "/Users/beckwith/Code/next/cloudcats/web/node_modules/grpc/src/node/extension_binary/grpc_node.node" is installed via remote cloudcats-web@1.0.0 /Users/beckwith/Code/next/cloudcats/web └─┬ google-cloud@0.40.0 ├─┬ @google-cloud/bigquery@0.2.0 │ ├─┬ @google-cloud/common@0.4.0 │ │ ├── array-uniq@1.0.3 │ │ ├── dot-prop@2.4.0 │ │ ├── ent@2.2.0 │ │ ├─┬ google-auto-auth@0.2.4 │ │ │ └─┬ google-auth-library@0.9.8 │ │ │ ├─┬ gtoken@1.2.1 │ │ │ │ ├─┬ google-p12-pem@0.1.0 │ │ │ │ │ └── node-forge@0.6.42 │ │ │ │ └── mime@1.3.4 │ │ │ ├─┬ jws@3.0.0 │ │ │ │ ├─┬ base64url@1.0.6 │ │ │ │ │ ├─┬ concat-stream@1.4.10 │ │ │ │ │ │ └─┬ readable-stream@1.1.14 │ │ │ │ │ │ └── isarray@0.0.1 │ │ │ │ │ └─┬ meow@2.0.0 │ │ │ │ │ ├─┬ camelcase-keys@1.0.0 │ │ │ │ │ │ ├── camelcase@1.2.1 │ │ │ │ │ │ └── map-obj@1.0.1 │ │ │ │ │ ├─┬ indent-string@1.2.2 │ │ │ │ │ │ ├── get-stdin@4.0.1 │ │ │ │ │ │ └─┬ repeating@1.1.3 │ │ │ │ │ │ └── is-finite@1.0.1 │ │ │ │ │ ├── minimist@1.2.0 │ │ │ │ │ └── object-assign@1.0.0 │ │ │ │ └─┬ jwa@1.0.2 │ │ │ │ ├── base64url@0.0.6 │ │ │ │ ├── buffer-equal-constant-time@1.0.1 │ │ │ │ └─┬ ecdsa-sig-formatter@1.0.7 │ │ │ │ └── base64-url@1.3.2 │ │ │ ├── lodash.noop@3.0.1 │ │ │ ├─┬ request@2.60.0 │ │ │ │ ├── aws-sign2@0.5.0 │ │ │ │ ├── bl@1.0.3 │ │ │ │ ├─┬ form-data@1.0.1 │ │ │ │ │ └─┬ async@2.0.1 │ │ │ │ │ └── lodash@4.16.2 │ │ │ │ ├─┬ har-validator@1.8.0 │ │ │ │ │ └── bluebird@2.11.0 │ │ │ │ ├─┬ http-signature@0.11.0 │ │ │ │ │ ├── asn1@0.1.11 │ │ │ │ │ ├── assert-plus@0.1.5 │ │ │ │ │ └── ctype@0.5.3 │ │ │ │ └── qs@4.0.0 │ │ │ └── string-template@0.2.1 │ │ ├─┬ grpc@1.0.0 │ │ │ ├── lodash@3.10.1 │ │ │ ├── nan@2.4.0 │ │ │ ├─┬ node-pre-gyp@0.6.29 │ │ │ │ ├─┬ mkdirp@0.5.1 │ │ │ │ │ └── minimist@0.0.8 │ │ │ │ ├─┬ nopt@3.0.6 │ │ │ │ │ └── abbrev@1.0.9 │ │ │ │ ├─┬ npmlog@3.1.2 │ │ │ │ │ ├─┬ are-we-there-yet@1.1.2 │ │ │ │ │ │ ├── delegates@1.0.0 │ │ │ │ │ │ └─┬ readable-stream@2.1.5 │ │ │ │ │ │ ├── buffer-shims@1.0.0 │ │ │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ │ │ ├── inherits@2.0.1 │ │ │ │ │ │ ├── isarray@1.0.0 │ │ │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ │ │ └── util-deprecate@1.0.2 │ │ │ │ │ ├── console-control-strings@1.1.0 │ │ │ │ │ ├─┬ gauge@2.6.0 │ │ │ │ │ │ ├── aproba@1.0.4 │ │ │ │ │ │ ├── has-color@0.1.7 │ │ │ │ │ │ ├── has-unicode@2.0.1 │ │ │ │ │ │ ├── object-assign@4.1.0 │ │ │ │ │ │ ├── signal-exit@3.0.0 │ │ │ │ │ │ ├─┬ string-width@1.0.2 │ │ │ │ │ │ │ ├─┬ code-point-at@1.0.0 │ │ │ │ │ │ │ │ └── number-is-nan@1.0.0 │ │ │ │ │ │ │ └─┬ is-fullwidth-code-point@1.0.0 │ │ │ │ │ │ │ └── number-is-nan@1.0.0 │ │ │ │ │ │ ├─┬ strip-ansi@3.0.1 │ │ │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ │ │ └── wide-align@1.1.0 │ │ │ │ │ └── set-blocking@2.0.0 │ │ │ │ ├─┬ rc@1.1.6 │ │ │ │ │ ├── deep-extend@0.4.1 │ │ │ │ │ ├── ini@1.3.4 │ │ │ │ │ ├── minimist@1.2.0 │ │ │ │ │ └── strip-json-comments@1.0.4 │ │ │ │ ├─┬ request@2.74.0 │ │ │ │ │ ├── aws-sign2@0.6.0 │ │ │ │ │ ├── aws4@1.4.1 │ │ │ │ │ ├─┬ bl@1.1.2 │ │ │ │ │ │ └─┬ readable-stream@2.0.6 │ │ │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ │ │ ├── inherits@2.0.1 │ │ │ │ │ │ ├── isarray@1.0.0 │ │ │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ │ │ └── util-deprecate@1.0.2 │ │ │ │ │ ├── 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 │ │ │ │ │ │ └── async@1.5.2 │ │ │ │ │ ├─┬ har-validator@2.0.6 │ │ │ │ │ │ ├─┬ 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 │ │ │ │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ │ │ │ └── supports-color@2.0.0 │ │ │ │ │ │ ├─┬ commander@2.9.0 │ │ │ │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ │ │ │ ├─┬ 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 │ │ │ │ │ │ │ └── xtend@4.0.1 │ │ │ │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ │ │ │ └── pinkie@2.0.4 │ │ │ │ │ ├─┬ hawk@3.1.3 │ │ │ │ │ │ ├── boom@2.10.1 │ │ │ │ │ │ ├── cryptiles@2.0.5 │ │ │ │ │ │ ├── hoek@2.16.3 │ │ │ │ │ │ └── sntp@1.0.9 │ │ │ │ │ ├─┬ http-signature@1.1.1 │ │ │ │ │ │ ├── assert-plus@0.2.0 │ │ │ │ │ │ ├─┬ jsprim@1.3.0 │ │ │ │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ │ │ │ ├── json-schema@0.2.2 │ │ │ │ │ │ │ └── verror@1.3.6 │ │ │ │ │ │ └─┬ sshpk@1.9.2 │ │ │ │ │ │ ├── asn1@0.2.3 │ │ │ │ │ │ ├── assert-plus@1.0.0 │ │ │ │ │ │ ├── dashdash@1.14.0 │ │ │ │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ │ │ │ ├── getpass@0.1.6 │ │ │ │ │ │ ├── jodid25519@1.0.2 │ │ │ │ │ │ ├── jsbn@0.1.0 │ │ │ │ │ │ └── tweetnacl@0.13.3 │ │ │ │ │ ├── is-typedarray@1.0.0 │ │ │ │ │ ├── isstream@0.1.2 │ │ │ │ │ ├── json-stringify-safe@5.0.1 │ │ │ │ │ ├─┬ mime-types@2.1.11 │ │ │ │ │ │ └── mime-db@1.23.0 │ │ │ │ │ ├── node-uuid@1.4.7 │ │ │ │ │ ├── oauth-sign@0.8.2 │ │ │ │ │ ├── qs@6.2.1 │ │ │ │ │ ├── stringstream@0.0.5 │ │ │ │ │ ├── tough-cookie@2.3.1 │ │ │ │ │ └── tunnel-agent@0.4.3 │ │ │ │ ├─┬ rimraf@2.5.4 │ │ │ │ │ └─┬ glob@7.0.5 │ │ │ │ │ ├── fs.realpath@1.0.0 │ │ │ │ │ ├─┬ inflight@1.0.5 │ │ │ │ │ │ └── wrappy@1.0.2 │ │ │ │ │ ├── inherits@2.0.1 │ │ │ │ │ ├─┬ minimatch@3.0.3 │ │ │ │ │ │ └─┬ brace-expansion@1.1.6 │ │ │ │ │ │ ├── balanced-match@0.4.2 │ │ │ │ │ │ └── concat-map@0.0.1 │ │ │ │ │ ├─┬ once@1.3.3 │ │ │ │ │ │ └── wrappy@1.0.2 │ │ │ │ │ └── path-is-absolute@1.0.0 │ │ │ │ ├── semver@5.2.0 │ │ │ │ ├─┬ tar@2.2.1 │ │ │ │ │ ├── block-stream@0.0.9 │ │ │ │ │ ├─┬ fstream@1.0.10 │ │ │ │ │ │ └── graceful-fs@4.1.5 │ │ │ │ │ └── inherits@2.0.1 │ │ │ │ └─┬ tar-pack@3.1.4 │ │ │ │ ├─┬ debug@2.2.0 │ │ │ │ │ └── ms@0.7.1 │ │ │ │ ├─┬ fstream@1.0.10 │ │ │ │ │ ├── graceful-fs@4.1.5 │ │ │ │ │ └── inherits@2.0.1 │ │ │ │ ├─┬ fstream-ignore@1.0.5 │ │ │ │ │ ├── inherits@2.0.1 │ │ │ │ │ └─┬ minimatch@3.0.3 │ │ │ │ │ └─┬ brace-expansion@1.1.6 │ │ │ │ │ ├── balanced-match@0.4.2 │ │ │ │ │ └── concat-map@0.0.1 │ │ │ │ ├─┬ once@1.3.3 │ │ │ │ │ └── wrappy@1.0.2 │ │ │ │ ├─┬ readable-stream@2.1.5 │ │ │ │ │ ├── buffer-shims@1.0.0 │ │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ │ ├── inherits@2.0.1 │ │ │ │ │ ├── isarray@1.0.0 │ │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ │ └── util-deprecate@1.0.2 │ │ │ │ └── uid-number@0.0.6 │ │ │ └─┬ protobufjs@4.1.3 │ │ │ ├─┬ ascli@1.0.0 │ │ │ │ ├── colour@0.7.1 │ │ │ │ └── optjs@3.2.2 │ │ │ ├─┬ bytebuffer@4.1.0 │ │ │ │ ├── bufferview@1.0.1 │ │ │ │ └── long@2.4.0 │ │ │ ├─┬ glob@5.0.15 │ │ │ │ ├── inflight@1.0.5 │ │ │ │ ├─┬ minimatch@3.0.3 │ │ │ │ │ └─┬ brace-expansion@1.1.6 │ │ │ │ │ ├── balanced-match@0.4.2 │ │ │ │ │ └── concat-map@0.0.1 │ │ │ │ └── path-is-absolute@1.0.0 │ │ │ └─┬ yargs@3.32.0 │ │ │ ├── camelcase@2.1.1 │ │ │ ├─┬ cliui@3.2.0 │ │ │ │ └── wrap-ansi@2.0.0 │ │ │ ├── decamelize@1.2.0 │ │ │ ├─┬ os-locale@1.4.0 │ │ │ │ └─┬ lcid@1.0.0 │ │ │ │ └── invert-kv@1.0.0 │ │ │ ├─┬ string-width@1.0.2 │ │ │ │ ├─┬ code-point-at@1.0.0 │ │ │ │ │ └── number-is-nan@1.0.0 │ │ │ │ └── is-fullwidth-code-point@1.0.0 │ │ │ ├── window-size@0.1.4 │ │ │ └── y18n@3.2.1 │ │ └── retry-request@1.3.1 │ ├── arrify@1.0.1 │ ├─┬ duplexify@3.4.5 │ │ ├── end-of-stream@1.0.0 │ │ ├── inherits@2.0.3 │ │ ├─┬ readable-stream@2.0.6 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ └── stream-shift@1.0.0 │ ├── is@3.1.0 │ ├── modelo@4.2.0 │ ├─┬ stream-events@1.0.1 │ │ └── stubs@1.1.2 │ └── string-format-obj@1.1.0 ├─┬ @google-cloud/bigtable@0.3.1 │ ├─┬ concat-stream@1.5.2 │ │ └── typedarray@0.0.6 │ ├─┬ create-error-class@3.0.2 │ │ └── capture-stack-trace@1.0.0 │ ├─┬ dot-prop@3.0.0 │ │ └── is-obj@1.0.1 │ ├── google-proto-files@0.7.0 │ ├── lodash.flatten@4.4.0 │ ├── node-int64@0.4.0 │ ├── prop-assign@1.0.0 │ ├─┬ pumpify@1.3.5 │ │ └─┬ pump@1.0.1 │ │ └── end-of-stream@1.1.0 │ └─┬ through2@2.0.1 │ └── xtend@4.0.1 ├─┬ @google-cloud/compute@0.1.1 │ ├─┬ @google-cloud/common@0.1.1 │ │ ├── google-proto-files@0.2.4 │ │ └─┬ grpc@0.14.1 │ │ ├── lodash@3.10.1 │ │ └─┬ node-pre-gyp@0.6.28 │ │ ├─┬ mkdirp@0.5.1 │ │ │ └── minimist@0.0.8 │ │ ├─┬ nopt@3.0.6 │ │ │ └── abbrev@1.0.7 │ │ ├─┬ npmlog@2.0.3 │ │ │ ├── ansi@0.3.1 │ │ │ ├─┬ are-we-there-yet@1.1.2 │ │ │ │ ├── delegates@1.0.0 │ │ │ │ └─┬ readable-stream@2.1.2 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ └─┬ gauge@1.2.7 │ │ │ ├── has-unicode@2.0.0 │ │ │ ├─┬ lodash.pad@4.3.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ └── lodash.tostring@4.1.2 │ │ │ ├─┬ lodash.padend@4.4.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ └── lodash.tostring@4.1.2 │ │ │ └─┬ lodash.padstart@4.4.0 │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ └── lodash.tostring@4.1.2 │ │ ├─┬ rc@1.1.6 │ │ │ ├── deep-extend@0.4.1 │ │ │ ├── ini@1.3.4 │ │ │ ├── minimist@1.2.0 │ │ │ └── strip-json-comments@1.0.4 │ │ ├─┬ request@2.72.0 │ │ │ ├── aws-sign2@0.6.0 │ │ │ ├── aws4@1.4.1 │ │ │ ├─┬ bl@1.1.2 │ │ │ │ └─┬ readable-stream@2.0.6 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ ├── 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 │ │ │ │ └── async@1.5.2 │ │ │ ├─┬ har-validator@2.0.6 │ │ │ │ ├─┬ 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 │ │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ │ └── supports-color@2.0.0 │ │ │ │ ├─┬ commander@2.9.0 │ │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ │ ├─┬ 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 │ │ │ │ │ └── xtend@4.0.1 │ │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ │ └── pinkie@2.0.4 │ │ │ ├─┬ hawk@3.1.3 │ │ │ │ ├── boom@2.10.1 │ │ │ │ ├── cryptiles@2.0.5 │ │ │ │ ├── hoek@2.16.3 │ │ │ │ └── sntp@1.0.9 │ │ │ ├─┬ http-signature@1.1.1 │ │ │ │ ├── assert-plus@0.2.0 │ │ │ │ ├─┬ jsprim@1.2.2 │ │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ │ ├── json-schema@0.2.2 │ │ │ │ │ └── verror@1.3.6 │ │ │ │ └─┬ sshpk@1.8.3 │ │ │ │ ├── asn1@0.2.3 │ │ │ │ ├── assert-plus@1.0.0 │ │ │ │ ├── dashdash@1.13.1 │ │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ │ ├── getpass@0.1.6 │ │ │ │ ├── jodid25519@1.0.2 │ │ │ │ ├── jsbn@0.1.0 │ │ │ │ └── tweetnacl@0.13.3 │ │ │ ├── is-typedarray@1.0.0 │ │ │ ├── isstream@0.1.2 │ │ │ ├── json-stringify-safe@5.0.1 │ │ │ ├─┬ mime-types@2.1.11 │ │ │ │ └── mime-db@1.23.0 │ │ │ ├── node-uuid@1.4.7 │ │ │ ├── oauth-sign@0.8.2 │ │ │ ├── qs@6.1.0 │ │ │ ├── stringstream@0.0.5 │ │ │ ├── tough-cookie@2.2.2 │ │ │ └── tunnel-agent@0.4.3 │ │ ├─┬ rimraf@2.5.2 │ │ │ └─┬ glob@7.0.3 │ │ │ ├─┬ inflight@1.0.4 │ │ │ │ └── wrappy@1.0.1 │ │ │ ├── inherits@2.0.1 │ │ │ ├─┬ minimatch@3.0.0 │ │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ │ ├── balanced-match@0.4.1 │ │ │ │ └── concat-map@0.0.1 │ │ │ ├─┬ once@1.3.3 │ │ │ │ └── wrappy@1.0.1 │ │ │ └── path-is-absolute@1.0.0 │ │ ├── semver@5.1.0 │ │ ├─┬ tar@2.2.1 │ │ │ ├── block-stream@0.0.9 │ │ │ ├─┬ fstream@1.0.8 │ │ │ │ └── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ └─┬ tar-pack@3.1.3 │ │ ├─┬ debug@2.2.0 │ │ │ └── ms@0.7.1 │ │ ├─┬ fstream@1.0.8 │ │ │ ├── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ ├─┬ fstream-ignore@1.0.4 │ │ │ ├── inherits@2.0.1 │ │ │ └─┬ minimatch@3.0.0 │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ ├── balanced-match@0.4.1 │ │ │ └── concat-map@0.0.1 │ │ ├─┬ once@1.3.3 │ │ │ └── wrappy@1.0.1 │ │ ├─┬ readable-stream@2.0.6 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ └── uid-number@0.0.6 │ ├── async@1.4.2 │ ├── create-error-class@2.0.1 │ └─┬ gce-images@0.3.0 │ ├── google-auto-auth@0.1.1 │ ├─┬ got@4.2.0 │ │ ├── is-plain-obj@1.1.0 │ │ ├── is-redirect@1.0.0 │ │ ├── is-stream@1.1.0 │ │ ├── lowercase-keys@1.0.0 │ │ ├── node-status-codes@1.0.0 │ │ ├─┬ parse-json@2.2.0 │ │ │ └─┬ error-ex@1.3.0 │ │ │ └── is-arrayish@0.2.1 │ │ ├─┬ pinkie-promise@1.0.0 │ │ │ └── pinkie@1.0.0 │ │ ├── prepend-http@1.0.4 │ │ ├── read-all-stream@3.1.0 │ │ ├── timed-out@2.0.0 │ │ └── unzip-response@1.0.1 │ └── object-assign@3.0.0 ├─┬ @google-cloud/datastore@0.3.1 │ ├── create-error-class@3.0.2 │ ├── propprop@0.3.1 │ └─┬ split-array-stream@1.0.0 │ └── is-stream-ended@0.1.0 ├─┬ @google-cloud/dns@0.1.1 │ ├─┬ @google-cloud/common@0.1.1 │ │ ├── google-proto-files@0.2.4 │ │ └─┬ grpc@0.14.1 │ │ ├── lodash@3.10.1 │ │ └─┬ node-pre-gyp@0.6.28 │ │ ├─┬ mkdirp@0.5.1 │ │ │ └── minimist@0.0.8 │ │ ├─┬ nopt@3.0.6 │ │ │ └── abbrev@1.0.7 │ │ ├─┬ npmlog@2.0.3 │ │ │ ├── ansi@0.3.1 │ │ │ ├─┬ are-we-there-yet@1.1.2 │ │ │ │ ├── delegates@1.0.0 │ │ │ │ └─┬ readable-stream@2.1.2 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ └─┬ gauge@1.2.7 │ │ │ ├── has-unicode@2.0.0 │ │ │ ├─┬ lodash.pad@4.3.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ └── lodash.tostring@4.1.2 │ │ │ ├─┬ lodash.padend@4.4.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ └── lodash.tostring@4.1.2 │ │ │ └─┬ lodash.padstart@4.4.0 │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ └── lodash.tostring@4.1.2 │ │ ├─┬ rc@1.1.6 │ │ │ ├── deep-extend@0.4.1 │ │ │ ├── ini@1.3.4 │ │ │ ├── minimist@1.2.0 │ │ │ └── strip-json-comments@1.0.4 │ │ ├─┬ request@2.72.0 │ │ │ ├── aws-sign2@0.6.0 │ │ │ ├── aws4@1.4.1 │ │ │ ├─┬ bl@1.1.2 │ │ │ │ └─┬ readable-stream@2.0.6 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ ├── 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 │ │ │ │ └── async@1.5.2 │ │ │ ├─┬ har-validator@2.0.6 │ │ │ │ ├─┬ 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 │ │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ │ └── supports-color@2.0.0 │ │ │ │ ├─┬ commander@2.9.0 │ │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ │ ├─┬ 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 │ │ │ │ │ └── xtend@4.0.1 │ │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ │ └── pinkie@2.0.4 │ │ │ ├─┬ hawk@3.1.3 │ │ │ │ ├── boom@2.10.1 │ │ │ │ ├── cryptiles@2.0.5 │ │ │ │ ├── hoek@2.16.3 │ │ │ │ └── sntp@1.0.9 │ │ │ ├─┬ http-signature@1.1.1 │ │ │ │ ├── assert-plus@0.2.0 │ │ │ │ ├─┬ jsprim@1.2.2 │ │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ │ ├── json-schema@0.2.2 │ │ │ │ │ └── verror@1.3.6 │ │ │ │ └─┬ sshpk@1.8.3 │ │ │ │ ├── asn1@0.2.3 │ │ │ │ ├── assert-plus@1.0.0 │ │ │ │ ├── dashdash@1.13.1 │ │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ │ ├── getpass@0.1.6 │ │ │ │ ├── jodid25519@1.0.2 │ │ │ │ ├── jsbn@0.1.0 │ │ │ │ └── tweetnacl@0.13.3 │ │ │ ├── is-typedarray@1.0.0 │ │ │ ├── isstream@0.1.2 │ │ │ ├── json-stringify-safe@5.0.1 │ │ │ ├─┬ mime-types@2.1.11 │ │ │ │ └── mime-db@1.23.0 │ │ │ ├── node-uuid@1.4.7 │ │ │ ├── oauth-sign@0.8.2 │ │ │ ├── qs@6.1.0 │ │ │ ├── stringstream@0.0.5 │ │ │ ├── tough-cookie@2.2.2 │ │ │ └── tunnel-agent@0.4.3 │ │ ├─┬ rimraf@2.5.2 │ │ │ └─┬ glob@7.0.3 │ │ │ ├─┬ inflight@1.0.4 │ │ │ │ └── wrappy@1.0.1 │ │ │ ├── inherits@2.0.1 │ │ │ ├─┬ minimatch@3.0.0 │ │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ │ ├── balanced-match@0.4.1 │ │ │ │ └── concat-map@0.0.1 │ │ │ ├─┬ once@1.3.3 │ │ │ │ └── wrappy@1.0.1 │ │ │ └── path-is-absolute@1.0.0 │ │ ├── semver@5.1.0 │ │ ├─┬ tar@2.2.1 │ │ │ ├── block-stream@0.0.9 │ │ │ ├─┬ fstream@1.0.8 │ │ │ │ └── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ └─┬ tar-pack@3.1.3 │ │ ├─┬ debug@2.2.0 │ │ │ └── ms@0.7.1 │ │ ├─┬ fstream@1.0.8 │ │ │ ├── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ ├─┬ fstream-ignore@1.0.4 │ │ │ ├── inherits@2.0.1 │ │ │ └─┬ minimatch@3.0.0 │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ ├── balanced-match@0.4.1 │ │ │ └── concat-map@0.0.1 │ │ ├─┬ once@1.3.3 │ │ │ └── wrappy@1.0.1 │ │ ├─┬ readable-stream@2.0.6 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ └── uid-number@0.0.6 │ ├── dns-zonefile@0.1.18 │ └── methmeth@1.1.0 ├─┬ @google-cloud/language@0.2.0 │ ├── arguejs@0.2.3 │ └─┬ google-gax@0.6.0 │ ├─┬ chai@3.5.0 │ │ ├── assertion-error@1.0.2 │ │ ├─┬ deep-eql@0.1.3 │ │ │ └── type-detect@0.1.1 │ │ └── type-detect@1.0.0 │ ├── eventemitter2@1.0.5 │ ├─┬ grpc@0.15.0 │ │ ├── lodash@3.10.1 │ │ └─┬ node-pre-gyp@0.6.28 │ │ ├─┬ mkdirp@0.5.1 │ │ │ └── minimist@0.0.8 │ │ ├─┬ nopt@3.0.6 │ │ │ └── abbrev@1.0.9 │ │ ├─┬ npmlog@2.0.4 │ │ │ ├── ansi@0.3.1 │ │ │ ├─┬ are-we-there-yet@1.1.2 │ │ │ │ ├── delegates@1.0.0 │ │ │ │ └─┬ readable-stream@2.1.4 │ │ │ │ ├── buffer-shims@1.0.0 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ └─┬ gauge@1.2.7 │ │ │ ├── has-unicode@2.0.1 │ │ │ ├─┬ lodash.pad@4.4.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ ├── lodash._basetostring@4.12.0 │ │ │ │ └── lodash.tostring@4.1.3 │ │ │ ├─┬ lodash.padend@4.5.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ ├── lodash._basetostring@4.12.0 │ │ │ │ └── lodash.tostring@4.1.3 │ │ │ └─┬ lodash.padstart@4.5.0 │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ ├── lodash._basetostring@4.12.0 │ │ │ └── lodash.tostring@4.1.3 │ │ ├─┬ rc@1.1.6 │ │ │ ├── deep-extend@0.4.1 │ │ │ ├── ini@1.3.4 │ │ │ ├── minimist@1.2.0 │ │ │ └── strip-json-comments@1.0.4 │ │ ├─┬ request@2.72.0 │ │ │ ├── aws-sign2@0.6.0 │ │ │ ├── aws4@1.4.1 │ │ │ ├─┬ bl@1.1.2 │ │ │ │ └─┬ readable-stream@2.0.6 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ ├── 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 │ │ │ │ └── async@1.5.2 │ │ │ ├─┬ har-validator@2.0.6 │ │ │ │ ├─┬ 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 │ │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ │ └── supports-color@2.0.0 │ │ │ │ ├─┬ commander@2.9.0 │ │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ │ ├─┬ 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 │ │ │ │ │ └── xtend@4.0.1 │ │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ │ └── pinkie@2.0.4 │ │ │ ├─┬ hawk@3.1.3 │ │ │ │ ├── boom@2.10.1 │ │ │ │ ├── cryptiles@2.0.5 │ │ │ │ ├── hoek@2.16.3 │ │ │ │ └── sntp@1.0.9 │ │ │ ├─┬ http-signature@1.1.1 │ │ │ │ ├── assert-plus@0.2.0 │ │ │ │ ├─┬ jsprim@1.3.0 │ │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ │ ├── json-schema@0.2.2 │ │ │ │ │ └── verror@1.3.6 │ │ │ │ └─┬ sshpk@1.8.3 │ │ │ │ ├── asn1@0.2.3 │ │ │ │ ├── assert-plus@1.0.0 │ │ │ │ ├── dashdash@1.14.0 │ │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ │ ├── getpass@0.1.6 │ │ │ │ ├── jodid25519@1.0.2 │ │ │ │ ├── jsbn@0.1.0 │ │ │ │ └── tweetnacl@0.13.3 │ │ │ ├── is-typedarray@1.0.0 │ │ │ ├── isstream@0.1.2 │ │ │ ├── json-stringify-safe@5.0.1 │ │ │ ├─┬ mime-types@2.1.11 │ │ │ │ └── mime-db@1.23.0 │ │ │ ├── node-uuid@1.4.7 │ │ │ ├── oauth-sign@0.8.2 │ │ │ ├── qs@6.1.0 │ │ │ ├── stringstream@0.0.5 │ │ │ ├── tough-cookie@2.2.2 │ │ │ └── tunnel-agent@0.4.3 │ │ ├─┬ rimraf@2.5.2 │ │ │ └─┬ glob@7.0.5 │ │ │ ├── fs.realpath@1.0.0 │ │ │ ├─┬ inflight@1.0.5 │ │ │ │ └── wrappy@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├─┬ minimatch@3.0.2 │ │ │ │ └─┬ brace-expansion@1.1.5 │ │ │ │ ├── balanced-match@0.4.1 │ │ │ │ └── concat-map@0.0.1 │ │ │ ├─┬ once@1.3.3 │ │ │ │ └── wrappy@1.0.2 │ │ │ └── path-is-absolute@1.0.0 │ │ ├── semver@5.1.1 │ │ ├─┬ tar@2.2.1 │ │ │ ├── block-stream@0.0.9 │ │ │ ├─┬ fstream@1.0.10 │ │ │ │ └── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ └─┬ tar-pack@3.1.3 │ │ ├─┬ debug@2.2.0 │ │ │ └── ms@0.7.1 │ │ ├─┬ fstream@1.0.10 │ │ │ ├── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ ├─┬ fstream-ignore@1.0.5 │ │ │ ├── inherits@2.0.1 │ │ │ └─┬ minimatch@3.0.2 │ │ │ └─┬ brace-expansion@1.1.5 │ │ │ ├── balanced-match@0.4.1 │ │ │ └── concat-map@0.0.1 │ │ ├─┬ once@1.3.3 │ │ │ └── wrappy@1.0.2 │ │ ├─┬ readable-stream@2.0.6 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ └── uid-number@0.0.6 │ └── lodash@4.11.2 ├── @google-cloud/logging@0.2.0 ├─┬ @google-cloud/prediction@0.1.2 │ ├─┬ @google-cloud/common@0.1.1 │ │ ├── google-proto-files@0.2.4 │ │ └─┬ grpc@0.14.1 │ │ ├── lodash@3.10.1 │ │ └─┬ node-pre-gyp@0.6.28 │ │ ├─┬ mkdirp@0.5.1 │ │ │ └── minimist@0.0.8 │ │ ├─┬ nopt@3.0.6 │ │ │ └── abbrev@1.0.7 │ │ ├─┬ npmlog@2.0.3 │ │ │ ├── ansi@0.3.1 │ │ │ ├─┬ are-we-there-yet@1.1.2 │ │ │ │ ├── delegates@1.0.0 │ │ │ │ └─┬ readable-stream@2.1.2 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ └─┬ gauge@1.2.7 │ │ │ ├── has-unicode@2.0.0 │ │ │ ├─┬ lodash.pad@4.3.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ └── lodash.tostring@4.1.2 │ │ │ ├─┬ lodash.padend@4.4.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ └── lodash.tostring@4.1.2 │ │ │ └─┬ lodash.padstart@4.4.0 │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ └── lodash.tostring@4.1.2 │ │ ├─┬ rc@1.1.6 │ │ │ ├── deep-extend@0.4.1 │ │ │ ├── ini@1.3.4 │ │ │ ├── minimist@1.2.0 │ │ │ └── strip-json-comments@1.0.4 │ │ ├─┬ request@2.72.0 │ │ │ ├── aws-sign2@0.6.0 │ │ │ ├── aws4@1.4.1 │ │ │ ├─┬ bl@1.1.2 │ │ │ │ └─┬ readable-stream@2.0.6 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ ├── 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 │ │ │ │ └── async@1.5.2 │ │ │ ├─┬ har-validator@2.0.6 │ │ │ │ ├─┬ 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 │ │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ │ └── supports-color@2.0.0 │ │ │ │ ├─┬ commander@2.9.0 │ │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ │ ├─┬ 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 │ │ │ │ │ └── xtend@4.0.1 │ │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ │ └── pinkie@2.0.4 │ │ │ ├─┬ hawk@3.1.3 │ │ │ │ ├── boom@2.10.1 │ │ │ │ ├── cryptiles@2.0.5 │ │ │ │ ├── hoek@2.16.3 │ │ │ │ └── sntp@1.0.9 │ │ │ ├─┬ http-signature@1.1.1 │ │ │ │ ├── assert-plus@0.2.0 │ │ │ │ ├─┬ jsprim@1.2.2 │ │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ │ ├── json-schema@0.2.2 │ │ │ │ │ └── verror@1.3.6 │ │ │ │ └─┬ sshpk@1.8.3 │ │ │ │ ├── asn1@0.2.3 │ │ │ │ ├── assert-plus@1.0.0 │ │ │ │ ├── dashdash@1.13.1 │ │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ │ ├── getpass@0.1.6 │ │ │ │ ├── jodid25519@1.0.2 │ │ │ │ ├── jsbn@0.1.0 │ │ │ │ └── tweetnacl@0.13.3 │ │ │ ├── is-typedarray@1.0.0 │ │ │ ├── isstream@0.1.2 │ │ │ ├── json-stringify-safe@5.0.1 │ │ │ ├─┬ mime-types@2.1.11 │ │ │ │ └── mime-db@1.23.0 │ │ │ ├── node-uuid@1.4.7 │ │ │ ├── oauth-sign@0.8.2 │ │ │ ├── qs@6.1.0 │ │ │ ├── stringstream@0.0.5 │ │ │ ├── tough-cookie@2.2.2 │ │ │ └── tunnel-agent@0.4.3 │ │ ├─┬ rimraf@2.5.2 │ │ │ └─┬ glob@7.0.3 │ │ │ ├─┬ inflight@1.0.4 │ │ │ │ └── wrappy@1.0.1 │ │ │ ├── inherits@2.0.1 │ │ │ ├─┬ minimatch@3.0.0 │ │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ │ ├── balanced-match@0.4.1 │ │ │ │ └── concat-map@0.0.1 │ │ │ ├─┬ once@1.3.3 │ │ │ │ └── wrappy@1.0.1 │ │ │ └── path-is-absolute@1.0.0 │ │ ├── semver@5.1.0 │ │ ├─┬ tar@2.2.1 │ │ │ ├── block-stream@0.0.9 │ │ │ ├─┬ fstream@1.0.8 │ │ │ │ └── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ └─┬ tar-pack@3.1.3 │ │ ├─┬ debug@2.2.0 │ │ │ └── ms@0.7.1 │ │ ├─┬ fstream@1.0.8 │ │ │ ├── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ ├─┬ fstream-ignore@1.0.4 │ │ │ ├── inherits@2.0.1 │ │ │ └─┬ minimatch@3.0.0 │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ ├── balanced-match@0.4.1 │ │ │ └── concat-map@0.0.1 │ │ ├─┬ once@1.3.3 │ │ │ └── wrappy@1.0.1 │ │ ├─┬ readable-stream@2.0.6 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ └── uid-number@0.0.6 │ └─┬ JSONStream@1.2.1 │ ├── jsonparse@1.2.0 │ └── through@2.3.8 ├── @google-cloud/pubsub@0.2.0 ├─┬ @google-cloud/resource@0.1.1 │ └─┬ @google-cloud/common@0.1.1 │ ├── google-proto-files@0.2.4 │ └─┬ grpc@0.14.1 │ ├── lodash@3.10.1 │ └─┬ node-pre-gyp@0.6.28 │ ├─┬ mkdirp@0.5.1 │ │ └── minimist@0.0.8 │ ├─┬ nopt@3.0.6 │ │ └── abbrev@1.0.7 │ ├─┬ npmlog@2.0.3 │ │ ├── ansi@0.3.1 │ │ ├─┬ are-we-there-yet@1.1.2 │ │ │ ├── delegates@1.0.0 │ │ │ └─┬ readable-stream@2.1.2 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ └─┬ gauge@1.2.7 │ │ ├── has-unicode@2.0.0 │ │ ├─┬ lodash.pad@4.3.0 │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ └── lodash.tostring@4.1.2 │ │ ├─┬ lodash.padend@4.4.0 │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ └── lodash.tostring@4.1.2 │ │ └─┬ lodash.padstart@4.4.0 │ │ ├── lodash._baseslice@4.0.0 │ │ └── lodash.tostring@4.1.2 │ ├─┬ rc@1.1.6 │ │ ├── deep-extend@0.4.1 │ │ ├── ini@1.3.4 │ │ ├── minimist@1.2.0 │ │ └── strip-json-comments@1.0.4 │ ├─┬ request@2.72.0 │ │ ├── aws-sign2@0.6.0 │ │ ├── aws4@1.4.1 │ │ ├─┬ bl@1.1.2 │ │ │ └─┬ readable-stream@2.0.6 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ ├── 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 │ │ │ └── async@1.5.2 │ │ ├─┬ har-validator@2.0.6 │ │ │ ├─┬ 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 │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ └── supports-color@2.0.0 │ │ │ ├─┬ commander@2.9.0 │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ ├─┬ 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 │ │ │ │ └── xtend@4.0.1 │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ └── pinkie@2.0.4 │ │ ├─┬ hawk@3.1.3 │ │ │ ├── boom@2.10.1 │ │ │ ├── cryptiles@2.0.5 │ │ │ ├── hoek@2.16.3 │ │ │ └── sntp@1.0.9 │ │ ├─┬ http-signature@1.1.1 │ │ │ ├── assert-plus@0.2.0 │ │ │ ├─┬ jsprim@1.2.2 │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ ├── json-schema@0.2.2 │ │ │ │ └── verror@1.3.6 │ │ │ └─┬ sshpk@1.8.3 │ │ │ ├── asn1@0.2.3 │ │ │ ├── assert-plus@1.0.0 │ │ │ ├── dashdash@1.13.1 │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ ├── getpass@0.1.6 │ │ │ ├── jodid25519@1.0.2 │ │ │ ├── jsbn@0.1.0 │ │ │ └── tweetnacl@0.13.3 │ │ ├── is-typedarray@1.0.0 │ │ ├── isstream@0.1.2 │ │ ├── json-stringify-safe@5.0.1 │ │ ├─┬ mime-types@2.1.11 │ │ │ └── mime-db@1.23.0 │ │ ├── node-uuid@1.4.7 │ │ ├── oauth-sign@0.8.2 │ │ ├── qs@6.1.0 │ │ ├── stringstream@0.0.5 │ │ ├── tough-cookie@2.2.2 │ │ └── tunnel-agent@0.4.3 │ ├─┬ rimraf@2.5.2 │ │ └─┬ glob@7.0.3 │ │ ├─┬ inflight@1.0.4 │ │ │ └── wrappy@1.0.1 │ │ ├── inherits@2.0.1 │ │ ├─┬ minimatch@3.0.0 │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ ├── balanced-match@0.4.1 │ │ │ └── concat-map@0.0.1 │ │ ├─┬ once@1.3.3 │ │ │ └── wrappy@1.0.1 │ │ └── path-is-absolute@1.0.0 │ ├── semver@5.1.0 │ ├─┬ tar@2.2.1 │ │ ├── block-stream@0.0.9 │ │ ├─┬ fstream@1.0.8 │ │ │ └── graceful-fs@4.1.4 │ │ └── inherits@2.0.1 │ └─┬ tar-pack@3.1.3 │ ├─┬ debug@2.2.0 │ │ └── ms@0.7.1 │ ├─┬ fstream@1.0.8 │ │ ├── graceful-fs@4.1.4 │ │ └── inherits@2.0.1 │ ├─┬ fstream-ignore@1.0.4 │ │ ├── inherits@2.0.1 │ │ └─┬ minimatch@3.0.0 │ │ └─┬ brace-expansion@1.1.4 │ │ ├── balanced-match@0.4.1 │ │ └── concat-map@0.0.1 │ ├─┬ once@1.3.3 │ │ └── wrappy@1.0.1 │ ├─┬ readable-stream@2.0.6 │ │ ├── core-util-is@1.0.2 │ │ ├── inherits@2.0.1 │ │ ├── isarray@1.0.0 │ │ ├── process-nextick-args@1.0.7 │ │ ├── string_decoder@0.10.31 │ │ └── util-deprecate@1.0.2 │ └── uid-number@0.0.6 ├─┬ @google-cloud/storage@0.1.1 │ ├─┬ @google-cloud/common@0.1.1 │ │ ├── google-proto-files@0.2.4 │ │ └─┬ grpc@0.14.1 │ │ ├── lodash@3.10.1 │ │ └─┬ node-pre-gyp@0.6.28 │ │ ├─┬ mkdirp@0.5.1 │ │ │ └── minimist@0.0.8 │ │ ├─┬ nopt@3.0.6 │ │ │ └── abbrev@1.0.7 │ │ ├─┬ npmlog@2.0.3 │ │ │ ├── ansi@0.3.1 │ │ │ ├─┬ are-we-there-yet@1.1.2 │ │ │ │ ├── delegates@1.0.0 │ │ │ │ └─┬ readable-stream@2.1.2 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ └─┬ gauge@1.2.7 │ │ │ ├── has-unicode@2.0.0 │ │ │ ├─┬ lodash.pad@4.3.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ └── lodash.tostring@4.1.2 │ │ │ ├─┬ lodash.padend@4.4.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ └── lodash.tostring@4.1.2 │ │ │ └─┬ lodash.padstart@4.4.0 │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ └── lodash.tostring@4.1.2 │ │ ├─┬ rc@1.1.6 │ │ │ ├── deep-extend@0.4.1 │ │ │ ├── ini@1.3.4 │ │ │ ├── minimist@1.2.0 │ │ │ └── strip-json-comments@1.0.4 │ │ ├─┬ request@2.72.0 │ │ │ ├── aws-sign2@0.6.0 │ │ │ ├── aws4@1.4.1 │ │ │ ├─┬ bl@1.1.2 │ │ │ │ └─┬ readable-stream@2.0.6 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ ├── 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 │ │ │ │ └── async@1.5.2 │ │ │ ├─┬ har-validator@2.0.6 │ │ │ │ ├─┬ 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 │ │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ │ └── supports-color@2.0.0 │ │ │ │ ├─┬ commander@2.9.0 │ │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ │ ├─┬ 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 │ │ │ │ │ └── xtend@4.0.1 │ │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ │ └── pinkie@2.0.4 │ │ │ ├─┬ hawk@3.1.3 │ │ │ │ ├── boom@2.10.1 │ │ │ │ ├── cryptiles@2.0.5 │ │ │ │ ├── hoek@2.16.3 │ │ │ │ └── sntp@1.0.9 │ │ │ ├─┬ http-signature@1.1.1 │ │ │ │ ├── assert-plus@0.2.0 │ │ │ │ ├─┬ jsprim@1.2.2 │ │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ │ ├── json-schema@0.2.2 │ │ │ │ │ └── verror@1.3.6 │ │ │ │ └─┬ sshpk@1.8.3 │ │ │ │ ├── asn1@0.2.3 │ │ │ │ ├── assert-plus@1.0.0 │ │ │ │ ├── dashdash@1.13.1 │ │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ │ ├── getpass@0.1.6 │ │ │ │ ├── jodid25519@1.0.2 │ │ │ │ ├── jsbn@0.1.0 │ │ │ │ └── tweetnacl@0.13.3 │ │ │ ├── is-typedarray@1.0.0 │ │ │ ├── isstream@0.1.2 │ │ │ ├── json-stringify-safe@5.0.1 │ │ │ ├─┬ mime-types@2.1.11 │ │ │ │ └── mime-db@1.23.0 │ │ │ ├── node-uuid@1.4.7 │ │ │ ├── oauth-sign@0.8.2 │ │ │ ├── qs@6.1.0 │ │ │ ├── stringstream@0.0.5 │ │ │ ├── tough-cookie@2.2.2 │ │ │ └── tunnel-agent@0.4.3 │ │ ├─┬ rimraf@2.5.2 │ │ │ └─┬ glob@7.0.3 │ │ │ ├─┬ inflight@1.0.4 │ │ │ │ └── wrappy@1.0.1 │ │ │ ├── inherits@2.0.1 │ │ │ ├─┬ minimatch@3.0.0 │ │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ │ ├── balanced-match@0.4.1 │ │ │ │ └── concat-map@0.0.1 │ │ │ ├─┬ once@1.3.3 │ │ │ │ └── wrappy@1.0.1 │ │ │ └── path-is-absolute@1.0.0 │ │ ├── semver@5.1.0 │ │ ├─┬ tar@2.2.1 │ │ │ ├── block-stream@0.0.9 │ │ │ ├─┬ fstream@1.0.8 │ │ │ │ └── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ └─┬ tar-pack@3.1.3 │ │ ├─┬ debug@2.2.0 │ │ │ └── ms@0.7.1 │ │ ├─┬ fstream@1.0.8 │ │ │ ├── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ ├─┬ fstream-ignore@1.0.4 │ │ │ ├── inherits@2.0.1 │ │ │ └─┬ minimatch@3.0.0 │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ ├── balanced-match@0.4.1 │ │ │ └── concat-map@0.0.1 │ │ ├─┬ once@1.3.3 │ │ │ └── wrappy@1.0.1 │ │ ├─┬ readable-stream@2.0.6 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ └── uid-number@0.0.6 │ ├─┬ gcs-resumable-upload@0.7.4 │ │ ├── buffer-equal@0.0.1 │ │ └─┬ configstore@1.4.0 │ │ ├── graceful-fs@4.1.6 │ │ ├─┬ mkdirp@0.5.1 │ │ │ └── minimist@0.0.8 │ │ ├── object-assign@4.1.0 │ │ ├── os-tmpdir@1.0.1 │ │ ├─┬ osenv@0.1.3 │ │ │ └── os-homedir@1.0.1 │ │ ├── uuid@2.0.3 │ │ ├─┬ write-file-atomic@1.2.0 │ │ │ ├── imurmurhash@0.1.4 │ │ │ └── slide@1.1.6 │ │ └── xdg-basedir@2.0.0 │ ├── hash-stream-validation@0.2.1 │ ├─┬ mime-types@2.1.12 │ │ └── mime-db@1.24.0 │ └─┬ once@1.3.3 │ └── wrappy@1.0.2 ├─┬ @google-cloud/translate@0.2.0 │ └─┬ @google-cloud/common@0.2.0 │ └─┬ grpc@0.14.1 │ ├── lodash@3.10.1 │ └─┬ node-pre-gyp@0.6.28 │ ├─┬ mkdirp@0.5.1 │ │ └── minimist@0.0.8 │ ├─┬ nopt@3.0.6 │ │ └── abbrev@1.0.7 │ ├─┬ npmlog@2.0.3 │ │ ├── ansi@0.3.1 │ │ ├─┬ are-we-there-yet@1.1.2 │ │ │ ├── delegates@1.0.0 │ │ │ └─┬ readable-stream@2.1.2 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ └─┬ gauge@1.2.7 │ │ ├── has-unicode@2.0.0 │ │ ├─┬ lodash.pad@4.3.0 │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ └── lodash.tostring@4.1.2 │ │ ├─┬ lodash.padend@4.4.0 │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ └── lodash.tostring@4.1.2 │ │ └─┬ lodash.padstart@4.4.0 │ │ ├── lodash._baseslice@4.0.0 │ │ └── lodash.tostring@4.1.2 │ ├─┬ rc@1.1.6 │ │ ├── deep-extend@0.4.1 │ │ ├── ini@1.3.4 │ │ ├── minimist@1.2.0 │ │ └── strip-json-comments@1.0.4 │ ├─┬ request@2.72.0 │ │ ├── aws-sign2@0.6.0 │ │ ├── aws4@1.4.1 │ │ ├─┬ bl@1.1.2 │ │ │ └─┬ readable-stream@2.0.6 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ ├── 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 │ │ │ └── async@1.5.2 │ │ ├─┬ har-validator@2.0.6 │ │ │ ├─┬ 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 │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ └── supports-color@2.0.0 │ │ │ ├─┬ commander@2.9.0 │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ ├─┬ 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 │ │ │ │ └── xtend@4.0.1 │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ └── pinkie@2.0.4 │ │ ├─┬ hawk@3.1.3 │ │ │ ├── boom@2.10.1 │ │ │ ├── cryptiles@2.0.5 │ │ │ ├── hoek@2.16.3 │ │ │ └── sntp@1.0.9 │ │ ├─┬ http-signature@1.1.1 │ │ │ ├── assert-plus@0.2.0 │ │ │ ├─┬ jsprim@1.2.2 │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ ├── json-schema@0.2.2 │ │ │ │ └── verror@1.3.6 │ │ │ └─┬ sshpk@1.8.3 │ │ │ ├── asn1@0.2.3 │ │ │ ├── assert-plus@1.0.0 │ │ │ ├── dashdash@1.13.1 │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ ├── getpass@0.1.6 │ │ │ ├── jodid25519@1.0.2 │ │ │ ├── jsbn@0.1.0 │ │ │ └── tweetnacl@0.13.3 │ │ ├── is-typedarray@1.0.0 │ │ ├── isstream@0.1.2 │ │ ├── json-stringify-safe@5.0.1 │ │ ├─┬ mime-types@2.1.11 │ │ │ └── mime-db@1.23.0 │ │ ├── node-uuid@1.4.7 │ │ ├── oauth-sign@0.8.2 │ │ ├── qs@6.1.0 │ │ ├── stringstream@0.0.5 │ │ ├── tough-cookie@2.2.2 │ │ └── tunnel-agent@0.4.3 │ ├─┬ rimraf@2.5.2 │ │ └─┬ glob@7.0.3 │ │ ├─┬ inflight@1.0.4 │ │ │ └── wrappy@1.0.1 │ │ ├── inherits@2.0.1 │ │ ├─┬ minimatch@3.0.0 │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ ├── balanced-match@0.4.1 │ │ │ └── concat-map@0.0.1 │ │ ├─┬ once@1.3.3 │ │ │ └── wrappy@1.0.1 │ │ └── path-is-absolute@1.0.0 │ ├── semver@5.1.0 │ ├─┬ tar@2.2.1 │ │ ├── block-stream@0.0.9 │ │ ├─┬ fstream@1.0.8 │ │ │ └── graceful-fs@4.1.4 │ │ └── inherits@2.0.1 │ └─┬ tar-pack@3.1.3 │ ├─┬ debug@2.2.0 │ │ └── ms@0.7.1 │ ├─┬ fstream@1.0.8 │ │ ├── graceful-fs@4.1.4 │ │ └── inherits@2.0.1 │ ├─┬ fstream-ignore@1.0.4 │ │ ├── inherits@2.0.1 │ │ └─┬ minimatch@3.0.0 │ │ └─┬ brace-expansion@1.1.4 │ │ ├── balanced-match@0.4.1 │ │ └── concat-map@0.0.1 │ ├─┬ once@1.3.3 │ │ └── wrappy@1.0.1 │ ├─┬ readable-stream@2.0.6 │ │ ├── core-util-is@1.0.2 │ │ ├── inherits@2.0.1 │ │ ├── isarray@1.0.0 │ │ ├── process-nextick-args@1.0.7 │ │ ├── string_decoder@0.10.31 │ │ └── util-deprecate@1.0.2 │ └── uid-number@0.0.6 ├─┬ @google-cloud/vision@0.2.0 │ ├─┬ @google-cloud/common@0.3.0 │ │ └─┬ grpc@0.14.1 │ │ ├── lodash@3.10.1 │ │ └─┬ node-pre-gyp@0.6.28 │ │ ├─┬ mkdirp@0.5.1 │ │ │ └── minimist@0.0.8 │ │ ├─┬ nopt@3.0.6 │ │ │ └── abbrev@1.0.7 │ │ ├─┬ npmlog@2.0.3 │ │ │ ├── ansi@0.3.1 │ │ │ ├─┬ are-we-there-yet@1.1.2 │ │ │ │ ├── delegates@1.0.0 │ │ │ │ └─┬ readable-stream@2.1.2 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ └─┬ gauge@1.2.7 │ │ │ ├── has-unicode@2.0.0 │ │ │ ├─┬ lodash.pad@4.3.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ └── lodash.tostring@4.1.2 │ │ │ ├─┬ lodash.padend@4.4.0 │ │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ │ └── lodash.tostring@4.1.2 │ │ │ └─┬ lodash.padstart@4.4.0 │ │ │ ├── lodash._baseslice@4.0.0 │ │ │ └── lodash.tostring@4.1.2 │ │ ├─┬ rc@1.1.6 │ │ │ ├── deep-extend@0.4.1 │ │ │ ├── ini@1.3.4 │ │ │ ├── minimist@1.2.0 │ │ │ └── strip-json-comments@1.0.4 │ │ ├─┬ request@2.72.0 │ │ │ ├── aws-sign2@0.6.0 │ │ │ ├── aws4@1.4.1 │ │ │ ├─┬ bl@1.1.2 │ │ │ │ └─┬ readable-stream@2.0.6 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ ├── 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 │ │ │ │ └── async@1.5.2 │ │ │ ├─┬ har-validator@2.0.6 │ │ │ │ ├─┬ 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 │ │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ │ └── supports-color@2.0.0 │ │ │ │ ├─┬ commander@2.9.0 │ │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ │ ├─┬ 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 │ │ │ │ │ └── xtend@4.0.1 │ │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ │ └── pinkie@2.0.4 │ │ │ ├─┬ hawk@3.1.3 │ │ │ │ ├── boom@2.10.1 │ │ │ │ ├── cryptiles@2.0.5 │ │ │ │ ├── hoek@2.16.3 │ │ │ │ └── sntp@1.0.9 │ │ │ ├─┬ http-signature@1.1.1 │ │ │ │ ├── assert-plus@0.2.0 │ │ │ │ ├─┬ jsprim@1.2.2 │ │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ │ ├── json-schema@0.2.2 │ │ │ │ │ └── verror@1.3.6 │ │ │ │ └─┬ sshpk@1.8.3 │ │ │ │ ├── asn1@0.2.3 │ │ │ │ ├── assert-plus@1.0.0 │ │ │ │ ├── dashdash@1.13.1 │ │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ │ ├── getpass@0.1.6 │ │ │ │ ├── jodid25519@1.0.2 │ │ │ │ ├── jsbn@0.1.0 │ │ │ │ └── tweetnacl@0.13.3 │ │ │ ├── is-typedarray@1.0.0 │ │ │ ├── isstream@0.1.2 │ │ │ ├── json-stringify-safe@5.0.1 │ │ │ ├─┬ mime-types@2.1.11 │ │ │ │ └── mime-db@1.23.0 │ │ │ ├── node-uuid@1.4.7 │ │ │ ├── oauth-sign@0.8.2 │ │ │ ├── qs@6.1.0 │ │ │ ├── stringstream@0.0.5 │ │ │ ├── tough-cookie@2.2.2 │ │ │ └── tunnel-agent@0.4.3 │ │ ├─┬ rimraf@2.5.2 │ │ │ └─┬ glob@7.0.3 │ │ │ ├─┬ inflight@1.0.4 │ │ │ │ └── wrappy@1.0.1 │ │ │ ├── inherits@2.0.1 │ │ │ ├─┬ minimatch@3.0.0 │ │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ │ ├── balanced-match@0.4.1 │ │ │ │ └── concat-map@0.0.1 │ │ │ ├─┬ once@1.3.3 │ │ │ │ └── wrappy@1.0.1 │ │ │ └── path-is-absolute@1.0.0 │ │ ├── semver@5.1.0 │ │ ├─┬ tar@2.2.1 │ │ │ ├── block-stream@0.0.9 │ │ │ ├─┬ fstream@1.0.8 │ │ │ │ └── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ └─┬ tar-pack@3.1.3 │ │ ├─┬ debug@2.2.0 │ │ │ └── ms@0.7.1 │ │ ├─┬ fstream@1.0.8 │ │ │ ├── graceful-fs@4.1.4 │ │ │ └── inherits@2.0.1 │ │ ├─┬ fstream-ignore@1.0.4 │ │ │ ├── inherits@2.0.1 │ │ │ └─┬ minimatch@3.0.0 │ │ │ └─┬ brace-expansion@1.1.4 │ │ │ ├── balanced-match@0.4.1 │ │ │ └── concat-map@0.0.1 │ │ ├─┬ once@1.3.3 │ │ │ └── wrappy@1.0.1 │ │ ├─┬ readable-stream@2.0.6 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ └── uid-number@0.0.6 │ ├─┬ request@2.75.0 │ │ ├── aws-sign2@0.6.0 │ │ ├── aws4@1.4.1 │ │ ├── bl@1.1.2 │ │ ├── caseless@0.11.0 │ │ ├─┬ combined-stream@1.0.5 │ │ │ └── delayed-stream@1.0.0 │ │ ├── forever-agent@0.6.1 │ │ ├─┬ form-data@2.0.0 │ │ │ └── asynckit@0.4.0 │ │ ├─┬ har-validator@2.0.6 │ │ │ ├─┬ 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 │ │ │ ├─┬ commander@2.9.0 │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ ├─┬ is-my-json-valid@2.14.0 │ │ │ │ ├── generate-function@2.0.0 │ │ │ │ ├─┬ generate-object-property@1.2.0 │ │ │ │ │ └── is-property@1.0.2 │ │ │ │ └── jsonpointer@2.0.0 │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ └── pinkie@2.0.4 │ │ ├─┬ hawk@3.1.3 │ │ │ ├── boom@2.10.1 │ │ │ ├── cryptiles@2.0.5 │ │ │ ├── hoek@2.16.3 │ │ │ └── sntp@1.0.9 │ │ ├─┬ http-signature@1.1.1 │ │ │ ├── assert-plus@0.2.0 │ │ │ ├─┬ jsprim@1.3.1 │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ ├── json-schema@0.2.3 │ │ │ │ └── verror@1.3.6 │ │ │ └─┬ sshpk@1.10.0 │ │ │ ├── asn1@0.2.3 │ │ │ ├── assert-plus@1.0.0 │ │ │ ├─┬ bcrypt-pbkdf@1.0.0 │ │ │ │ └── tweetnacl@0.14.3 │ │ │ ├─┬ dashdash@1.14.0 │ │ │ │ └── assert-plus@1.0.0 │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ ├─┬ getpass@0.1.6 │ │ │ │ └── assert-plus@1.0.0 │ │ │ ├── jodid25519@1.0.2 │ │ │ ├── jsbn@0.1.0 │ │ │ └── tweetnacl@0.13.3 │ │ ├── is-typedarray@1.0.0 │ │ ├── isstream@0.1.2 │ │ ├── json-stringify-safe@5.0.1 │ │ ├── node-uuid@1.4.7 │ │ ├── oauth-sign@0.8.2 │ │ ├── qs@6.2.1 │ │ ├── stringstream@0.0.5 │ │ ├── tough-cookie@2.3.1 │ │ └── tunnel-agent@0.4.3 │ └── rgb-hex@1.0.0 └── extend@3.0.0 real 1m23.225s user 0m58.561s sys 0m26.681s ```
stephenplusplus commented 8 years ago

Was this installation done on npm@2 or 3?

Definitely a known issue, and will be fixed as best we can: https://github.com/GoogleCloudPlatform/google-cloud-node/issues/1590#issuecomment-249573895

Related: #1535, #1590, #1605

JustinBeckwith commented 8 years ago

This was node 6.6.0 and npm 3.10.3

stephenplusplus commented 8 years ago

We should see improvements for npm@3 users during installation after we synchronize the version of @google-cloud/common each sub-module depends on. It's @google-cloud/common's dependency on grpc that requires a large installation/compilation time.

We expect to sync those versions and release today, and hopefully, we'll see a big drop.

For npm@2 users, they'll likely see the same installation speeds, but will have faster start-up times and lower disk space usage if they manually run npm dedupe after installing. @JustinBeckwith had the idea of running npm dedupe from google-cloud's postinstall script-- any thoughts on that? // @callmehiphop @sindresorhus @passy

stephenplusplus commented 8 years ago

Also just stumbled upon:

The new Node.js v6 branch will become the new Active Long Term Support stream in October...

We're almost there, which will mean node@6 and npm@3 is the LTS branch. GAE can upgrade at that point / Docker images, etc, which should help with this issue.

ofrobots commented 8 years ago

Node.js v4.x LTS is going to be supported until 2018-04-01, and a significant number of users are expected to continue using v4.x even after v6.x goes into Active LTS. I think this issue needs to be addressed regardless.

stephenplusplus commented 8 years ago

Agreed. Just noting we can expect less users to experience this once node@6 goes LTS. Will the GAE Flexible Environment VM update its Node image in October to v6?

stephenplusplus commented 8 years ago

Looks like there is a bit of a precedent for npm dedupe-ing from the postinstall script: https://github.com/search?q=%22postinstall%22%3A+%22npm+dedupe%22&type=Code&utf8=%E2%9C%93

I'm okay with this plan if the others are.

stephenplusplus commented 8 years ago

After publishing v0.41.0 with flattened gRPC dependencies:

npm cache clean time npm install --save google-cloud 24.23s user 8.09s system 50% cpu 1:04.41 total

Not an amazing improvement, but it's ~20 seconds quicker here. I've tested a bit more since this post and have seen it around ~47 seconds total.

The next step for improvement will be upgrading google-gax's grpc dependency to 1.0.0 to match ours, allowing for npm to flatten our tree further. (Issue opened here, PR to follow)

stephenplusplus commented 8 years ago

Seeing better results now with google-cloud@0.41.2 which uses npm shrinkwrap to force the deduplication for users on npm < 3.

$ time npm install --save google-cloud
34.22s user 14.73s system 131% cpu 37.264 total