From f32d3f7914972d8b2560c34782354890c5d77f76 Mon Sep 17 00:00:00 2001 From: Fabio Silva Date: Mon, 7 May 2018 23:50:09 -0300 Subject: [PATCH] test: add new test cases for pluginloader and tracing classes --- .gitignore | 1 + packages/opencensus-nodejs/AUTHORS | 9 +- packages/opencensus-nodejs/README.md | 105 +- packages/opencensus-nodejs/package-lock.json | 1077 +++++++++++++---- packages/opencensus-nodejs/package.json | 17 +- .../config/{config.ts => default-config.ts} | 14 +- .../opencensus-nodejs/src/trace/constants.ts | 14 +- .../src/trace/instrumentation/ext-types.d.ts | 3 +- .../{pluging-loader.ts => plugin-loader.ts} | 70 +- .../opencensus-nodejs/src/trace/tracing.ts | 71 +- .../index.ts | 17 + .../package.json | 4 + .../simple-module.ts | 45 + .../enduser-simple-module-pluging.ts | 45 + .../enduser-simple-module-pluging/index.ts | 17 + .../package.json | 4 + .../node_modules/simple-module/index.ts | 4 + .../node_modules/simple-module/package.json | 4 + .../test/test-plugin-loader.ts | 130 ++ .../test/test-pluging-loader.ts | 74 -- .../opencensus-nodejs/test/test-tracing.ts | 130 +- packages/opencensus-nodejs/tsconfig.json | 10 +- 22 files changed, 1340 insertions(+), 525 deletions(-) rename packages/opencensus-nodejs/src/trace/config/{config.ts => default-config.ts} (66%) rename packages/opencensus-nodejs/src/trace/instrumentation/{pluging-loader.ts => plugin-loader.ts} (61%) create mode 100644 packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/index.ts create mode 100644 packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/package.json create mode 100644 packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/simple-module.ts create mode 100644 packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/enduser-simple-module-pluging.ts create mode 100644 packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/index.ts create mode 100644 packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/package.json create mode 100644 packages/opencensus-nodejs/test/instrumentation/node_modules/simple-module/index.ts create mode 100644 packages/opencensus-nodejs/test/instrumentation/node_modules/simple-module/package.json create mode 100644 packages/opencensus-nodejs/test/test-plugin-loader.ts delete mode 100644 packages/opencensus-nodejs/test/test-pluging-loader.ts diff --git a/.gitignore b/.gitignore index 558cddceb..4b0b30ed3 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ TAGS # nodejs node_modules/ +!packages/opencensus-nodejs/test/instrumentation/node_modules npm-debug.log .nyc_output/ build/ diff --git a/packages/opencensus-nodejs/AUTHORS b/packages/opencensus-nodejs/AUTHORS index e068e731e..2d2848bd2 100644 --- a/packages/opencensus-nodejs/AUTHORS +++ b/packages/opencensus-nodejs/AUTHORS @@ -1 +1,8 @@ -Google Inc. \ No newline at end of file +# This is the list of OpenCensus authors for copyright purposes. +# +# This does not necessarily list everyone who has contributed code, since in +# some cases, their employer may be the copyright holder. To see the full list +# of contributors, see the revision history in source control. + +Google LLC +CESAR Team (www.cesar.org.br) \ No newline at end of file diff --git a/packages/opencensus-nodejs/README.md b/packages/opencensus-nodejs/README.md index 5d3e50ce7..1983dec59 100644 --- a/packages/opencensus-nodejs/README.md +++ b/packages/opencensus-nodejs/README.md @@ -1,109 +1,16 @@ -# OpenCensus Libraries for Node.js +# OpenCensus Core Node.js [![Gitter chat][gitter-image]][gitter-url] -OpenCensus Node.js is an implementation of OpenCensus, a toolkit for collecting application performance and behavior monitoring data. Right now OpenCensus for Node.js supports custom tracing and automatic tracing for http and mongodb. +OpenCensus for Node.js is an implementation of OpenCensus, a toolkit for collecting application performance and behavior monitoring data. The library is in alpha stage and the API is subject to change. Please join [gitter](https://gitter.im/census-instrumentation/Lobby) for help or feedback on this project. -Note: This code was tested on the following Node versions: -- v6.10.0 (for console exporter only) -- v9.8.0 (for Stackdriver and Zipkin exporters) - -___ - -## OpenCensus Setup - -1. Clone the OpenCensus Node repository < https://github.com/census-instrumentation/opencensus-node.git> -```bash -git clone https://github.com/census-instrumentation/opencensus-node.git -``` - -**TODO Ver com Fábio se o usuário terá que compilar** - -2. Switch to branch `dev` with: -```bash -git checkout dev -``` - -3. Navigate to the OpenCensus Node project folder and install the dependencies with: -```bash -cd opencensus-node -npm install -``` - -4. Compile the TypeScript code into JavaScript with: -``` -node_modules/.bin/tsc -``` - -___ - -## Instrumenting an Application - -Navigate to your application folder. Inside it's `node_modules` folder, create a directory named `@opencensus`: -``` -cd node_modules -mkdir @opencensus -``` - -Navigate to your new `@opencensus` folder and create a symlink to OpenCensus Node package with: -```bash -cd @opencensus -ln -s /packages/opencensus-nodejs/ opencensus-nodejs -``` - -### Using Stackdriver Exporter - -To use Stackdriver as your exporter, make sure you have enabled [Stackdriver Tracing](https://cloud.google.com/trace/docs/quickstart) on Google Cloud Platform. Enable your [Application Default Credentials](https://cloud.google.com/docs/authentication/getting-started) for authentication with: -```bash -export GOOGLE_APPLICATION_CREDENTIALS=path/to/your/credential.json -``` - -Add the OpenCensus Stackdriver Exporter package to your project's `node_modules/@opencensus` folder with: -``` -cd node_modules/@opencensus -ln -s /packages/opencensus-exporter-stackdriver/ opencensus-exporter-stackdriver -``` - -Finally, on top of your application, add the following lines of code: -```javascript -var tracing = require('@opencensus/opencensus-nodejs'); -var stackdriver = require('@opencensus/opencensus-exporter-stackdriver'); - -// Add your project id to the Stackdriver options -var options = new stackdriver.StackdriverOptions('your-project-id'); -var exporter = new stackdriver.Stackdriver(options); - -tracing.registerExporter(exporter).start(); -``` - -### Using Zipkin Exporter - -To use Zipkin as your exporter, first, download from any of the three available options on [Quickstart](https://zipkin.io/pages/quickstart.html): through Docker, on Java or manually compiling the source code. Tests were executed running Zipkin with Java, through the following commands on terminal: -```bash -wget -O zipkin.jar 'https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec' -java -jar zipkin.jar -``` - -Add the OpenCensus Zipkin Exporter package to your project's `node_modules/@opencensus` folder with: -``` -cd node_modules/@opencensus -ln -s /packages/opencensus-exporter-zipkin/ opencensus-exporter-zipkin -``` - -Finally, on top of your application, add the following lines of code: -```javascript -var tracing = require('@opencensus/opencensus-nodejs'); -var zipkin = require('@opencensus/opencensus-exporter-zipkin'); - -// Add your zipkin url and application name to the Zipkin options -var options = new zipkin.ZipkinOptions("your-zipkin-url", "your-application-name") -var exporter = new zipkin.Zipkin(options); - -tracing.registerExporter(exporter).start(); -``` +## Useful links +- For more information on OpenCensus, visit: +- To checkout the OpenCensus for Node.js, visit: +- For help or feedback on this project, join us on [gitter](https://gitter.im/census-instrumentation/Lobby) [gitter-image]: https://badges.gitter.im/census-instrumentation/lobby.svg [gitter-url]: https://gitter.im/census-instrumentation/lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge diff --git a/packages/opencensus-nodejs/package-lock.json b/packages/opencensus-nodejs/package-lock.json index 9f5b99842..07488fdca 100644 --- a/packages/opencensus-nodejs/package-lock.json +++ b/packages/opencensus-nodejs/package-lock.json @@ -1,36 +1,50 @@ { - "requires": true, + "name": "@opencensus/opencensus-nodejs", + "version": "0.0.1", "lockfileVersion": 1, + "requires": true, "dependencies": { "@types/extend": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.0.tgz", - "integrity": "sha512-Eo8NQCbgjlMPQarlFAE3vpyCvFda4dg1Ob5ZJb6BJI9x4NAZVWowyMNB8GJJDgDI4lr2oqiQvXlPB0Fn1NoXnQ==" + "integrity": "sha512-Eo8NQCbgjlMPQarlFAE3vpyCvFda4dg1Ob5ZJb6BJI9x4NAZVWowyMNB8GJJDgDI4lr2oqiQvXlPB0Fn1NoXnQ==", + "dev": true }, "@types/mocha": { "version": "2.2.48", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz", - "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==" + "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==", + "dev": true }, "@types/node": { "version": "9.4.7", "resolved": "https://registry.npmjs.org/@types/node/-/node-9.4.7.tgz", - "integrity": "sha512-4Ba90mWNx8ddbafuyGGwjkZMigi+AWfYLSDCpovwsE63ia8w93r3oJ8PIAQc3y8U+XHcnMOHPIzNe3o438Ywcw==" + "integrity": "sha512-4Ba90mWNx8ddbafuyGGwjkZMigi+AWfYLSDCpovwsE63ia8w93r3oJ8PIAQc3y8U+XHcnMOHPIzNe3o438Ywcw==", + "dev": true + }, + "@types/shimmer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.1.tgz", + "integrity": "sha512-I9ouuzrWLcjM1wre7f0i780W3KHk5PxFAC5KOpvpOGNaTsaKLN8p7sqRh9THwV9cpdOA/YJC+yMhG1jonQFdRQ==", + "dev": true }, "@types/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=" + "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "dev": true }, "@types/strip-json-comments": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", - "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==" + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, "requires": { "string-width": "2.1.1" }, @@ -38,17 +52,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" @@ -58,6 +75,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "3.0.0" } @@ -67,17 +85,20 @@ "ansi-escapes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "1.9.1" } @@ -86,6 +107,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "1.0.3" } @@ -93,17 +115,20 @@ "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "1.1.3", "esutils": "2.0.2", @@ -113,12 +138,14 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -130,19 +157,22 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", @@ -156,22 +186,26 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" @@ -181,6 +215,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "3.0.0" } @@ -191,6 +226,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -199,17 +235,20 @@ "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase-keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, "requires": { "camelcase": "4.1.0", "map-obj": "2.0.0", @@ -219,19 +258,22 @@ "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true } } }, "capture-stack-trace": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true }, "chalk": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", @@ -241,12 +283,14 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "supports-color": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, "requires": { "has-flag": "3.0.0" } @@ -256,12 +300,14 @@ "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true }, "clang-format": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.2.2.tgz", "integrity": "sha512-6X9u1JBMak/9VbC0IZajEDvp19/PbjCanbRO3Z2xsluypQtbPPAGDvGGovLOWoUpXIvJH9vJExmzlqWvwItZxA==", + "dev": true, "requires": { "async": "1.5.2", "glob": "7.1.2", @@ -271,19 +317,22 @@ "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true } } }, "cli-boxes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, "requires": { "restore-cursor": "2.0.0" } @@ -291,12 +340,14 @@ "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -304,22 +355,26 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "configstore": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "dev": true, "requires": { "dot-prop": "4.2.0", "graceful-fs": "4.1.11", @@ -333,6 +388,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, "requires": { "is-obj": "1.0.1" } @@ -343,6 +399,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, "requires": { "capture-stack-trace": "1.0.0" } @@ -351,6 +408,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, "requires": { "lru-cache": "4.1.2", "shebang-command": "1.2.0", @@ -360,12 +418,14 @@ "crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, "requires": { "array-find-index": "1.0.2" } @@ -374,6 +434,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -381,12 +442,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decamelize-keys": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, "requires": { "decamelize": "1.2.0", "map-obj": "1.0.1" @@ -395,29 +458,34 @@ "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true } } }, "deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, "requires": { "is-arrayish": "0.2.1" } @@ -425,22 +493,26 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, "requires": { "cross-spawn": "5.1.0", "get-stream": "3.0.0", @@ -460,6 +532,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, "requires": { "chardet": "0.4.2", "iconv-lite": "0.4.19", @@ -470,6 +543,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, "requires": { "escape-string-regexp": "1.0.5" } @@ -478,6 +552,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, "requires": { "locate-path": "2.0.0" } @@ -485,17 +560,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -509,6 +587,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, "requires": { "ini": "1.3.5" } @@ -516,17 +595,20 @@ "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true }, "growl": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", - "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==" + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "dev": true }, "gts": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/gts/-/gts-0.5.4.tgz", "integrity": "sha512-bDxE/NvHu+v0uW0qbUMYClrGCi81Ug4Wa7BsV/yUtdEh67C3K56BiqAk8yBOttLH1k4XYks+7QSJy7XOf3vaQw==", + "dev": true, "requires": { "chalk": "2.3.2", "clang-format": "1.2.2", @@ -543,6 +625,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -550,17 +633,20 @@ "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true }, "homedir-polyfill": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, "requires": { "parse-passwd": "1.0.0" } @@ -568,32 +654,38 @@ "hosted-git-info": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==" + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true }, "indent-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -602,17 +694,20 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true }, "inquirer": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, "requires": { "ansi-escapes": "3.0.0", "chalk": "2.3.2", @@ -633,17 +728,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" @@ -653,6 +751,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "3.0.0" } @@ -662,12 +761,14 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, "is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, "requires": { "builtin-modules": "1.1.1" } @@ -676,6 +777,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, "requires": { "global-dirs": "0.1.1", "is-path-inside": "1.0.1" @@ -684,17 +786,20 @@ "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true }, "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, "requires": { "path-is-inside": "1.0.2" } @@ -702,42 +807,50 @@ "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true }, "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true }, "is-retry-allowed": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "dev": true, "requires": { "argparse": "1.0.10", "esprima": "4.0.0" @@ -746,12 +859,14 @@ "json-parse-better-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", - "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==" + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true }, "latest-version": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, "requires": { "package-json": "4.0.1" } @@ -760,6 +875,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, "requires": { "graceful-fs": "4.1.11", "parse-json": "4.0.0", @@ -771,6 +887,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, "requires": { "error-ex": "1.3.1", "json-parse-better-errors": "1.0.1" @@ -782,6 +899,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, "requires": { "p-locate": "2.0.0", "path-exists": "3.0.0" @@ -790,12 +908,14 @@ "lodash": { "version": "4.17.5", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, "requires": { "currently-unhandled": "0.4.1", "signal-exit": "3.0.2" @@ -804,12 +924,14 @@ "lowercase-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true }, "lru-cache": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "dev": true, "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" @@ -819,6 +941,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "dev": true, "requires": { "pify": "3.0.0" } @@ -826,17 +949,20 @@ "make-error": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", - "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==" + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "dev": true }, "map-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true }, "meow": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.0.tgz", "integrity": "sha512-Me/kel335m6vMKmEmA6c87Z6DUFW3JqkINRnxkbC+A/PUm0D5Fl2dEBQrPKnqCL9Te/CIa1MUt/0InMJhuC/sw==", + "dev": true, "requires": { "camelcase-keys": "4.2.0", "decamelize-keys": "1.1.0", @@ -852,19 +978,22 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true } } }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "1.1.11" } @@ -872,12 +1001,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "minimist-options": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, "requires": { "arrify": "1.0.1", "is-plain-obj": "1.1.0" @@ -887,6 +1018,7 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -895,6 +1027,7 @@ "version": "5.0.4", "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.4.tgz", "integrity": "sha512-nMOpAPFosU1B4Ix1jdhx5e3q7XO55ic5a8cgYvW27CequcEY+BabS0kUVL1Cw1V5PuVHZWeNRWFLmEPexo79VA==", + "dev": true, "requires": { "browser-stdout": "1.3.1", "commander": "2.11.0", @@ -916,22 +1049,26 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true }, "ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, "requires": { "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", @@ -943,6 +1080,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "2.0.1" } @@ -951,6 +1089,7 @@ "version": "11.6.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.6.0.tgz", "integrity": "sha512-ZaXCh0wmbk2aSBH2B5hZGGvK2s9aM8DIm2rVY+BG3Fx8tUS+bpJSswUVZqOD1YfCmnYRFSqgYJSr7UeeUcW0jg==", + "dev": true, "requires": { "archy": "1.0.0", "arrify": "1.0.1", @@ -984,6 +1123,7 @@ "align-text": { "version": "0.1.4", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2", "longest": "1.0.1", @@ -992,65 +1132,79 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true + "bundled": true, + "dev": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "dev": true }, "ansi-styles": { "version": "2.2.1", - "bundled": true + "bundled": true, + "dev": true }, "append-transform": { "version": "0.4.0", "bundled": true, + "dev": true, "requires": { "default-require-extensions": "1.0.0" } }, "archy": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "arr-diff": { "version": "2.0.0", "bundled": true, + "dev": true, "requires": { "arr-flatten": "1.1.0" } }, "arr-flatten": { "version": "1.1.0", - "bundled": true + "bundled": true, + "dev": true }, "arr-union": { "version": "3.1.0", - "bundled": true + "bundled": true, + "dev": true }, "array-unique": { "version": "0.2.1", - "bundled": true + "bundled": true, + "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true + "bundled": true, + "dev": true }, "assign-symbols": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "async": { "version": "1.5.2", - "bundled": true + "bundled": true, + "dev": true }, "atob": { "version": "2.0.3", - "bundled": true + "bundled": true, + "dev": true }, "babel-code-frame": { "version": "6.26.0", "bundled": true, + "dev": true, "requires": { "chalk": "1.1.3", "esutils": "2.0.2", @@ -1060,6 +1214,7 @@ "babel-generator": { "version": "6.26.1", "bundled": true, + "dev": true, "requires": { "babel-messages": "6.23.0", "babel-runtime": "6.26.0", @@ -1074,6 +1229,7 @@ "babel-messages": { "version": "6.23.0", "bundled": true, + "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -1081,6 +1237,7 @@ "babel-runtime": { "version": "6.26.0", "bundled": true, + "dev": true, "requires": { "core-js": "2.5.3", "regenerator-runtime": "0.11.1" @@ -1089,6 +1246,7 @@ "babel-template": { "version": "6.26.0", "bundled": true, + "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-traverse": "6.26.0", @@ -1100,6 +1258,7 @@ "babel-traverse": { "version": "6.26.0", "bundled": true, + "dev": true, "requires": { "babel-code-frame": "6.26.0", "babel-messages": "6.23.0", @@ -1115,6 +1274,7 @@ "babel-types": { "version": "6.26.0", "bundled": true, + "dev": true, "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", @@ -1124,15 +1284,18 @@ }, "babylon": { "version": "6.18.0", - "bundled": true + "bundled": true, + "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "base": { "version": "0.11.2", "bundled": true, + "dev": true, "requires": { "cache-base": "1.0.1", "class-utils": "0.3.6", @@ -1146,19 +1309,22 @@ "define-property": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "is-descriptor": "1.0.2" } }, "isobject": { "version": "3.0.1", - "bundled": true + "bundled": true, + "dev": true } } }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -1167,6 +1333,7 @@ "braces": { "version": "1.8.5", "bundled": true, + "dev": true, "requires": { "expand-range": "1.8.2", "preserve": "0.2.0", @@ -1175,11 +1342,13 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true + "bundled": true, + "dev": true }, "cache-base": { "version": "1.0.1", "bundled": true, + "dev": true, "requires": { "collection-visit": "1.0.0", "component-emitter": "1.2.1", @@ -1194,13 +1363,15 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true + "bundled": true, + "dev": true } } }, "caching-transform": { "version": "1.0.1", "bundled": true, + "dev": true, "requires": { "md5-hex": "1.3.0", "mkdirp": "0.5.1", @@ -1210,11 +1381,13 @@ "camelcase": { "version": "1.2.1", "bundled": true, + "dev": true, "optional": true }, "center-align": { "version": "0.1.3", "bundled": true, + "dev": true, "optional": true, "requires": { "align-text": "0.1.4", @@ -1224,6 +1397,7 @@ "chalk": { "version": "1.1.3", "bundled": true, + "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -1235,6 +1409,7 @@ "class-utils": { "version": "0.3.6", "bundled": true, + "dev": true, "requires": { "arr-union": "3.1.0", "define-property": "0.2.5", @@ -1245,6 +1420,7 @@ "define-property": { "version": "0.2.5", "bundled": true, + "dev": true, "requires": { "is-descriptor": "0.1.6" } @@ -1252,6 +1428,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -1259,6 +1436,7 @@ "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -1268,6 +1446,7 @@ "is-data-descriptor": { "version": "0.1.4", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -1275,6 +1454,7 @@ "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -1284,6 +1464,7 @@ "is-descriptor": { "version": "0.1.6", "bundled": true, + "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", @@ -1292,17 +1473,20 @@ }, "isobject": { "version": "3.0.1", - "bundled": true + "bundled": true, + "dev": true }, "kind-of": { "version": "5.1.0", - "bundled": true + "bundled": true, + "dev": true } } }, "cliui": { "version": "2.1.0", "bundled": true, + "dev": true, "optional": true, "requires": { "center-align": "0.1.3", @@ -1313,17 +1497,20 @@ "wordwrap": { "version": "0.0.2", "bundled": true, + "dev": true, "optional": true } } }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "dev": true }, "collection-visit": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "map-visit": "1.0.0", "object-visit": "1.0.1" @@ -1331,31 +1518,38 @@ }, "commondir": { "version": "1.0.1", - "bundled": true + "bundled": true, + "dev": true }, "component-emitter": { "version": "1.2.1", - "bundled": true + "bundled": true, + "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true + "bundled": true, + "dev": true }, "copy-descriptor": { "version": "0.1.1", - "bundled": true + "bundled": true, + "dev": true }, "core-js": { "version": "2.5.3", - "bundled": true + "bundled": true, + "dev": true }, "cross-spawn": { "version": "4.0.2", "bundled": true, + "dev": true, "requires": { "lru-cache": "4.1.2", "which": "1.3.0" @@ -1364,25 +1558,30 @@ "debug": { "version": "2.6.9", "bundled": true, + "dev": true, "requires": { "ms": "2.0.0" } }, "debug-log": { "version": "1.0.1", - "bundled": true + "bundled": true, + "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true + "bundled": true, + "dev": true }, "decode-uri-component": { "version": "0.2.0", - "bundled": true + "bundled": true, + "dev": true }, "default-require-extensions": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "strip-bom": "2.0.0" } @@ -1390,6 +1589,7 @@ "define-property": { "version": "2.0.2", "bundled": true, + "dev": true, "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" @@ -1397,13 +1597,15 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true + "bundled": true, + "dev": true } } }, "detect-indent": { "version": "4.0.0", "bundled": true, + "dev": true, "requires": { "repeating": "2.0.1" } @@ -1411,21 +1613,25 @@ "error-ex": { "version": "1.3.1", "bundled": true, + "dev": true, "requires": { "is-arrayish": "0.2.1" } }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true + "bundled": true, + "dev": true }, "esutils": { "version": "2.0.2", - "bundled": true + "bundled": true, + "dev": true }, "execa": { "version": "0.7.0", "bundled": true, + "dev": true, "requires": { "cross-spawn": "5.1.0", "get-stream": "3.0.0", @@ -1439,6 +1645,7 @@ "cross-spawn": { "version": "5.1.0", "bundled": true, + "dev": true, "requires": { "lru-cache": "4.1.2", "shebang-command": "1.2.0", @@ -1450,6 +1657,7 @@ "expand-brackets": { "version": "0.1.5", "bundled": true, + "dev": true, "requires": { "is-posix-bracket": "0.1.1" } @@ -1457,6 +1665,7 @@ "expand-range": { "version": "1.8.2", "bundled": true, + "dev": true, "requires": { "fill-range": "2.2.3" } @@ -1464,6 +1673,7 @@ "extend-shallow": { "version": "3.0.2", "bundled": true, + "dev": true, "requires": { "assign-symbols": "1.0.0", "is-extendable": "1.0.1" @@ -1472,6 +1682,7 @@ "is-extendable": { "version": "1.0.1", "bundled": true, + "dev": true, "requires": { "is-plain-object": "2.0.4" } @@ -1481,17 +1692,20 @@ "extglob": { "version": "0.3.2", "bundled": true, + "dev": true, "requires": { "is-extglob": "1.0.0" } }, "filename-regex": { "version": "2.0.1", - "bundled": true + "bundled": true, + "dev": true }, "fill-range": { "version": "2.2.3", "bundled": true, + "dev": true, "requires": { "is-number": "2.1.0", "isobject": "2.1.0", @@ -1503,6 +1717,7 @@ "find-cache-dir": { "version": "0.1.1", "bundled": true, + "dev": true, "requires": { "commondir": "1.0.1", "mkdirp": "0.5.1", @@ -1512,17 +1727,20 @@ "find-up": { "version": "2.1.0", "bundled": true, + "dev": true, "requires": { "locate-path": "2.0.0" } }, "for-in": { "version": "1.0.2", - "bundled": true + "bundled": true, + "dev": true }, "for-own": { "version": "0.1.5", "bundled": true, + "dev": true, "requires": { "for-in": "1.0.2" } @@ -1530,6 +1748,7 @@ "foreground-child": { "version": "1.5.6", "bundled": true, + "dev": true, "requires": { "cross-spawn": "4.0.2", "signal-exit": "3.0.2" @@ -1538,29 +1757,35 @@ "fragment-cache": { "version": "0.2.1", "bundled": true, + "dev": true, "requires": { "map-cache": "0.2.2" } }, "fs.realpath": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true + "bundled": true, + "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true + "bundled": true, + "dev": true }, "get-value": { "version": "2.0.6", - "bundled": true + "bundled": true, + "dev": true }, "glob": { "version": "7.1.2", "bundled": true, + "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -1573,6 +1798,7 @@ "glob-base": { "version": "0.3.0", "bundled": true, + "dev": true, "requires": { "glob-parent": "2.0.0", "is-glob": "2.0.1" @@ -1581,21 +1807,25 @@ "glob-parent": { "version": "2.0.0", "bundled": true, + "dev": true, "requires": { "is-glob": "2.0.1" } }, "globals": { "version": "9.18.0", - "bundled": true + "bundled": true, + "dev": true }, "graceful-fs": { "version": "4.1.11", - "bundled": true + "bundled": true, + "dev": true }, "handlebars": { "version": "4.0.11", "bundled": true, + "dev": true, "requires": { "async": "1.5.2", "optimist": "0.6.1", @@ -1606,6 +1836,7 @@ "source-map": { "version": "0.4.4", "bundled": true, + "dev": true, "requires": { "amdefine": "1.0.1" } @@ -1615,17 +1846,20 @@ "has-ansi": { "version": "2.0.0", "bundled": true, + "dev": true, "requires": { "ansi-regex": "2.1.1" } }, "has-flag": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "has-value": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "get-value": "2.0.6", "has-values": "1.0.0", @@ -1634,13 +1868,15 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true + "bundled": true, + "dev": true } } }, "has-values": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "is-number": "3.0.0", "kind-of": "4.0.0" @@ -1649,6 +1885,7 @@ "is-number": { "version": "3.0.0", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -1656,6 +1893,7 @@ "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -1665,6 +1903,7 @@ "kind-of": { "version": "4.0.0", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -1673,15 +1912,18 @@ }, "hosted-git-info": { "version": "2.6.0", - "bundled": true + "bundled": true, + "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true + "bundled": true, + "dev": true }, "inflight": { "version": "1.0.6", "bundled": true, + "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -1689,43 +1931,51 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "dev": true }, "invariant": { "version": "2.2.3", "bundled": true, + "dev": true, "requires": { "loose-envify": "1.3.1" } }, "invert-kv": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "is-accessor-descriptor": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "kind-of": "6.0.2" }, "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true + "bundled": true, + "dev": true } } }, "is-arrayish": { "version": "0.2.1", - "bundled": true + "bundled": true, + "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true + "bundled": true, + "dev": true }, "is-builtin-module": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "builtin-modules": "1.1.1" } @@ -1733,19 +1983,22 @@ "is-data-descriptor": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "kind-of": "6.0.2" }, "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true + "bundled": true, + "dev": true } } }, "is-descriptor": { "version": "1.0.2", "bundled": true, + "dev": true, "requires": { "is-accessor-descriptor": "1.0.0", "is-data-descriptor": "1.0.0", @@ -1754,43 +2007,51 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true + "bundled": true, + "dev": true } } }, "is-dotfile": { "version": "1.0.3", - "bundled": true + "bundled": true, + "dev": true }, "is-equal-shallow": { "version": "0.1.3", "bundled": true, + "dev": true, "requires": { "is-primitive": "2.0.0" } }, "is-extendable": { "version": "0.1.1", - "bundled": true + "bundled": true, + "dev": true }, "is-extglob": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "is-finite": { "version": "1.0.2", "bundled": true, + "dev": true, "requires": { "number-is-nan": "1.0.1" } }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true + "bundled": true, + "dev": true }, "is-glob": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { "is-extglob": "1.0.0" } @@ -1798,6 +2059,7 @@ "is-number": { "version": "2.1.0", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" } @@ -1805,71 +2067,85 @@ "is-odd": { "version": "2.0.0", "bundled": true, + "dev": true, "requires": { "is-number": "4.0.0" }, "dependencies": { "is-number": { "version": "4.0.0", - "bundled": true + "bundled": true, + "dev": true } } }, "is-plain-object": { "version": "2.0.4", "bundled": true, + "dev": true, "requires": { "isobject": "3.0.1" }, "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true + "bundled": true, + "dev": true } } }, "is-posix-bracket": { "version": "0.1.1", - "bundled": true + "bundled": true, + "dev": true }, "is-primitive": { "version": "2.0.0", - "bundled": true + "bundled": true, + "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true + "bundled": true, + "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true + "bundled": true, + "dev": true }, "is-windows": { "version": "1.0.2", - "bundled": true + "bundled": true, + "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true + "bundled": true, + "dev": true }, "isobject": { "version": "2.1.0", "bundled": true, + "dev": true, "requires": { "isarray": "1.0.0" } }, "istanbul-lib-coverage": { "version": "1.2.0", - "bundled": true + "bundled": true, + "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", "bundled": true, + "dev": true, "requires": { "append-transform": "0.4.0" } @@ -1877,6 +2153,7 @@ "istanbul-lib-instrument": { "version": "1.10.1", "bundled": true, + "dev": true, "requires": { "babel-generator": "6.26.1", "babel-template": "6.26.0", @@ -1890,6 +2167,7 @@ "istanbul-lib-report": { "version": "1.1.3", "bundled": true, + "dev": true, "requires": { "istanbul-lib-coverage": "1.2.0", "mkdirp": "0.5.1", @@ -1900,6 +2178,7 @@ "supports-color": { "version": "3.2.3", "bundled": true, + "dev": true, "requires": { "has-flag": "1.0.0" } @@ -1909,6 +2188,7 @@ "istanbul-lib-source-maps": { "version": "1.2.3", "bundled": true, + "dev": true, "requires": { "debug": "3.1.0", "istanbul-lib-coverage": "1.2.0", @@ -1920,6 +2200,7 @@ "debug": { "version": "3.1.0", "bundled": true, + "dev": true, "requires": { "ms": "2.0.0" } @@ -1929,21 +2210,25 @@ "istanbul-reports": { "version": "1.3.0", "bundled": true, + "dev": true, "requires": { "handlebars": "4.0.11" } }, "js-tokens": { "version": "3.0.2", - "bundled": true + "bundled": true, + "dev": true }, "jsesc": { "version": "1.3.0", - "bundled": true + "bundled": true, + "dev": true }, "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -1951,11 +2236,13 @@ "lazy-cache": { "version": "1.0.4", "bundled": true, + "dev": true, "optional": true }, "lcid": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "invert-kv": "1.0.0" } @@ -1963,6 +2250,7 @@ "load-json-file": { "version": "1.1.0", "bundled": true, + "dev": true, "requires": { "graceful-fs": "4.1.11", "parse-json": "2.2.0", @@ -1974,6 +2262,7 @@ "locate-path": { "version": "2.0.0", "bundled": true, + "dev": true, "requires": { "p-locate": "2.0.0", "path-exists": "3.0.0" @@ -1981,21 +2270,25 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true + "bundled": true, + "dev": true } } }, "lodash": { "version": "4.17.5", - "bundled": true + "bundled": true, + "dev": true }, "longest": { "version": "1.0.1", - "bundled": true + "bundled": true, + "dev": true }, "loose-envify": { "version": "1.3.1", "bundled": true, + "dev": true, "requires": { "js-tokens": "3.0.2" } @@ -2003,6 +2296,7 @@ "lru-cache": { "version": "4.1.2", "bundled": true, + "dev": true, "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" @@ -2010,11 +2304,13 @@ }, "map-cache": { "version": "0.2.2", - "bundled": true + "bundled": true, + "dev": true }, "map-visit": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "object-visit": "1.0.1" } @@ -2022,17 +2318,20 @@ "md5-hex": { "version": "1.3.0", "bundled": true, + "dev": true, "requires": { "md5-o-matic": "0.1.1" } }, "md5-o-matic": { "version": "0.1.1", - "bundled": true + "bundled": true, + "dev": true }, "mem": { "version": "1.1.0", "bundled": true, + "dev": true, "requires": { "mimic-fn": "1.2.0" } @@ -2040,19 +2339,22 @@ "merge-source-map": { "version": "1.1.0", "bundled": true, + "dev": true, "requires": { "source-map": "0.6.1" }, "dependencies": { "source-map": { "version": "0.6.1", - "bundled": true + "bundled": true, + "dev": true } } }, "micromatch": { "version": "2.3.11", "bundled": true, + "dev": true, "requires": { "arr-diff": "2.0.0", "array-unique": "0.2.1", @@ -2071,22 +2373,26 @@ }, "mimic-fn": { "version": "1.2.0", - "bundled": true + "bundled": true, + "dev": true }, "minimatch": { "version": "3.0.4", "bundled": true, + "dev": true, "requires": { "brace-expansion": "1.1.11" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "dev": true }, "mixin-deep": { "version": "1.3.1", "bundled": true, + "dev": true, "requires": { "for-in": "1.0.2", "is-extendable": "1.0.1" @@ -2095,6 +2401,7 @@ "is-extendable": { "version": "1.0.1", "bundled": true, + "dev": true, "requires": { "is-plain-object": "2.0.4" } @@ -2104,17 +2411,20 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "dev": true, "requires": { "minimist": "0.0.8" } }, "ms": { "version": "2.0.0", - "bundled": true + "bundled": true, + "dev": true }, "nanomatch": { "version": "1.2.9", "bundled": true, + "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", @@ -2132,21 +2442,25 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "bundled": true + "bundled": true, + "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true + "bundled": true, + "dev": true }, "kind-of": { "version": "6.0.2", - "bundled": true + "bundled": true, + "dev": true } } }, "normalize-package-data": { "version": "2.4.0", "bundled": true, + "dev": true, "requires": { "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", @@ -2157,6 +2471,7 @@ "normalize-path": { "version": "2.1.1", "bundled": true, + "dev": true, "requires": { "remove-trailing-separator": "1.1.0" } @@ -2164,21 +2479,25 @@ "npm-run-path": { "version": "2.0.2", "bundled": true, + "dev": true, "requires": { "path-key": "2.0.1" } }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true + "bundled": true, + "dev": true }, "object-copy": { "version": "0.1.0", "bundled": true, + "dev": true, "requires": { "copy-descriptor": "0.1.1", "define-property": "0.2.5", @@ -2188,6 +2507,7 @@ "define-property": { "version": "0.2.5", "bundled": true, + "dev": true, "requires": { "is-descriptor": "0.1.6" } @@ -2195,6 +2515,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" } @@ -2202,6 +2523,7 @@ "is-data-descriptor": { "version": "0.1.4", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" } @@ -2209,6 +2531,7 @@ "is-descriptor": { "version": "0.1.6", "bundled": true, + "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", @@ -2217,7 +2540,8 @@ "dependencies": { "kind-of": { "version": "5.1.0", - "bundled": true + "bundled": true, + "dev": true } } } @@ -2226,19 +2550,22 @@ "object-visit": { "version": "1.0.1", "bundled": true, + "dev": true, "requires": { "isobject": "3.0.1" }, "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true + "bundled": true, + "dev": true } } }, "object.omit": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { "for-own": "0.1.5", "is-extendable": "0.1.1" @@ -2247,19 +2574,22 @@ "object.pick": { "version": "1.3.0", "bundled": true, + "dev": true, "requires": { "isobject": "3.0.1" }, "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true + "bundled": true, + "dev": true } } }, "once": { "version": "1.4.0", "bundled": true, + "dev": true, "requires": { "wrappy": "1.0.2" } @@ -2267,6 +2597,7 @@ "optimist": { "version": "0.6.1", "bundled": true, + "dev": true, "requires": { "minimist": "0.0.8", "wordwrap": "0.0.3" @@ -2274,11 +2605,13 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true + "bundled": true, + "dev": true }, "os-locale": { "version": "2.1.0", "bundled": true, + "dev": true, "requires": { "execa": "0.7.0", "lcid": "1.0.0", @@ -2287,11 +2620,13 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "p-limit": { "version": "1.2.0", "bundled": true, + "dev": true, "requires": { "p-try": "1.0.0" } @@ -2299,17 +2634,20 @@ "p-locate": { "version": "2.0.0", "bundled": true, + "dev": true, "requires": { "p-limit": "1.2.0" } }, "p-try": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "parse-glob": { "version": "3.0.4", "bundled": true, + "dev": true, "requires": { "glob-base": "0.3.0", "is-dotfile": "1.0.3", @@ -2320,36 +2658,43 @@ "parse-json": { "version": "2.2.0", "bundled": true, + "dev": true, "requires": { "error-ex": "1.3.1" } }, "pascalcase": { "version": "0.1.1", - "bundled": true + "bundled": true, + "dev": true }, "path-exists": { "version": "2.1.0", "bundled": true, + "dev": true, "requires": { "pinkie-promise": "2.0.1" } }, "path-is-absolute": { "version": "1.0.1", - "bundled": true + "bundled": true, + "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true + "bundled": true, + "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true + "bundled": true, + "dev": true }, "path-type": { "version": "1.1.0", "bundled": true, + "dev": true, "requires": { "graceful-fs": "4.1.11", "pify": "2.3.0", @@ -2358,15 +2703,18 @@ }, "pify": { "version": "2.3.0", - "bundled": true + "bundled": true, + "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true + "bundled": true, + "dev": true }, "pinkie-promise": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { "pinkie": "2.0.4" } @@ -2374,6 +2722,7 @@ "pkg-dir": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "find-up": "1.1.2" }, @@ -2381,6 +2730,7 @@ "find-up": { "version": "1.1.2", "bundled": true, + "dev": true, "requires": { "path-exists": "2.1.0", "pinkie-promise": "2.0.1" @@ -2390,19 +2740,23 @@ }, "posix-character-classes": { "version": "0.1.1", - "bundled": true + "bundled": true, + "dev": true }, "preserve": { "version": "0.2.0", - "bundled": true + "bundled": true, + "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true + "bundled": true, + "dev": true }, "randomatic": { "version": "1.1.7", "bundled": true, + "dev": true, "requires": { "is-number": "3.0.0", "kind-of": "4.0.0" @@ -2411,6 +2765,7 @@ "is-number": { "version": "3.0.0", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -2418,6 +2773,7 @@ "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -2427,6 +2783,7 @@ "kind-of": { "version": "4.0.0", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -2436,6 +2793,7 @@ "read-pkg": { "version": "1.1.0", "bundled": true, + "dev": true, "requires": { "load-json-file": "1.1.0", "normalize-package-data": "2.4.0", @@ -2445,6 +2803,7 @@ "read-pkg-up": { "version": "1.0.1", "bundled": true, + "dev": true, "requires": { "find-up": "1.1.2", "read-pkg": "1.1.0" @@ -2453,6 +2812,7 @@ "find-up": { "version": "1.1.2", "bundled": true, + "dev": true, "requires": { "path-exists": "2.1.0", "pinkie-promise": "2.0.1" @@ -2462,11 +2822,13 @@ }, "regenerator-runtime": { "version": "0.11.1", - "bundled": true + "bundled": true, + "dev": true }, "regex-cache": { "version": "0.4.4", "bundled": true, + "dev": true, "requires": { "is-equal-shallow": "0.1.3" } @@ -2474,6 +2836,7 @@ "regex-not": { "version": "1.0.2", "bundled": true, + "dev": true, "requires": { "extend-shallow": "3.0.2", "safe-regex": "1.1.0" @@ -2481,46 +2844,56 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "bundled": true + "bundled": true, + "dev": true }, "repeat-element": { "version": "1.1.2", - "bundled": true + "bundled": true, + "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true + "bundled": true, + "dev": true }, "repeating": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { "is-finite": "1.0.2" } }, "require-directory": { "version": "2.1.1", - "bundled": true + "bundled": true, + "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true + "bundled": true, + "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true + "bundled": true, + "dev": true }, "resolve-url": { "version": "0.2.1", - "bundled": true + "bundled": true, + "dev": true }, "ret": { "version": "0.1.15", - "bundled": true + "bundled": true, + "dev": true }, "right-align": { "version": "0.1.3", "bundled": true, + "dev": true, "optional": true, "requires": { "align-text": "0.1.4" @@ -2529,6 +2902,7 @@ "rimraf": { "version": "2.6.2", "bundled": true, + "dev": true, "requires": { "glob": "7.1.2" } @@ -2536,21 +2910,25 @@ "safe-regex": { "version": "1.1.0", "bundled": true, + "dev": true, "requires": { "ret": "0.1.15" } }, "semver": { "version": "5.5.0", - "bundled": true + "bundled": true, + "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true + "bundled": true, + "dev": true }, "set-value": { "version": "2.0.0", "bundled": true, + "dev": true, "requires": { "extend-shallow": "2.0.1", "is-extendable": "0.1.1", @@ -2561,6 +2939,7 @@ "extend-shallow": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { "is-extendable": "0.1.1" } @@ -2570,25 +2949,30 @@ "shebang-command": { "version": "1.2.0", "bundled": true, + "dev": true, "requires": { "shebang-regex": "1.0.0" } }, "shebang-regex": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true + "bundled": true, + "dev": true }, "slide": { "version": "1.1.6", - "bundled": true + "bundled": true, + "dev": true }, "snapdragon": { "version": "0.8.2", "bundled": true, + "dev": true, "requires": { "base": "0.11.2", "debug": "2.6.9", @@ -2603,6 +2987,7 @@ "define-property": { "version": "0.2.5", "bundled": true, + "dev": true, "requires": { "is-descriptor": "0.1.6" } @@ -2610,6 +2995,7 @@ "extend-shallow": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { "is-extendable": "0.1.1" } @@ -2617,6 +3003,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -2624,6 +3011,7 @@ "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -2633,6 +3021,7 @@ "is-data-descriptor": { "version": "0.1.4", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -2640,6 +3029,7 @@ "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -2649,6 +3039,7 @@ "is-descriptor": { "version": "0.1.6", "bundled": true, + "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", @@ -2657,13 +3048,15 @@ }, "kind-of": { "version": "5.1.0", - "bundled": true + "bundled": true, + "dev": true } } }, "snapdragon-node": { "version": "2.1.1", "bundled": true, + "dev": true, "requires": { "define-property": "1.0.0", "isobject": "3.0.1", @@ -2673,30 +3066,35 @@ "define-property": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "is-descriptor": "1.0.2" } }, "isobject": { "version": "3.0.1", - "bundled": true + "bundled": true, + "dev": true } } }, "snapdragon-util": { "version": "3.0.1", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" } }, "source-map": { "version": "0.5.7", - "bundled": true + "bundled": true, + "dev": true }, "source-map-resolve": { "version": "0.5.1", "bundled": true, + "dev": true, "requires": { "atob": "2.0.3", "decode-uri-component": "0.2.0", @@ -2707,11 +3105,13 @@ }, "source-map-url": { "version": "0.4.0", - "bundled": true + "bundled": true, + "dev": true }, "spawn-wrap": { "version": "1.4.2", "bundled": true, + "dev": true, "requires": { "foreground-child": "1.5.6", "mkdirp": "0.5.1", @@ -2724,6 +3124,7 @@ "spdx-correct": { "version": "3.0.0", "bundled": true, + "dev": true, "requires": { "spdx-expression-parse": "3.0.0", "spdx-license-ids": "3.0.0" @@ -2731,11 +3132,13 @@ }, "spdx-exceptions": { "version": "2.1.0", - "bundled": true + "bundled": true, + "dev": true }, "spdx-expression-parse": { "version": "3.0.0", "bundled": true, + "dev": true, "requires": { "spdx-exceptions": "2.1.0", "spdx-license-ids": "3.0.0" @@ -2743,11 +3146,13 @@ }, "spdx-license-ids": { "version": "3.0.0", - "bundled": true + "bundled": true, + "dev": true }, "split-string": { "version": "3.1.0", "bundled": true, + "dev": true, "requires": { "extend-shallow": "3.0.2" } @@ -2755,6 +3160,7 @@ "static-extend": { "version": "0.1.2", "bundled": true, + "dev": true, "requires": { "define-property": "0.2.5", "object-copy": "0.1.0" @@ -2763,6 +3169,7 @@ "define-property": { "version": "0.2.5", "bundled": true, + "dev": true, "requires": { "is-descriptor": "0.1.6" } @@ -2770,6 +3177,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -2777,6 +3185,7 @@ "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -2786,6 +3195,7 @@ "is-data-descriptor": { "version": "0.1.4", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -2793,6 +3203,7 @@ "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -2802,6 +3213,7 @@ "is-descriptor": { "version": "0.1.6", "bundled": true, + "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", @@ -2810,13 +3222,15 @@ }, "kind-of": { "version": "5.1.0", - "bundled": true + "bundled": true, + "dev": true } } }, "string-width": { "version": "2.1.1", "bundled": true, + "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" @@ -2824,11 +3238,13 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true + "bundled": true, + "dev": true }, "strip-ansi": { "version": "4.0.0", "bundled": true, + "dev": true, "requires": { "ansi-regex": "3.0.0" } @@ -2838,6 +3254,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -2845,21 +3262,25 @@ "strip-bom": { "version": "2.0.0", "bundled": true, + "dev": true, "requires": { "is-utf8": "0.2.1" } }, "strip-eof": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, "supports-color": { "version": "2.0.0", - "bundled": true + "bundled": true, + "dev": true }, "test-exclude": { "version": "4.2.1", "bundled": true, + "dev": true, "requires": { "arrify": "1.0.1", "micromatch": "3.1.9", @@ -2870,15 +3291,18 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "bundled": true + "bundled": true, + "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true + "bundled": true, + "dev": true }, "braces": { "version": "2.3.1", "bundled": true, + "dev": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", @@ -2897,6 +3321,7 @@ "define-property": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "is-descriptor": "1.0.2" } @@ -2904,6 +3329,7 @@ "extend-shallow": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { "is-extendable": "0.1.1" } @@ -2913,6 +3339,7 @@ "expand-brackets": { "version": "2.1.4", "bundled": true, + "dev": true, "requires": { "debug": "2.6.9", "define-property": "0.2.5", @@ -2926,6 +3353,7 @@ "define-property": { "version": "0.2.5", "bundled": true, + "dev": true, "requires": { "is-descriptor": "0.1.6" } @@ -2933,6 +3361,7 @@ "extend-shallow": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { "is-extendable": "0.1.1" } @@ -2940,6 +3369,7 @@ "is-descriptor": { "version": "0.1.6", "bundled": true, + "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", @@ -2948,13 +3378,15 @@ }, "kind-of": { "version": "5.1.0", - "bundled": true + "bundled": true, + "dev": true } } }, "extglob": { "version": "2.0.4", "bundled": true, + "dev": true, "requires": { "array-unique": "0.3.2", "define-property": "1.0.0", @@ -2969,6 +3401,7 @@ "define-property": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "is-descriptor": "1.0.2" } @@ -2976,6 +3409,7 @@ "extend-shallow": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { "is-extendable": "0.1.1" } @@ -2985,6 +3419,7 @@ "fill-range": { "version": "4.0.0", "bundled": true, + "dev": true, "requires": { "extend-shallow": "2.0.1", "is-number": "3.0.0", @@ -2995,6 +3430,7 @@ "extend-shallow": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { "is-extendable": "0.1.1" } @@ -3004,6 +3440,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -3011,6 +3448,7 @@ "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -3020,6 +3458,7 @@ "is-data-descriptor": { "version": "0.1.4", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -3027,6 +3466,7 @@ "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -3036,6 +3476,7 @@ "is-number": { "version": "3.0.0", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -3043,6 +3484,7 @@ "kind-of": { "version": "3.2.2", "bundled": true, + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -3051,15 +3493,18 @@ }, "isobject": { "version": "3.0.1", - "bundled": true + "bundled": true, + "dev": true }, "kind-of": { "version": "6.0.2", - "bundled": true + "bundled": true, + "dev": true }, "micromatch": { "version": "3.1.9", "bundled": true, + "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", @@ -3080,11 +3525,13 @@ }, "to-fast-properties": { "version": "1.0.3", - "bundled": true + "bundled": true, + "dev": true }, "to-object-path": { "version": "0.3.0", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" } @@ -3092,6 +3539,7 @@ "to-regex": { "version": "3.0.2", "bundled": true, + "dev": true, "requires": { "define-property": "2.0.2", "extend-shallow": "3.0.2", @@ -3102,6 +3550,7 @@ "to-regex-range": { "version": "2.1.1", "bundled": true, + "dev": true, "requires": { "is-number": "3.0.0", "repeat-string": "1.6.1" @@ -3110,6 +3559,7 @@ "is-number": { "version": "3.0.0", "bundled": true, + "dev": true, "requires": { "kind-of": "3.2.2" } @@ -3118,11 +3568,13 @@ }, "trim-right": { "version": "1.0.1", - "bundled": true + "bundled": true, + "dev": true }, "uglify-js": { "version": "2.8.29", "bundled": true, + "dev": true, "optional": true, "requires": { "source-map": "0.5.7", @@ -3133,6 +3585,7 @@ "yargs": { "version": "3.10.0", "bundled": true, + "dev": true, "optional": true, "requires": { "camelcase": "1.2.1", @@ -3146,11 +3599,13 @@ "uglify-to-browserify": { "version": "1.0.2", "bundled": true, + "dev": true, "optional": true }, "union-value": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "arr-union": "3.1.0", "get-value": "2.0.6", @@ -3161,6 +3616,7 @@ "extend-shallow": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { "is-extendable": "0.1.1" } @@ -3168,6 +3624,7 @@ "set-value": { "version": "0.4.3", "bundled": true, + "dev": true, "requires": { "extend-shallow": "2.0.1", "is-extendable": "0.1.1", @@ -3180,6 +3637,7 @@ "unset-value": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "has-value": "0.3.1", "isobject": "3.0.1" @@ -3188,6 +3646,7 @@ "has-value": { "version": "0.3.1", "bundled": true, + "dev": true, "requires": { "get-value": "2.0.6", "has-values": "0.1.4", @@ -3197,6 +3656,7 @@ "isobject": { "version": "2.1.0", "bundled": true, + "dev": true, "requires": { "isarray": "1.0.0" } @@ -3205,34 +3665,40 @@ }, "has-values": { "version": "0.1.4", - "bundled": true + "bundled": true, + "dev": true }, "isobject": { "version": "3.0.1", - "bundled": true + "bundled": true, + "dev": true } } }, "urix": { "version": "0.1.0", - "bundled": true + "bundled": true, + "dev": true }, "use": { "version": "3.1.0", "bundled": true, + "dev": true, "requires": { "kind-of": "6.0.2" }, "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true + "bundled": true, + "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", "bundled": true, + "dev": true, "requires": { "spdx-correct": "3.0.0", "spdx-expression-parse": "3.0.0" @@ -3241,26 +3707,31 @@ "which": { "version": "1.3.0", "bundled": true, + "dev": true, "requires": { "isexe": "2.0.0" } }, "which-module": { "version": "2.0.0", - "bundled": true + "bundled": true, + "dev": true }, "window-size": { "version": "0.1.0", "bundled": true, + "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true + "bundled": true, + "dev": true }, "wrap-ansi": { "version": "2.1.0", "bundled": true, + "dev": true, "requires": { "string-width": "1.0.2", "strip-ansi": "3.0.1" @@ -3269,6 +3740,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "dev": true, "requires": { "number-is-nan": "1.0.1" } @@ -3276,6 +3748,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "dev": true, "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", @@ -3286,11 +3759,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "dev": true }, "write-file-atomic": { "version": "1.3.4", "bundled": true, + "dev": true, "requires": { "graceful-fs": "4.1.11", "imurmurhash": "0.1.4", @@ -3299,15 +3774,18 @@ }, "y18n": { "version": "3.2.1", - "bundled": true + "bundled": true, + "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true + "bundled": true, + "dev": true }, "yargs": { "version": "11.1.0", "bundled": true, + "dev": true, "requires": { "cliui": "4.0.0", "decamelize": "1.2.0", @@ -3325,15 +3803,18 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true + "bundled": true, + "dev": true }, "camelcase": { "version": "4.1.0", - "bundled": true + "bundled": true, + "dev": true }, "cliui": { "version": "4.0.0", "bundled": true, + "dev": true, "requires": { "string-width": "2.1.1", "strip-ansi": "4.0.0", @@ -3343,6 +3824,7 @@ "strip-ansi": { "version": "4.0.0", "bundled": true, + "dev": true, "requires": { "ansi-regex": "3.0.0" } @@ -3350,6 +3832,7 @@ "yargs-parser": { "version": "9.0.2", "bundled": true, + "dev": true, "requires": { "camelcase": "4.1.0" } @@ -3359,13 +3842,15 @@ "yargs-parser": { "version": "8.1.0", "bundled": true, + "dev": true, "requires": { "camelcase": "4.1.0" }, "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true + "bundled": true, + "dev": true } } } @@ -3375,6 +3860,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1.0.2" } @@ -3383,6 +3869,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, "requires": { "mimic-fn": "1.2.0" } @@ -3390,17 +3877,20 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-limit": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, "requires": { "p-try": "1.0.0" } @@ -3409,6 +3899,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, "requires": { "p-limit": "1.2.0" } @@ -3416,12 +3907,14 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true }, "package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, "requires": { "got": "6.7.1", "registry-auth-token": "3.3.2", @@ -3433,6 +3926,7 @@ "version": "6.7.1", "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, "requires": { "create-error-class": "3.0.2", "duplexer3": "0.1.4", @@ -3450,39 +3944,46 @@ "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true }, "unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true } } }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.5", @@ -3493,6 +3994,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, "requires": { "pify": "3.0.0" } @@ -3500,27 +4002,32 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true }, "quick-lru": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true }, "rc": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "dev": true, "requires": { "deep-extend": "0.4.2", "ini": "1.3.5", @@ -3531,7 +4038,8 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true } } }, @@ -3539,6 +4047,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, "requires": { "load-json-file": "4.0.0", "normalize-package-data": "2.4.0", @@ -3549,6 +4058,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, "requires": { "find-up": "2.1.0", "read-pkg": "3.0.0" @@ -3558,6 +4068,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, "requires": { "indent-string": "3.2.0", "strip-indent": "2.0.0" @@ -3567,6 +4078,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, "requires": { "rc": "1.2.6", "safe-buffer": "5.1.1" @@ -3576,6 +4088,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, "requires": { "rc": "1.2.6" } @@ -3601,6 +4114,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, "requires": { "onetime": "2.0.1", "signal-exit": "3.0.2" @@ -3610,6 +4124,7 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, "requires": { "glob": "7.1.2" } @@ -3618,6 +4133,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, "requires": { "is-promise": "2.1.0" } @@ -3625,12 +4141,14 @@ "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true }, "rx-lite-aggregates": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, "requires": { "rx-lite": "4.0.8" } @@ -3638,17 +4156,20 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true }, "semver-diff": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, "requires": { "semver": "5.5.0" } @@ -3657,6 +4178,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "1.0.0" } @@ -3664,17 +4186,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shimmer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.0.tgz", + "integrity": "sha512-xTCx2vohXC2EWWDqY/zb4+5Mu28D+HYNSOuFzsyRDRvI/e1ICb69afwaUwfjr+25ZXldbOLyp+iDUZHq8UnTag==", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "source-map-support": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "dev": true, "requires": { "source-map": "0.6.1" }, @@ -3682,7 +4213,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -3690,6 +4222,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, "requires": { "spdx-expression-parse": "3.0.0", "spdx-license-ids": "3.0.0" @@ -3698,12 +4231,14 @@ "spdx-exceptions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==" + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true }, "spdx-expression-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, "requires": { "spdx-exceptions": "2.1.0", "spdx-license-ids": "3.0.0" @@ -3712,17 +4247,20 @@ "spdx-license-ids": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==" + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -3730,27 +4268,32 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-indent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, "requires": { "has-flag": "2.0.0" } @@ -3759,6 +4302,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, "requires": { "execa": "0.7.0" } @@ -3766,12 +4310,14 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, "requires": { "os-tmpdir": "1.0.2" } @@ -3779,12 +4325,14 @@ "trim-newlines": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true }, "ts-node": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-4.1.0.tgz", "integrity": "sha512-xcZH12oVg9PShKhy3UHyDmuDLV3y7iKwX25aMVPt1SIXSuAfWkFiGPEkg+th8R4YKW/QCxDoW7lJdb15lx6QWg==", + "dev": true, "requires": { "arrify": "1.0.1", "chalk": "2.3.2", @@ -3801,7 +4349,8 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true } } }, @@ -3809,6 +4358,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, "requires": { "@types/strip-bom": "3.0.0", "@types/strip-json-comments": "0.0.30", @@ -3819,12 +4369,14 @@ "tslib": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", - "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", + "dev": true }, "tslint": { "version": "5.9.1", "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", + "dev": true, "requires": { "babel-code-frame": "6.26.0", "builtin-modules": "1.1.1", @@ -3843,7 +4395,8 @@ "commander": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true } } }, @@ -3851,6 +4404,7 @@ "version": "2.22.2", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.22.2.tgz", "integrity": "sha512-u06FUSulCJ+Y8a2ftuqZN6kIGqdP2yJjUPEngXqmdPND4UQfb04igcotH+dw+IFr417yP6muCLE8/5/Qlfnx0w==", + "dev": true, "requires": { "tslib": "1.9.0" } @@ -3858,12 +4412,14 @@ "typescript": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", - "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=" + "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", + "dev": true }, "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, "requires": { "crypto-random-string": "1.0.0" } @@ -3872,6 +4428,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "dev": true, "requires": { "boxen": "1.3.0", "chalk": "2.3.2", @@ -3888,6 +4445,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, "requires": { "prepend-http": "1.0.4" } @@ -3896,6 +4454,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.2.tgz", "integrity": "sha512-6sgSKoFw1UpUPd3cFdF7QGnrH6tDeBgW1F3v9gy8gLY0mlbiBXq8soy8aQpY6xeeCjH5K+JvC62Acp7gtl7wWA==", + "dev": true, "requires": { "homedir-polyfill": "1.0.1" } @@ -3904,6 +4463,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, "requires": { "spdx-correct": "3.0.0", "spdx-expression-parse": "3.0.0" @@ -3913,6 +4473,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, "requires": { "isexe": "2.0.0" } @@ -3921,6 +4482,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, "requires": { "string-width": "2.1.1" }, @@ -3928,17 +4490,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" @@ -3948,6 +4513,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "3.0.0" } @@ -3957,12 +4523,14 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "write-file-atomic": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, "requires": { "graceful-fs": "4.1.11", "imurmurhash": "0.1.4", @@ -3972,17 +4540,20 @@ "xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true }, "yn": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=" + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true } } } diff --git a/packages/opencensus-nodejs/package.json b/packages/opencensus-nodejs/package.json index ab88a0fd6..d01e52e34 100644 --- a/packages/opencensus-nodejs/package.json +++ b/packages/opencensus-nodejs/package.json @@ -3,18 +3,19 @@ "version": "0.0.1", "description": "OpenCensus is a toolkit for collecting application performance and behavior data.", "main": "build/src/index.js", - "types": "build/src/index.d.js", + "types": "build/src/index.d.ts", "repository": "census-instrumentation/opencensus-node", "scripts": { - "build": "node_modules/.bin/tsc --declaration", + "build": "npm run compile", "test": "nyc -x '**/test/**' --reporter=html --reporter=text mocha 'build/test/**/*.js'", "clean": "rimraf build/*", "check": "gts check", - "compile": "tsc -p .", + "compile": "tsc -p .; npm run cp-test-support-files", "fix": "gts fix", "prepare": "npm run compile", "pretest": "npm run compile", - "posttest": "npm run check" + "posttest": "npm run check", + "cp-test-support-files": "find ./test -name 'package.json' -type f -exec rsync -R {} ./build \\;" }, "keywords": [ "opencensus", @@ -25,7 +26,7 @@ "author": "Google Inc.", "license": "Apache-2.0", "engines": { - "node": ">=6.00" + "node": ">=6.0" }, "files": [ "build/src/**/*.js", @@ -42,12 +43,14 @@ "@types/extend": "^3.0.0", "@types/mocha": "^2.2.48", "@types/node": "^9.4.7", + "@types/shimmer": "^1.0.1", "gts": "^0.5.4", "mocha": "^5.0.4", "ncp": "^2.0.0", + "nyc": "11.6.0", + "shimmer": "^1.2.0", "ts-node": "^4.0.0", - "typescript": "~2.6.1", - "nyc": "11.6.0" + "typescript": "~2.6.1" }, "dependencies": { "@opencensus/opencensus-core": "^0.0.1", diff --git a/packages/opencensus-nodejs/src/trace/config/config.ts b/packages/opencensus-nodejs/src/trace/config/default-config.ts similarity index 66% rename from packages/opencensus-nodejs/src/trace/config/config.ts rename to packages/opencensus-nodejs/src/trace/config/default-config.ts index 54f199077..d339865fa 100644 --- a/packages/opencensus-nodejs/src/trace/config/config.ts +++ b/packages/opencensus-nodejs/src/trace/config/default-config.ts @@ -14,16 +14,22 @@ * limitations under the License. */ +import {types} from '@opencensus/opencensus-core'; + import {Constants} from '../constants'; -/** Defines a default configuration. */ +/** + * Defines a default configuration. For fields with primitive values, + * or non-primitive but non-map value (logger, exporter), any user-provided + * value will override the corresponding default value. For fields with + * non-primitive values, but map value (plugins), the user-provided value + * will be used to extend/overwrite the default value. + */ export const defaultConfig = { logLevel: 1, maximumLabelValueSize: 150, plugins: {}, bufferSize: Constants.DEFAULT_BUFFER_SIZE, bufferTimeout: Constants.DEFAULT_BUFFER_TIMEOUT, - samplingRate: 1, - exporter: null, - logger: null + samplingRate: 1 }; diff --git a/packages/opencensus-nodejs/src/trace/constants.ts b/packages/opencensus-nodejs/src/trace/constants.ts index cabb92648..d2c6af8ba 100644 --- a/packages/opencensus-nodejs/src/trace/constants.ts +++ b/packages/opencensus-nodejs/src/trace/constants.ts @@ -16,11 +16,17 @@ /** General pupose constants. */ const constants = { - DEFAULT_BUFFER_SIZE: 3, + /** Default maximum size of a buffer. */ + DEFAULT_BUFFER_SIZE: 100, + /** Default max timeout for a buffer before being flushed */ DEFAULT_BUFFER_TIMEOUT: 20000, - DEFAULT_INSTRUMENTATION_MODULES: ['http', 'https', 'mongodb-core'], - SCOPE: '@opencensus', - PLUGIN_PACKAGE_NAME_PREFIX: 'opencensus-instrumentation' + /** Default list of target modules to be instrumented */ + DEFAULT_INSTRUMENTATION_MODULES: [] as string[], + // DEFAULT_INSTRUMENTATION_MODULES: ['http', 'https', 'mongodb-core'], + /** Opencensus Scope */ + OPENCENSUS_SCOPE: '@opencensus', + /** Defult prefix for instrumentation modules */ + DEFAULT_PLUGIN_PACKAGE_NAME_PREFIX: 'opencensus-instrumentation' }; export {constants as Constants}; diff --git a/packages/opencensus-nodejs/src/trace/instrumentation/ext-types.d.ts b/packages/opencensus-nodejs/src/trace/instrumentation/ext-types.d.ts index 3cf2ba581..70cedfd51 100644 --- a/packages/opencensus-nodejs/src/trace/instrumentation/ext-types.d.ts +++ b/packages/opencensus-nodejs/src/trace/instrumentation/ext-types.d.ts @@ -25,4 +25,5 @@ declare module 'require-in-the-middle' { function hook(modules: string[]|null, onRequire: hook.OnRequireFn): void; function hook(onRequire: hook.OnRequireFn): void; export = hook; - } \ No newline at end of file + } + \ No newline at end of file diff --git a/packages/opencensus-nodejs/src/trace/instrumentation/pluging-loader.ts b/packages/opencensus-nodejs/src/trace/instrumentation/plugin-loader.ts similarity index 61% rename from packages/opencensus-nodejs/src/trace/instrumentation/pluging-loader.ts rename to packages/opencensus-nodejs/src/trace/instrumentation/plugin-loader.ts index 7303f26b5..dab14178b 100644 --- a/packages/opencensus-nodejs/src/trace/instrumentation/pluging-loader.ts +++ b/packages/opencensus-nodejs/src/trace/instrumentation/plugin-loader.ts @@ -14,24 +14,25 @@ * limitations under the License. */ -import {types} from '@opencensus/opencensus-core'; -import {classes} from '@opencensus/opencensus-core'; -import {logger} from '@opencensus/opencensus-core'; - +import {classes, logger, types} from '@opencensus/opencensus-core'; import * as fs from 'fs'; import * as path from 'path'; import * as hook from 'require-in-the-middle'; import {Constants} from '../constants'; -/** Defines a plugin loader. */ +/** + * The PluginLoader class can load instrumentation plugins that + * use a patch mechanism to enable automatic tracing for + * specific target modules. + */ export class PluginLoader { /** The tracer */ private tracer: types.Tracer; - /** A list of plugins. */ - private plugins: types.Plugin[] = []; /** logger */ private logger: types.Logger; + /** A list of loaded plugins. */ + plugins: types.Plugin[] = []; /** * Constructs a new PluginLoader instance. @@ -43,41 +44,34 @@ export class PluginLoader { } /** - * Gets the default package name. + * Gets the default package name for a target module. The default package + * name uses the default scope and a default prefix. * @param moduleName The module name. * @returns The default name for that package. */ - private static defaultPackageName(moduleName): string { - return `${Constants.SCOPE}/${Constants.PLUGIN_PACKAGE_NAME_PREFIX}-${ - moduleName}`; + private static defaultPackageName(moduleName: string): string { + return `${Constants.OPENCENSUS_SCOPE}/${ + Constants.DEFAULT_PLUGIN_PACKAGE_NAME_PREFIX}-${moduleName}`; } /** - * Gets the plugins to use. + * Returns a PlunginNames object, build from a string array of target modules + * names, using the defaultPackageName. * @param modulesToPatch A list of modules to patch. * @returns Plugin names. */ static defaultPluginsFromArray(modulesToPatch: string[]): types.PluginNames { - const plugins = modulesToPatch.reduce((plugins, moduleName) => { - plugins[moduleName] = PluginLoader.defaultPackageName(moduleName); - return plugins; - }, {}); + const plugins = modulesToPatch.reduce( + (plugins: types.PluginNames, moduleName: string) => { + plugins[moduleName] = PluginLoader.defaultPackageName(moduleName); + return plugins; + }, + {} as types.PluginNames); return plugins; } - /** - * Gets the plugin import path. - * @param pkgname Pakage name. - * @param name Name. - * @returns The import path. - */ - private getPlugingImportPath(pkgname: string, name: string): string { - return path.join(pkgname, 'build', 'src', name); - } - - /** * Gets the package version. * @param name Name. @@ -101,23 +95,27 @@ export class PluginLoader { /** - * Loads plugins. + * Loads a list of plugins (using a map of the target module name + * and its instrumentation plugin package name). Each plugin module + * should implement the core Plugin interface and export an instance + * named as "plugin". * @param pluginList A list of plugins. */ loadPlugins(pluginList: types.PluginNames) { const self = this; + // tslint:disable:no-any hook(Object.keys(pluginList), (exports, name, basedir) => { - const version = self.getPackageVersion(name, basedir); + const version = self.getPackageVersion(name, basedir as string); + self.logger.info('trying loading %s.%s', name, version); if (!version) { return exports; } else { self.logger.debug('applying patch to %s@%s module', name, version); self.logger.debug( 'using package %s to patch %s', pluginList[name], name); - const pluginImportPath = - self.getPlugingImportPath(pluginList[name], name); - const plugin: types.Plugin = require(pluginImportPath); + // Expecting a plugin from module; + const plugin: types.Plugin = require(pluginList[name]).plugin; self.plugins.push(plugin); return plugin.applyPatch(exports, self.tracer, version); } @@ -132,4 +130,12 @@ export class PluginLoader { } this.plugins = []; } + + /** + * Adds a search path for plugin modules. Intended for testing purposes only. + * @param searchPath The path to add. + */ + static set searchPathForTest(searchPath: string) { + module.paths.push(searchPath); + } } diff --git a/packages/opencensus-nodejs/src/trace/tracing.ts b/packages/opencensus-nodejs/src/trace/tracing.ts index c56f1ee8b..7d27c7d5c 100644 --- a/packages/opencensus-nodejs/src/trace/tracing.ts +++ b/packages/opencensus-nodejs/src/trace/tracing.ts @@ -13,20 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import {types} from '@opencensus/opencensus-core'; -import {classes} from '@opencensus/opencensus-core'; -import {logger} from '@opencensus/opencensus-core'; +import {classes, logger, types} from '@opencensus/opencensus-core'; import * as extend from 'extend'; -import {defaultConfig} from './config/config'; +import {defaultConfig} from './config/default-config'; import {Constants} from './constants'; -import {PluginLoader} from './instrumentation/pluging-loader'; +import {PluginLoader} from './instrumentation/plugin-loader'; /** Implements a Tracing. */ export class Tracing implements types.Tracing { - /** Indicates if the tracing is active */ - private active: boolean; /** A tracer object */ private tracerLocal: types.Tracer; /** A plugin loader object */ @@ -34,11 +30,13 @@ export class Tracing implements types.Tracing { /** Plugin names */ private defaultPlugins: types.PluginNames; /** A configuration object to start the tracing */ - private config: types.Config; + private configLocal: types.Config = null; /** An object to log information to */ - private logger: types.Logger; + private logger: types.Logger = null; /** Singleton instance */ private static sgltnInstance: types.Tracing; + /** Indicates if the tracing is active */ + private activeLocal: boolean; /** Constructs a new TracingImpl instance. */ constructor() { @@ -52,35 +50,53 @@ export class Tracing implements types.Tracing { return this.sgltnInstance || (this.sgltnInstance = new this()); } + // TODO: tracing interface should be updated + /** Gets active status */ + get active(): boolean { + return this.activeLocal; + } + + /** Gets config */ + get config(): types.Config { + return this.configLocal; + } + /** * Starts the tracing. * @param userConfig A configuration object to start the tracing. * @returns The started tracing. */ start(userConfig?: types.Config): types.Tracing { - this.config = extend( + this.configLocal = extend( true, {}, defaultConfig, {plugins: this.defaultPlugins}, userConfig); - // TODO: Instance logger if no logger was passed - this.logger = this.config.logger || logger.logger(); - this.logger.debug('config: %o', this.config); + + this.logger = + this.configLocal.logger || logger.logger(this.configLocal.logLevel); + this.configLocal.logger = this.logger; + this.logger.debug('config: %o', this.configLocal); this.pluginLoader = new PluginLoader(this.logger, this.tracerLocal); - this.pluginLoader.loadPlugins(this.config.plugins); + this.pluginLoader.loadPlugins( + this.configLocal.plugins as types.PluginNames); - if (!this.config.exporter) { - const exporter = new classes.ConsoleExporter(this.config); + if (!this.configLocal.exporter) { + const exporter = new classes.ConsoleExporter(this.configLocal); this.registerExporter(exporter); } else { - this.registerExporter(this.config.exporter); + this.registerExporter(this.configLocal.exporter); } - this.active = true; - this.tracerLocal.start(this.config); + this.activeLocal = true; + this.tracerLocal.start(this.configLocal); return this; } /** Stops the tracing. */ stop() { - this.active = false; + this.activeLocal = false; this.tracerLocal.stop(); + this.pluginLoader.unloadPlugins(); + this.configLocal = null; + this.logger = null; + // TODO: maybe some exporter logic when stop tracing } /** Gets the tracer. */ @@ -90,7 +106,8 @@ export class Tracing implements types.Tracing { /** Gets the exporter. */ get exporter(): types.Exporter { - return this.config.exporter; + return this.configLocal ? this.configLocal.exporter as types.Exporter : + null; } /** @@ -98,8 +115,14 @@ export class Tracing implements types.Tracing { * @param exporter THe exporter to send the traces to. */ registerExporter(exporter: types.Exporter): types.Tracing { - this.config.exporter = exporter; - this.tracer.registerEndSpanListener(exporter); + this.configLocal.exporter = exporter; + + // TODO: review this logic. Tracer.registerEndSpanListener + // should allow only one exporter listener + // an unregister method on Tracer is needed or a clear EndSpanListener + if (this.tracer.eventListeners.indexOf(exporter) < 0) { + this.tracer.registerEndSpanListener(exporter); + } return this; } -} \ No newline at end of file +} diff --git a/packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/index.ts b/packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/index.ts new file mode 100644 index 000000000..55bc9429d --- /dev/null +++ b/packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/index.ts @@ -0,0 +1,17 @@ +/** + * Copyright 2018, OpenCensus Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './simple-module'; diff --git a/packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/package.json b/packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/package.json new file mode 100644 index 000000000..f35f98491 --- /dev/null +++ b/packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/package.json @@ -0,0 +1,4 @@ +{ + "name": "@opencensus/opencensus-instrumentation-simple-module", + "version": "0.0.1" +} \ No newline at end of file diff --git a/packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/simple-module.ts b/packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/simple-module.ts new file mode 100644 index 000000000..e3e3d33a9 --- /dev/null +++ b/packages/opencensus-nodejs/test/instrumentation/node_modules/@opencensus/opencensus-instrumentation-simple-module/simple-module.ts @@ -0,0 +1,45 @@ +/** + * Copyright 2018, OpenCensus Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {types} from '@opencensus/opencensus-core'; +import {classes} from '@opencensus/opencensus-core'; +import * as shimmer from 'shimmer'; + + +export class SimpleModulePlugin extends classes.BasePlugin { + constructor() { + super('simple-module'); + } + + // tslint:disable:no-any + applyPatch(moduleExporters: any, tracer: types.Tracer, version: string) { + this.setPluginContext(moduleExporters, tracer, version); + // tslint:disable:no-any + shimmer.wrap( + moduleExporters, 'name', (orig) => () => 'patched-' + orig.apply()); + // tslint:disable:no-any + shimmer.wrap(moduleExporters, 'value', (orig) => () => orig.apply() + 1); + return moduleExporters; + } + + applyUnpatch(): void { + shimmer.unwrap(this.moduleExporters, 'name'); + shimmer.unwrap(this.moduleExporters, 'value'); + } +} + +const plugin = new SimpleModulePlugin(); +export {plugin}; diff --git a/packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/enduser-simple-module-pluging.ts b/packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/enduser-simple-module-pluging.ts new file mode 100644 index 000000000..c2bc69e5b --- /dev/null +++ b/packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/enduser-simple-module-pluging.ts @@ -0,0 +1,45 @@ +/** + * Copyright 2018, OpenCensus Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {types} from '@opencensus/opencensus-core'; +import {classes} from '@opencensus/opencensus-core'; +import * as shimmer from 'shimmer'; + + +export class MySimpleModulePlugin extends classes.BasePlugin { + constructor() { + super('simple-module'); + } + + // tslint:disable:no-any + applyPatch(moduleExporters: any, tracer: types.Tracer, version: string) { + this.setPluginContext(moduleExporters, tracer, version); + // tslint:disable:no-any + shimmer.wrap( + moduleExporters, 'name', (orig) => () => 'my-patched-' + orig.apply()); + // tslint:disable:no-any + shimmer.wrap(moduleExporters, 'value', (orig) => () => orig.apply() + 2); + return moduleExporters; + } + + applyUnpatch(): void { + shimmer.unwrap(this.moduleExporters, 'name'); + shimmer.unwrap(this.moduleExporters, 'value'); + } +} + +const plugin = new MySimpleModulePlugin(); +export {plugin}; diff --git a/packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/index.ts b/packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/index.ts new file mode 100644 index 000000000..55ad938a7 --- /dev/null +++ b/packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/index.ts @@ -0,0 +1,17 @@ +/** + * Copyright 2018, OpenCensus Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './enduser-simple-module-pluging'; diff --git a/packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/package.json b/packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/package.json new file mode 100644 index 000000000..ea096a3ba --- /dev/null +++ b/packages/opencensus-nodejs/test/instrumentation/node_modules/enduser-simple-module-pluging/package.json @@ -0,0 +1,4 @@ +{ + "name": "enduser-simple-module-pluging", + "version": "0.0.1" +} \ No newline at end of file diff --git a/packages/opencensus-nodejs/test/instrumentation/node_modules/simple-module/index.ts b/packages/opencensus-nodejs/test/instrumentation/node_modules/simple-module/index.ts new file mode 100644 index 000000000..1825ef993 --- /dev/null +++ b/packages/opencensus-nodejs/test/instrumentation/node_modules/simple-module/index.ts @@ -0,0 +1,4 @@ +module.exports = { + name: () => 'simple-module', + value: () => 100 +}; diff --git a/packages/opencensus-nodejs/test/instrumentation/node_modules/simple-module/package.json b/packages/opencensus-nodejs/test/instrumentation/node_modules/simple-module/package.json new file mode 100644 index 000000000..95f66e407 --- /dev/null +++ b/packages/opencensus-nodejs/test/instrumentation/node_modules/simple-module/package.json @@ -0,0 +1,4 @@ +{ + "name": "simple-module", + "version": "0.0.1" +} \ No newline at end of file diff --git a/packages/opencensus-nodejs/test/test-plugin-loader.ts b/packages/opencensus-nodejs/test/test-plugin-loader.ts new file mode 100644 index 000000000..05ed84289 --- /dev/null +++ b/packages/opencensus-nodejs/test/test-plugin-loader.ts @@ -0,0 +1,130 @@ +/** + * Copyright 2018, OpenCensus Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {classes, types} from '@opencensus/opencensus-core'; +import {logger} from '@opencensus/opencensus-core'; + +import * as assert from 'assert'; +import {isArray} from 'util'; + +import {Constants} from '../src/trace/constants'; +import {PluginLoader} from '../src/trace/instrumentation/plugin-loader'; +import {Tracing} from '../src/trace/tracing'; + + +const INSTALED_PLUGINS_PATH = `${__dirname}/instrumentation/node_modules`; +const TEST_MODULES = ['simple-module']; + +const clearRequireCache = () => { + Object.keys(require.cache).forEach(key => delete require.cache[key]); +}; + +describe('Trace Plugin Loader', () => { + const log = logger.logger(); + + before(() => { + module.paths.push(INSTALED_PLUGINS_PATH); + PluginLoader.searchPathForTest = INSTALED_PLUGINS_PATH; + }); + + afterEach(() => { + clearRequireCache(); + }); + + + describe('PluginLoader', () => { + const plugins = PluginLoader.defaultPluginsFromArray(TEST_MODULES); + const tracer = new classes.Tracer(); + + + /** Should create a PluginLoader instance */ + describe('new PluginLoader()', () => { + it('should create a PluginLoader instance', () => { + const pluginLoader = new PluginLoader(log, tracer); + assert.ok(pluginLoader instanceof PluginLoader); + }); + }); + + /** Should get the plugins to use. */ + describe('static defaultPluginsFromArray()', () => { + it('should get the default plugins from a module name array', () => { + const plugins = PluginLoader.defaultPluginsFromArray(TEST_MODULES); + assert.ok(plugins[TEST_MODULES[0]]); + assert.strictEqual( + plugins[TEST_MODULES[0]], + '@opencensus/opencensus-instrumentation-simple-module'); + }); + }); + + /** Should load the plugins. */ + describe('loadPlugins()', () => { + it('sanity check', () => { + const simpleModule = require(TEST_MODULES[0]); + assert.strictEqual(simpleModule.name(), TEST_MODULES[0]); + assert.strictEqual(simpleModule.value(), 100); + }); + + it('should load the plugins and patch the target modules', () => { + const pluginLoader = new PluginLoader(log, tracer); + assert.equal(pluginLoader.plugins.length, 0); + pluginLoader.loadPlugins(plugins); + const simpleModule = require(TEST_MODULES[0]); + assert.equal(pluginLoader.plugins.length, 1); + assert.strictEqual(simpleModule.name(), 'patched-' + TEST_MODULES[0]); + assert.strictEqual(simpleModule.value(), 101); + }); + }); + + /** Should unload the plugins. */ + describe('unloadPlugins()', () => { + it('should unload the plugins and unpatch the target module', () => { + const pluginLoader = new PluginLoader(log, tracer); + assert.equal(pluginLoader.plugins.length, 0); + pluginLoader.loadPlugins(plugins); + const simpleModule = require(TEST_MODULES[0]); + assert.equal(pluginLoader.plugins.length, 1); + assert.strictEqual(simpleModule.name(), 'patched-' + TEST_MODULES[0]); + assert.strictEqual(simpleModule.value(), 101); + pluginLoader.unloadPlugins(); + assert.equal(pluginLoader.plugins.length, 0); + assert.strictEqual(simpleModule.name(), TEST_MODULES[0]); + assert.strictEqual(simpleModule.value(), 100); + }); + }); + + /** Should load/unload end-user (non-default named) plugin. */ + describe('load/unload end-user pluging', () => { + it('should load/unload patch/unpatch end-user plugins', () => { + const pluginLoader = new PluginLoader(log, tracer); + assert.equal(pluginLoader.plugins.length, 0); + + const endUserPlugins = { + 'simple-module': 'enduser-simple-module-pluging' + }; + pluginLoader.loadPlugins(endUserPlugins); + const simpleModule = require(TEST_MODULES[0]); + assert.equal(pluginLoader.plugins.length, 1); + assert.strictEqual( + simpleModule.name(), 'my-patched-' + TEST_MODULES[0]); + assert.strictEqual(simpleModule.value(), 102); + pluginLoader.unloadPlugins(); + assert.equal(pluginLoader.plugins.length, 0); + assert.strictEqual(simpleModule.name(), TEST_MODULES[0]); + assert.strictEqual(simpleModule.value(), 100); + }); + }); + }); +}); diff --git a/packages/opencensus-nodejs/test/test-pluging-loader.ts b/packages/opencensus-nodejs/test/test-pluging-loader.ts deleted file mode 100644 index 0e89b9e39..000000000 --- a/packages/opencensus-nodejs/test/test-pluging-loader.ts +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Copyright 2018, OpenCensus Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import {classes} from '@opencensus/opencensus-core'; -import {logger} from '@opencensus/opencensus-core'; - -const log = logger.logger(); - -import * as assert from 'assert'; -import {isArray} from 'util'; - -import {Constants} from '../src/trace/constants'; -import {PluginLoader} from '../src/trace/instrumentation/pluging-loader'; -import {Tracing} from '../src/trace/tracing'; - -describe('PluginLoader', () => { - /** Should create a Tracing instance */ - describe('new PluginLoader()', () => { - it('should create a PluginLoader insctance', () => { - const tracer = new classes.Tracer(); - const pluginLoader = new PluginLoader(log, tracer); - assert.ok(pluginLoader instanceof PluginLoader); - }); - }); - - /** Should get the plugins to use. */ - describe('static defaultPluginsFromArray()', () => { - it('should get the plugins to use', () => { - const plugins = PluginLoader.defaultPluginsFromArray( - Constants.DEFAULT_INSTRUMENTATION_MODULES); - assert.ok(plugins['http']); - assert.ok(plugins['https']); - assert.ok(plugins['mongodb-core']); - }); - }); - - /** Should load the plugins. */ - describe('loadPlugins()', () => { - it('should load the plugins', () => { - const plugins = PluginLoader.defaultPluginsFromArray( - Constants.DEFAULT_INSTRUMENTATION_MODULES); - const tracer = new classes.Tracer(); - const pluginLoader = new PluginLoader(log, tracer); - - assert.equal(pluginLoader.loadPlugins(plugins), null); - }); - }); - - /** Should unload the plugins. */ - describe('unloadPlugins()', () => { - it('should unload the plugins', () => { - const plugins = PluginLoader.defaultPluginsFromArray( - Constants.DEFAULT_INSTRUMENTATION_MODULES); - const tracer = new classes.Tracer(); - const pluginLoader = new PluginLoader(log, tracer); - pluginLoader.loadPlugins(plugins); - - assert.equal(pluginLoader.unloadPlugins(), null); - }); - }); -}); \ No newline at end of file diff --git a/packages/opencensus-nodejs/test/test-tracing.ts b/packages/opencensus-nodejs/test/test-tracing.ts index 7c8e6dffd..54157b573 100644 --- a/packages/opencensus-nodejs/test/test-tracing.ts +++ b/packages/opencensus-nodejs/test/test-tracing.ts @@ -19,11 +19,16 @@ import {classes} from '@opencensus/opencensus-core'; import {logger} from '@opencensus/opencensus-core'; import * as assert from 'assert'; +import {defaultConfig} from '../src/trace/config/default-config'; +import {Constants} from '../src/trace/constants'; import {Tracing} from '../src/trace/tracing'; + const NOOP_EXPORTER = new classes.NoopExporter(); describe('Tracing', () => { + Constants.DEFAULT_INSTRUMENTATION_MODULES = ['http', 'https']; + /** Should create a Tracing instance */ describe('new Tracing()', () => { it('should create a Tracer instance', () => { @@ -42,29 +47,111 @@ describe('Tracing', () => { /** Should return a started tracing instance */ describe('start()', () => { - let tracingStarted: types.Tracing; + let aTracing: types.Tracing; const tracing = new Tracing(); // tslint:disable:no-any - function instanceOfLogger(object: any): object is types.Logger { - return 'debug' in object; - } + beforeEach(() => { + if (tracing.active) { + tracing.stop(); + } + }); it('should return a tracing instance', () => { - tracingStarted = tracing.start(); - assert.ok(tracingStarted instanceof Tracing); + aTracing = tracing.start(); + assert.ok(aTracing instanceof Tracing); + assert.ok(tracing.active); + assert.ok(aTracing.tracer.active); }); - it('the tracing was started', () => { - tracingStarted = tracing.start(); - assert.ok(tracingStarted.tracer.active); + it('should start with default config', () => { + tracing.start(); + assert.strictEqual(defaultConfig.bufferSize, tracing.config.bufferSize); + assert.strictEqual( + defaultConfig.bufferTimeout, tracing.config.bufferTimeout); + assert.strictEqual(defaultConfig.logLevel, tracing.config.logLevel); + assert.strictEqual( + defaultConfig.maximumLabelValueSize, + tracing.config.maximumLabelValueSize); + assert.strictEqual( + defaultConfig.samplingRate, tracing.config.samplingRate); + assert.ok(tracing.config.plugins['http']); + assert.strictEqual( + tracing.config.plugins['http'], + `${Constants.OPENCENSUS_SCOPE}/${ + Constants.DEFAULT_PLUGIN_PACKAGE_NAME_PREFIX}-http`); + + assert.ok(tracing.config.plugins['https']); + assert.strictEqual( + tracing.config.plugins['https'], + `${Constants.OPENCENSUS_SCOPE}/${ + Constants.DEFAULT_PLUGIN_PACKAGE_NAME_PREFIX}-https`); }); - it('should tracing.tracer instance with logger', () => { - tracingStarted = tracing.start({logger: logger.logger('debug')}); - assert.ok(instanceOfLogger(tracingStarted.tracer.logger)); + + it('should start tracing with a non-default logLevel', () => { + aTracing = tracing.start({logLevel: 3}); + assert.strictEqual(tracing.config.logLevel, 3); + const consoleLogger = aTracing.tracer.logger as logger.ConsoleLogger; + assert.strictEqual(consoleLogger.level, 'info'); }); - it('should tracing.tracer instance with exporter', () => { - tracingStarted = tracing.start({exporter: NOOP_EXPORTER}); - assert.equal(tracingStarted.exporter, NOOP_EXPORTER); + + it('should start tracing with a logger instance', () => { + const aLogger = logger.logger('debug'); + aTracing = tracing.start({logger: aLogger}); + assert.strictEqual(tracing.config.logger, aLogger); + const consoleLogger = aTracing.tracer.logger as logger.ConsoleLogger; + assert.strictEqual(consoleLogger.level, 'debug'); + }); + + it('should start with an exporter instance', () => { + aTracing = tracing.start({exporter: NOOP_EXPORTER}); + assert.strictEqual(tracing.config.exporter, NOOP_EXPORTER); + assert.strictEqual(aTracing.exporter, NOOP_EXPORTER); + }); + + it('should start with a non-default bufferSize', () => { + const bufferSizeValue = defaultConfig.bufferSize + 1; + tracing.start({bufferSize: bufferSizeValue}); + assert.strictEqual(tracing.config.bufferSize, bufferSizeValue); + }); + + it('should start with a non-default bufferTimeout', () => { + const bufferTimeoutValue = defaultConfig.bufferTimeout + 100; + tracing.start({bufferTimeout: bufferTimeoutValue}); + assert.strictEqual(tracing.config.bufferTimeout, bufferTimeoutValue); + }); + + it('should start with a non-default maximumLabelValueSize', () => { + const maximumLabelValueSizeValue = + defaultConfig.maximumLabelValueSize + 10; + tracing.start({maximumLabelValueSize: maximumLabelValueSizeValue}); + assert.strictEqual( + tracing.config.maximumLabelValueSize, maximumLabelValueSizeValue); + }); + + it('should start with a non-default samplingRate', () => { + const samplingRateValue = defaultConfig.samplingRate / 100; + tracing.start({samplingRate: samplingRateValue}); + assert.strictEqual(tracing.config.samplingRate, samplingRateValue); + }); + + it('should start with an end-user plugin list', () => { + const endUserPlugins = { + 'http': 'enduser-http-pluging', + 'simple-module': 'enduser-simple-module-pluging' + }; + tracing.start({plugins: endUserPlugins}); + // should overwrite default http plugin + assert.strictEqual( + tracing.config.plugins['http'], endUserPlugins['http']); + // should add a new plugin + assert.strictEqual( + tracing.config.plugins['simple-module'], + endUserPlugins['simple-module']); + // should keep plugins default value + assert.strictEqual( + tracing.config.plugins['https'], + `${Constants.OPENCENSUS_SCOPE}/${ + Constants.DEFAULT_PLUGIN_PACKAGE_NAME_PREFIX}-https`); }); }); @@ -73,8 +160,13 @@ describe('Tracing', () => { it('should stop the tracing instance', () => { const tracing = new Tracing(); tracing.start(); + assert.ok(tracing.config); + assert.ok(tracing.tracer.active); tracing.stop(); + assert.ok(!tracing.config); assert.ok(!tracing.tracer.active); + assert.strictEqual(tracing.exporter, null); + assert.strictEqual(tracing.config, null); }); }); @@ -98,14 +190,14 @@ describe('Tracing', () => { }); }); - /** Should get the exporter instance */ + /** Should register the exporter instance */ describe('registerExporter()', () => { it('should register the exporter on tracer', () => { const tracing = new Tracing(); tracing.start(); - const exporter = tracing.exporter; + const exporter = NOOP_EXPORTER; tracing.registerExporter(exporter); - assert.equal(tracing.tracer.eventListeners.length, 2); + assert.strictEqual(tracing.config.exporter, exporter); }); }); -}); \ No newline at end of file +}); diff --git a/packages/opencensus-nodejs/tsconfig.json b/packages/opencensus-nodejs/tsconfig.json index fc69b49c7..938ccb39b 100644 --- a/packages/opencensus-nodejs/tsconfig.json +++ b/packages/opencensus-nodejs/tsconfig.json @@ -3,20 +3,16 @@ "compilerOptions": { "rootDir": ".", "outDir": "build", - "allowUnreachableCode": true, - "noUnusedParameters": false, - "noImplicitAny": false, - "noImplicitThis": false, - "noEmitOnError": false, "pretty": true, - "strict": false, "module": "commonjs", "target": "es6", + "strictNullChecks": false, "sourceMap": false }, "include": [ "src/**/*.ts", - "test/**/*.ts" + "test/**/*.ts", + "test/instrumentation/node_modules/**/*.ts" ], "exclude": [ "node_modules"