From 6e91f9c25d028620bbfa2e967f8253654212c276 Mon Sep 17 00:00:00 2001 From: Martin Probst Date: Wed, 23 Nov 2016 23:04:05 -0800 Subject: [PATCH 001/849] style: fix CI failure (#15429) --- src/Angular.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Angular.js b/src/Angular.js index 18672cc99e41..3ca6be3bb50c 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -1458,7 +1458,7 @@ function allowAutoBootstrap(document) { if (docLoadProtocol === scriptProtocol) { return true; } - switch(scriptProtocol) { + switch (scriptProtocol) { case 'http:': case 'https:': case 'ftp:': From d7cc863105f75d4bd67fab3c8c44cf6de6bf6dbc Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Thu, 24 Nov 2016 20:15:35 +0000 Subject: [PATCH 002/849] docs(CHANGELOG): add release notes for 1.5.9 --- CHANGELOG.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ca0691e7b94..4d5f8295b00c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,61 @@ + +# 1.5.9 timeturning-lockdown (2016-11-24) + +This is an interim release primarily to publish some security fixes, in particular a modification to +ensure that Angular 1 can pass the linter checks for Mozilla add-ons. + +## Security Fixes +- **bootstrap:** + - do not auto-bootstrap when loaded from an extension + ([6ce291](https://github.com/angular/angular.js/commit/6ce2913d99bb0dade6027ba9733295d0aa13b242)) + - explicitly whitelist URL schemes for bootstrap (#15427) + ([4edd2d](https://github.com/angular/angular.js/commit/4edd2d95c11819ece2dda6e65f95f32638fda218)) +- **$location:** throw if the path starts with double (back)slashes + ([353e3a](https://github.com/angular/angular.js/commit/353e3a6cd8b3a785b5f73a38236155621048522f)) +- **$sniffer:** don't use `history.pushState` in sandboxed Chrome Packaged Apps +([367da5](https://github.com/angular/angular.js/commit/367da583bc12e6f5f01edf757305409cf63fb1f4)) +- **$parse:** + - block assigning to fields of a constructor prototype + ([d7e31b](https://github.com/angular/angular.js/commit/d7e31b5dc71253edb22190a5850034934e7b778a) + [#14939](https://github.com/angular/angular.js/issues/14939)) + - correctly escape unsafe identifier characters + ([b01460](https://github.com/angular/angular.js/commit/b014607030835358ed7887e9fd1724cdada56690)) +- **$compile:** + - ensure that hidden input values are correct after history.back + ([6a2488](https://github.com/angular/angular.js/commit/6a24885771cf8c140b5d2895e92b321e60d86b55)) + - lower the $sce context for `src` on video, audio, source, track + ([68fb70](https://github.com/angular/angular.js/commit/68fb70ed295119d7b00c670d796c1b4186091adb)) + + +## New Features +- **input:** + - add support for binding to `input[range]` + ([2e7121](https://github.com/angular/angular.js/commit/2e7121b8e4dcac23f28e2375e775ca56b6baf252)) + - make support for `input[range]` opt-in + ([07b876](https://github.com/angular/angular.js/commit/07b8761233aaa3d719d94698296295e51c2a1077)) + - fix `step` validation for `input[number][ng-range-input]` + ([64f6a6](https://github.com/angular/angular.js/commit/64f6a616d401febc3f06309ed5a5efa46b131717) + [#15257](https://github.com/angular/angular.js/issues/15257)) +- **ngMock/$httpBackend:** flush requests in any order + ([098b6f](https://github.com/angular/angular.js/commit/098b6f519a53f6348127cd4ce09bca1423cbeb1a)) + + +## Bug Fixes +- **$httpBackend:** complete the request on timeout + ([549edc](https://github.com/angular/angular.js/commit/549edc9d0123d50657d5a03ba0c547cb0f91727f) + [#14969](https://github.com/angular/angular.js/issues/14969)) +- **ngOptions:** remove selected attribute from unselected options + ([d31b3a](https://github.com/angular/angular.js/commit/d31b3a65b65b73ab077026fc028ddf5b6232fba2) + [#14892](https://github.com/angular/angular.js/issues/14892)) + + +## Performance Improvements +- **$parse:** improve performance of assignment expressions + ([f83c3d](https://github.com/angular/angular.js/commit/f83c3dea23f910aed25dcf9b85fadf7f11a2a366)) +- **$compile:** add provider option to turn off compilation of css class and comment directives + ([775c24](https://github.com/angular/angular.js/commit/775c247085765e08845ae45ed19dd0120c61acc1)) + + # 1.6.0-rc.1 proximity-warning (2016-11-21) From dcfcf8189361fc1359583525ee48fce1fa2e9de1 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Thu, 24 Nov 2016 21:30:56 +0000 Subject: [PATCH 003/849] docs(CHANGELOG): add release notes for 1.6.0-rc.2 --- CHANGELOG.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d5f8295b00c..3e49578c3bb4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,25 @@ + + +# 1.6.0-rc.2 safety-insurance (2016-11-24) + + +## Security Fixes +- **bootstrap:** explicitly whitelist URL schemes for bootstrap. (#15427) + ([7f1b8b](https://github.com/angular/angular.js/commit/7f1b8bdfe1043871c5ead2ec602efc41e0de5e53)) + +## Bug Fixes +- **$sce:** fix `adjustMatcher` to replace multiple '*' and '**' + ([991a2b](https://github.com/angular/angular.js/commit/991a2b30e00aed1d312e29555e356a795f9e3d62)) + + +## Performance Improvements +- ***:** don't trigger digests after enter/leave of structural directives + ([f4fb6e](https://github.com/angular/angular.js/commit/f4fb6e0983a6a700dc4a246a913504550b55f1e9) + [#15322](https://github.com/angular/angular.js/issues/15322)) + + + + # 1.5.9 timeturning-lockdown (2016-11-24) From cdb9e08f4e3d1a78c3574545243579f69b88f655 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Thu, 24 Nov 2016 21:34:31 +0000 Subject: [PATCH 004/849] docs(CHANGELOG): add missing "closes" link --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e49578c3bb4..34fc484306a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ ([7f1b8b](https://github.com/angular/angular.js/commit/7f1b8bdfe1043871c5ead2ec602efc41e0de5e53)) ## Bug Fixes -- **$sce:** fix `adjustMatcher` to replace multiple '*' and '**' +- **$sce:** fix `adjustMatcher` to replace multiple '*' and '**' (#7897) ([991a2b](https://github.com/angular/angular.js/commit/991a2b30e00aed1d312e29555e356a795f9e3d62)) From 44f9ae61265ba1cdb2b5a3598b04c4ee4b5ba83a Mon Sep 17 00:00:00 2001 From: Georgios Kalpakas Date: Fri, 25 Nov 2016 10:44:12 +0200 Subject: [PATCH 005/849] docs(input[number]): fix typo --- src/ng/directive/input.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js index e90a689dfac3..6f21f002b0e1 100644 --- a/src/ng/directive/input.js +++ b/src/ng/directive/input.js @@ -688,7 +688,7 @@ var inputType = { * but does not trigger HTML5 native validation. Takes an expression. * @param {string=} step Sets the `step` validation error key if the value entered does not fit the `step` constraint. * Can be interpolated. - * @param {string=} ngStep Like `step`, sets the `max` validation error key if the value entered does not fit the `ngStep` constraint, + * @param {string=} ngStep Like `step`, sets the `step` validation error key if the value entered does not fit the `ngStep` constraint, * but does not trigger HTML5 native validation. Takes an expression. * @param {string=} required Sets `required` validation error key if the value is not entered. * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to From 4a320ab9f01ae32fdbbee35ea513e704529d0580 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Fri, 25 Nov 2016 09:59:00 +0000 Subject: [PATCH 006/849] docs(CHANGELOG): add missing feature to 1.6.0-rc.0 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34fc484306a6..fadc014fb1a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -86,7 +86,7 @@ ensure that Angular 1 can pass the linter checks for Mozilla add-ons. - **ngModelOptions:** allow options to be inherited from ancestor `ngModelOptions` ([296cfc](https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa) [#10922](https://github.com/angular/angular.js/issues/10922)) - **$compile:** set `preAssignBindingsEnabled` to false by default ([bcd0d4](https://github.com/angular/angular.js/commit/bcd0d4d896d0dfdd988ff4f849c1d40366125858) [#15352](https://github.com/angular/angular.js/issues/15352)) - +- **input[type=number]:** support `step` ([e1da4bed8](https://github.com/angular/angular.js/commit/e1da4bed8e291003d485a8ad346ab80bed8ae2e3) [#10597](https://github.com/angular/angular.js/issues/10597)) ## Bug Fixes From 9399d68d989108261892600bf1111ba6a837a479 Mon Sep 17 00:00:00 2001 From: Georgios Kalpakas Date: Fri, 25 Nov 2016 13:38:50 +0200 Subject: [PATCH 007/849] docs(*): document the breaking change introduced in e1da4be (#15434) Closes #15434 --- CHANGELOG.md | 39 +++++++++++++++++++++++++++--- docs/content/guide/migration.ngdoc | 33 +++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fadc014fb1a1..062624c701a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -86,7 +86,7 @@ ensure that Angular 1 can pass the linter checks for Mozilla add-ons. - **ngModelOptions:** allow options to be inherited from ancestor `ngModelOptions` ([296cfc](https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa) [#10922](https://github.com/angular/angular.js/issues/10922)) - **$compile:** set `preAssignBindingsEnabled` to false by default ([bcd0d4](https://github.com/angular/angular.js/commit/bcd0d4d896d0dfdd988ff4f849c1d40366125858) [#15352](https://github.com/angular/angular.js/issues/15352)) -- **input[type=number]:** support `step` ([e1da4bed8](https://github.com/angular/angular.js/commit/e1da4bed8e291003d485a8ad346ab80bed8ae2e3) [#10597](https://github.com/angular/angular.js/issues/10597)) + ## Bug Fixes @@ -270,12 +270,14 @@ Please read the [Sandbox Removal Blog Post](http://angularjs.blogspot.com/2016/0 - JSONP callback must be specified by `jsonpCallbackParam` config ([fb6634](https://github.com/angular/angular.js/commit/fb663418710736161a6b5da49c345e92edf58dcb) [#15161](https://github.com/angular/angular.js/issues/15161) [#11352](https://github.com/angular/angular.js/issues/11352)) - JSONP requests now require a trusted resource URL ([6476af](https://github.com/angular/angular.js/commit/6476af83cd0418c84e034a955b12a842794385c4) [#11352](https://github.com/angular/angular.js/issues/11352)) - **ngModelOptions:** allow options to be inherited from ancestor `ngModelOptions` ([87a2ff](https://github.com/angular/angular.js/commit/87a2ff76af5d0a9268d8eb84db5755077d27c84c) [#10922](https://github.com/angular/angular.js/issues/10922)) -- **input:** add support for binding to `input[type=range]` ([913016](https://github.com/angular/angular.js/commit/9130166767c4792c5d32d08a918fc7becf32c9a6) [#5892](https://github.com/angular/angular.js/issues/5892) [#14870](https://github.com/angular/angular.js/issues/14870)) +- **input:** + - add support for binding to `input[type=range]` ([913016](https://github.com/angular/angular.js/commit/9130166767c4792c5d32d08a918fc7becf32c9a6) [#5892](https://github.com/angular/angular.js/issues/5892) [#14870](https://github.com/angular/angular.js/issues/14870)) + - add support for `step` to `input[type=number]` ([e1da4be](https://github.com/angular/angular.js/commit/e1da4bed8e291003d485a8ad346ab80bed8ae2e3) [#10597](https://github.com/angular/angular.js/issues/10597)) + - allow `ngTrim` to work for `input[type=radio]` ([47724b](https://github.com/angular/angular.js/commit/47724baffe050269385b3481e9a9cf4ab3944b4b)) - **ngRoute:** allow `ngView` to be included in an asynchronously loaded template ([c13c66](https://github.com/angular/angular.js/commit/c13c666728c1a1485ef18e92d7cb35118ce39609) [#1213](https://github.com/angular/angular.js/issues/1213)) - **select:** support values of any type added with `ngValue` ([f02b70](https://github.com/angular/angular.js/commit/f02b707b5e4a5ffd1e1a20d910754cfabfc19622) [#9842](https://github.com/angular/angular.js/issues/9842)) - **$interpolate:** use custom `toString()` function if present ([a5fd2e](https://github.com/angular/angular.js/commit/a5fd2e4c0376676fa317e09a8d8be4966b82cbfe) [#7317](https://github.com/angular/angular.js/issues/7317) [#11406](https://github.com/angular/angular.js/issues/11406)) - **$route:** implement `resolveRedirectTo` ([e98656](https://github.com/angular/angular.js/commit/e9865654b39c71be71034c38581a8c7bd16bc716) [#5150](https://github.com/angular/angular.js/issues/5150)) -- **input[type=radio]:** allow `ngTrim` to work for `input[type=radio]` ([47724b](https://github.com/angular/angular.js/commit/47724baffe050269385b3481e9a9cf4ab3944b4b)) - **$q:** report promises with non rejection callback ([c9dffd](https://github.com/angular/angular.js/commit/c9dffde1cb167660120753181cb6d01dc1d1b3d0) [#13653](https://github.com/angular/angular.js/issues/13653) [#7992](https://github.com/angular/angular.js/issues/7992)) - **$location:** default hashPrefix to `'!'` ([aa077e](https://github.com/angular/angular.js/commit/aa077e81129c740041438688dff2e8d20c3d7b52) [#13812](https://github.com/angular/angular.js/issues/13812)) @@ -1286,6 +1288,37 @@ to a valid value, the input will in turn set the model to this new valid value v - browsers that do not support `input[type=range]` (IE9) handle the input like a number input (with validation etc.) +### `input[type=number]` due to: + +- **[e1da4be](https://github.com/angular/angular.js/commit/e1da4bed8e291003d485a8ad346ab80bed8ae2e3)**: add support for `step` to `input[type=number]` + +Number inputs that use `ngModel` and specify a `step` constraint (via `step`/`ngStep` attributes) +will now have a new validator (`step`), which will verify that the current value is valid under the +`step` constraint (according to the [spec](https://www.w3.org/TR/html5/forms.html#the-step-attribute)). +Previously, the `step` constraint was ignored by `ngModel`, treating values as valid even when there +was a step-mismatch. + +If you want to restore the previous behavior (use the `step` attribute while disabling step +validation), you can overwrite the built-in `step` validator with a custom directive. For example: + +```js +// For all `input` elements... +.directive('input', function() { + return { + restrict: 'E', + require: '?ngModel', + link: function (scope, elem, attrs, ngModelCtrl) { + // ...that are of type "number" and have `ngModel`... + if ((attrs.type === 'number') && ngModelCtrl) { + // ...remove the `step` validator. + delete ngModelCtrl.$validators.step; + } + } + }; +}) +``` + + # 1.4.13 croaking-elderweed (2016-10-10) diff --git a/docs/content/guide/migration.ngdoc b/docs/content/guide/migration.ngdoc index 3946d3b6dad2..d467a363953c 100644 --- a/docs/content/guide/migration.ngdoc +++ b/docs/content/guide/migration.ngdoc @@ -114,6 +114,7 @@ Below is the full list of breaking changes: - Core: - [Directives](guide/migration#migrate1.5to1.6-ng-directives) - [form](guide/migration#migrate1.5to1.6-ng-directives-form) + - [input[number]](guide/migration#migrate1.5to1.6-ng-directives-input[number]) - [input[radio]](guide/migration#migrate1.5to1.6-ng-directives-input[radio]) - [input[range]](guide/migration#migrate1.5to1.6-ng-directives-input[range]) - [ngBind](guide/migration#migrate1.5to1.6-ng-directives-ngBind) @@ -166,6 +167,38 @@ $scope.$watch('something', function() { or you can use `Function.prototype.bind` or `angular.bind`. + +#### **input[type=number]**: + + +**Due to [e1da4be](https://github.com/angular/angular.js/commit/e1da4bed8e291003d485a8ad346ab80bed8ae2e3)**, +number inputs that use `ngModel` and specify a `step` constraint (via `step`/`ngStep` attributes) +will now have a new validator (`step`), which will verify that the current value is valid under the +`step` constraint (according to the [spec](https://www.w3.org/TR/html5/forms.html#the-step-attribute)). +Previously, the `step` constraint was ignored by `ngModel`, treating values as valid even when there +was a step-mismatch. + +If you want to restore the previous behavior (use the `step` attribute while disabling step +validation), you can overwrite the built-in `step` validator with a custom directive. For example: + +```js +// For all `input` elements... +.directive('input', function() { + return { + restrict: 'E', + require: '?ngModel', + link: function (scope, elem, attrs, ngModelCtrl) { + // ...that are of type "number" and have `ngModel`... + if ((attrs.type === 'number') && ngModelCtrl) { + // ...remove the `step` validator. + delete ngModelCtrl.$validators.step; + } + } + }; +}) +``` + + #### **input[type=radio]**: From 04cbe1e74f6d5cc5e0f12fce63ec8643fe306908 Mon Sep 17 00:00:00 2001 From: Wesley Cho Date: Sun, 27 Nov 2016 00:00:10 -0800 Subject: [PATCH 008/849] refactor($q): replace occurrences of `.when()` with `.resolve()` Related to #13709. Closes #15442 --- docs/app/src/examples.js | 2 +- docs/content/guide/component-router.ngdoc | 10 +++++----- docs/content/guide/forms.ngdoc | 2 +- src/ng/http.js | 2 +- test/ng/httpSpec.js | 4 ++-- test/ngAnimate/animationSpec.js | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/app/src/examples.js b/docs/app/src/examples.js index fca74d9fc21a..b888db3b087d 100644 --- a/docs/app/src/examples.js +++ b/docs/app/src/examples.js @@ -114,7 +114,7 @@ angular.module('examples', []) ctrl.prepareExampleData = function() { if (ctrl.example.manifest) { - return $q.when(ctrl.example); + return $q.resolve(ctrl.example); } return getExampleData(ctrl.examplePath).then(function(data) { diff --git a/docs/content/guide/component-router.ngdoc b/docs/content/guide/component-router.ngdoc index eccc56ae86c6..b11a7fecbc57 100644 --- a/docs/content/guide/component-router.ngdoc +++ b/docs/content/guide/component-router.ngdoc @@ -215,7 +215,7 @@ You can see the complete application running below. function HeroService($q) { - var heroesPromise = $q.when([ + var heroesPromise = $q.resolve([ { id: 11, name: 'Mr. Nice' }, { id: 12, name: 'Narco' }, { id: 13, name: 'Bombasto' }, @@ -308,7 +308,7 @@ You can see the complete application running below. function CrisisService($q) { - var crisesPromise = $q.when([ + var crisesPromise = $q.resolve([ {id: 1, name: 'Princess Held Captive'}, {id: 2, name: 'Dragon Burning Cities'}, {id: 3, name: 'Giant Asteroid Heading For Earth'}, @@ -415,7 +415,7 @@ You can see the complete application running below. function DialogService($q) { this.confirm = function(message) { - return $q.when(window.confirm(message || 'Is it OK?')); + return $q.resolve(window.confirm(message || 'Is it OK?')); }; } @@ -714,7 +714,7 @@ making an actual server request, perhaps over HTTP. ```js function HeroService($q) { - var heroesPromise = $q.when([ + var heroesPromise = $q.resolve([ { id: 11, name: 'Mr. Nice' }, ... ]); @@ -991,7 +991,7 @@ have made. The result of the prompt is a promise that can be used in a `$routerC function DialogService($q) { this.confirm = function(message) { - return $q.when(window.confirm(message || 'Is it OK?')); + return $q.resolve(window.confirm(message || 'Is it OK?')); }; } ``` diff --git a/docs/content/guide/forms.ngdoc b/docs/content/guide/forms.ngdoc index 5c779b396c73..384f5bdfe7a0 100644 --- a/docs/content/guide/forms.ngdoc +++ b/docs/content/guide/forms.ngdoc @@ -396,7 +396,7 @@ In the following example we create two directives: if (ctrl.$isEmpty(modelValue)) { // consider empty model valid - return $q.when(); + return $q.resolve(); } var def = $q.defer(); diff --git a/src/ng/http.js b/src/ng/http.js index 379db86a6146..1ca95cecb027 100644 --- a/src/ng/http.js +++ b/src/ng/http.js @@ -946,7 +946,7 @@ function $HttpProvider() { var requestInterceptors = []; var responseInterceptors = []; - var promise = $q.when(config); + var promise = $q.resolve(config); // apply interceptors forEach(reversedInterceptors, function(interceptor) { diff --git a/test/ng/httpSpec.js b/test/ng/httpSpec.js index 06889b361666..ae0137943758 100644 --- a/test/ng/httpSpec.js +++ b/test/ng/httpSpec.js @@ -58,7 +58,7 @@ describe('$http', function() { return { requestError: function(error) { savedConfig.url += error; - return $q.when(savedConfig); + return $q.resolve(savedConfig); } }; }); @@ -269,7 +269,7 @@ describe('$http', function() { $provide.factory('myInterceptor', function($q, $rootScope) { return { request: function(config) { - return $q.when('/intercepted').then(function(intercepted) { + return $q.resolve('/intercepted').then(function(intercepted) { config.url = intercepted; return config; }); diff --git a/test/ngAnimate/animationSpec.js b/test/ngAnimate/animationSpec.js index cb3f88fedbd6..cab771308fd3 100644 --- a/test/ngAnimate/animationSpec.js +++ b/test/ngAnimate/animationSpec.js @@ -976,7 +976,7 @@ describe('$$animation', function() { $$animationProvider.drivers[0] = 'dumbDriver'; $provide.factory('dumbDriver', function($q) { return function stepFn() { - return $q.when(true); + return $q.resolve(true); }; }); }); From c625b0d5680b1ee3e921f5cee18c466bc5733329 Mon Sep 17 00:00:00 2001 From: Georgios Kalpakas Date: Sat, 26 Nov 2016 23:09:04 +0200 Subject: [PATCH 009/849] chore(docs): use correct script-URL for plnkr on snapshot Fixes #15437 Closes #15438 --- docs/config/services/deployments/production.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/config/services/deployments/production.js b/docs/config/services/deployments/production.js index 2e090bf3d5a9..747e7a1016bd 100644 --- a/docs/config/services/deployments/production.js +++ b/docs/config/services/deployments/production.js @@ -13,9 +13,9 @@ var cdnUrl = googleCdnUrl + versionInfo.cdnVersion; // The currentVersion may not be available on the cdn (e.g. if built locally, or hasn't been pushed // yet). This will lead to a 404, but this is preferable to loading a version with which the example // might not work (possibly in subtle ways). -var examplesCdnUrl = versionInfo.isSnapshot ? +var examplesCdnUrl = versionInfo.currentVersion.isSnapshot ? (angularCodeUrl + 'snapshot') : - (googleCdnUrl + (versionInfo.version || versionInfo.currentVersion)); + (googleCdnUrl + (versionInfo.currentVersion.version || versionInfo.currentVersion)); module.exports = function productionDeployment(getVersion) { return { From 4059600d205a2cabef901d4fbf4184cd91ba0db0 Mon Sep 17 00:00:00 2001 From: Wesley Cho Date: Sat, 26 Nov 2016 23:46:25 -0800 Subject: [PATCH 010/849] docs(*): add deprecation notice for `angular.lowercase/uppercase` Closes #15441 Closes #14316 --- CHANGELOG.md | 2 ++ docs/content/guide/migration.ngdoc | 5 +++++ src/Angular.js | 32 ++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 062624c701a4..adf609f08382 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2028,6 +2028,8 @@ This version of AngularJS is problematic due to a issue during its release. Plea - The `ngTouch` module's `ngClick` directive has been deprecated and disabled by default. See the breaking changes section for more information +- The `angular.lowercase` and `angular.uppercase` functions have been deprecated and will be removed +in version 1.7.0. It is recommended to use [String.prototype.toLowerCase](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase) and [String.prototype.toUpperCase](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) functions instead. ## Bug Fixes diff --git a/docs/content/guide/migration.ngdoc b/docs/content/guide/migration.ngdoc index d467a363953c..d140fe809186 100644 --- a/docs/content/guide/migration.ngdoc +++ b/docs/content/guide/migration.ngdoc @@ -1274,6 +1274,11 @@ and was not consistent with other filters (e.g. `filter`). Objects considered array-like include: arrays, array subclasses, strings, NodeLists, jqLite/jQuery collections +#### Helper Functions: + +The {@link angular.lowercase `angular.lowercase`} and {@link angular.uppercase `angular.uppercase`} functions have been **deprecated** and will be removed +in version 1.7.0. It is recommended to use [String.prototype.toLowerCase](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase) and [String.prototype.toUpperCase](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) functions instead. + ### ngAria diff --git a/src/Angular.js b/src/Angular.js index 3ca6be3bb50c..97b061eafc00 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -122,9 +122,41 @@ var REGEX_STRING_REGEXP = /^\/(.+)\/([a-z]*)$/; // This is used so that it's possible for internal tests to create mock ValidityStates. var VALIDITY_STATE_PROPERTY = 'validity'; + var hasOwnProperty = Object.prototype.hasOwnProperty; +/** + * @ngdoc function + * @name angular.lowercase + * @module ng + * @kind function + * + * @deprecated + * sinceVersion="1.5.0" + * removeVersion="1.7.0" + * Use [String.prototype.toLowerCase](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase) instead. + * + * @description Converts the specified string to lowercase. + * @param {string} string String to be converted to lowercase. + * @returns {string} Lowercased string. + */ var lowercase = function(string) {return isString(string) ? string.toLowerCase() : string;}; + +/** + * @ngdoc function + * @name angular.uppercase + * @module ng + * @kind function + * + * @deprecated + * sinceVersion="1.5.0" + * removeVersion="1.7.0" + * Use [String.prototype.toUpperCase](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) instead. + * + * @description Converts the specified string to uppercase. + * @param {string} string String to be converted to uppercase. + * @returns {string} Uppercased string. + */ var uppercase = function(string) {return isString(string) ? string.toUpperCase() : string;}; From 9f61e74be366eccf2c744322b591524eff82facc Mon Sep 17 00:00:00 2001 From: Wesley Cho Date: Sat, 26 Nov 2016 23:35:12 -0800 Subject: [PATCH 011/849] docs($rootScope): add note about watching File objects - Add note recommending against watching `File` objects with deep watchers Closes #15440 --- src/ng/rootScope.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ng/rootScope.js b/src/ng/rootScope.js index e3d332afefbd..e26442f2fa56 100644 --- a/src/ng/rootScope.js +++ b/src/ng/rootScope.js @@ -297,6 +297,8 @@ function $RootScopeProvider() { * according to the {@link angular.equals} function. To save the value of the object for * later comparison, the {@link angular.copy} function is used. This therefore means that * watching complex objects will have adverse memory and performance implications. + * - This should not be used to watch for changes in objects that are + * or contain [File](https://developer.mozilla.org/docs/Web/API/File) objects due to limitations with {@link angular.copy `angular.copy`}. * - The watch `listener` may change the model, which may trigger other `listener`s to fire. * This is achieved by rerunning the watchers until no changes are detected. The rerun * iteration limit is 10 to prevent an infinite loop deadlock. From d1e4f5728c1e9bbd67f683ed4909e39df8d2f774 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Mon, 28 Nov 2016 18:57:32 +0100 Subject: [PATCH 012/849] chore(docs-app): improve deprecation box layout Deprecated boxes for APIs appear right under the header and were missing a bit of margin. Boxes for methods still look good even with the additional margin. --- docs/app/assets/css/docs.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/app/assets/css/docs.css b/docs/app/assets/css/docs.css index 839f6863741c..c6d77c00ed96 100644 --- a/docs/app/assets/css/docs.css +++ b/docs/app/assets/css/docs.css @@ -662,6 +662,10 @@ ul.events > li { max-width: 100%; } +.deprecation { + margin-top: 15px; +} + .deprecation .title { float: left; margin-right: 5px; From 05c3336f92c2a9b92e6d4c23c077f33c01f03806 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Tue, 29 Nov 2016 13:16:30 +0000 Subject: [PATCH 013/849] chore(dependencies): USE YARN (and node 6) --- .nvmrc | 3 +- .travis.yml | 17 +- Gruntfile.js | 10 +- changelog.js | 208 - changelog.spec.js | 108 - check-size.sh | 2 +- docs/config/processors/versions-data.js | 6 +- i18n/generate.sh | 9 +- lib/grunt/plugins.js | 2 +- npm-shrinkwrap.clean.json | 10243 -------------- npm-shrinkwrap.json | 15811 ---------------------- package.json | 7 +- scripts/bower/publish.sh | 8 +- scripts/jenkins/build.sh | 15 +- scripts/jenkins/init-node.sh | 17 + scripts/jenkins/release.sh | 7 +- scripts/jenkins/set-node-version.sh | 7 - scripts/npm/check-node-modules.js | 75 - scripts/npm/clean-shrinkwrap.js | 40 - scripts/npm/copy-npm-shrinkwrap.js | 60 - scripts/travis/before_build.sh | 4 +- scripts/travis/build.sh | 12 +- yarn.lock | 6790 ++++++++++ 23 files changed, 6849 insertions(+), 26612 deletions(-) delete mode 100755 changelog.js delete mode 100644 changelog.spec.js delete mode 100644 npm-shrinkwrap.clean.json delete mode 100644 npm-shrinkwrap.json create mode 100755 scripts/jenkins/init-node.sh delete mode 100755 scripts/jenkins/set-node-version.sh delete mode 100644 scripts/npm/check-node-modules.js delete mode 100755 scripts/npm/clean-shrinkwrap.js delete mode 100644 scripts/npm/copy-npm-shrinkwrap.js create mode 100644 yarn.lock diff --git a/.nvmrc b/.nvmrc index 733787ea0329..1e8b31496214 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1,2 +1 @@ -4 - +6 diff --git a/.travis.yml b/.travis.yml index 9ee4ad333cfe..e51e815aa7c4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: node_js sudo: false node_js: - - '4.4' + - '6' cache: directories: @@ -36,19 +36,12 @@ addons: packages: - g++-4.8 -install: - # Check the size of caches - - du -sh ./node_modules ./bower_components/ ./docs/bower_components/ || true - # - npm config set registry http://23.251.144.68 - # Disable the spinner, it looks bad on Travis - - npm config set spin false - # Log HTTP requests - - npm config set loglevel http - #- npm install -g npm@2.5 - # Install npm dependencies and ensure that npm cache is not stale - - npm install +before_install: + - curl -o- -L https://raw.githubusercontent.com/yarnpkg/yarn/2a0afc73210c7a82082585283e518eeb88ca19ae/scripts/install-latest.sh | bash -s -- --version 0.17.9 + - export PATH=$HOME/.yarn/bin:$PATH before_script: + - du -sh ./node_modules ./bower_components/ ./docs/bower_components/ || true - ./scripts/travis/before_build.sh script: diff --git a/Gruntfile.js b/Gruntfile.js index 032039096aea..10f0ce034b5b 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -292,10 +292,9 @@ module.exports = function(grunt) { }, shell: { - 'npm-install': { - command: 'node scripts/npm/check-node-modules.js' + 'install-node-dependencies': { + command: 'yarn' }, - 'promises-aplus-tests': { options: { stdout: false, @@ -322,13 +321,10 @@ module.exports = function(grunt) { } }); - // global beforeEach task if (!process.env.TRAVIS) { - grunt.task.run('shell:npm-install'); + grunt.task.run('shell:install-node-dependencies'); } - - //alias tasks grunt.registerTask('test', 'Run unit, docs and e2e tests with Karma', ['eslint', 'package', 'test:unit', 'test:promises-aplus', 'tests:docs', 'test:protractor']); grunt.registerTask('test:jqlite', 'Run the unit tests with Karma' , ['tests:jqlite']); diff --git a/changelog.js b/changelog.js deleted file mode 100755 index ccaae08d9df3..000000000000 --- a/changelog.js +++ /dev/null @@ -1,208 +0,0 @@ -#!/usr/bin/env node - -// TODO(vojta): pre-commit hook for validating messages -// TODO(vojta): report errors, currently Q silence everything which really sucks - -'use strict'; - -var child = require('child_process'); -var fs = require('fs'); -var util = require('util'); -var q = require('qq'); - -var GIT_LOG_CMD = 'git log --grep="%s" -E --format=%s %s..HEAD'; -var GIT_TAG_CMD = 'git describe --tags --abbrev=0'; - -var HEADER_TPL = '\n# %s (%s)\n\n'; -var LINK_ISSUE = '[#%s](https://github.com/angular/angular.js/issues/%s)'; -var LINK_COMMIT = '[%s](https://github.com/angular/angular.js/commit/%s)'; - -var EMPTY_COMPONENT = '$$'; - - -var warn = function() { - console.log('WARNING:', util.format.apply(null, arguments)); -}; - - -var parseRawCommit = function(raw) { - if (!raw) return null; - - var lines = raw.split('\n'); - var msg = {}, match; - - msg.hash = lines.shift(); - msg.subject = lines.shift(); - msg.closes = []; - msg.breaks = []; - - lines.forEach(function(line) { - match = line.match(/(?:Closes|Fixes)\s#(\d+)/); - if (match) msg.closes.push(parseInt(match[1], 10)); - }); - - match = raw.match(/BREAKING CHANGE:([\s\S]*)/); - if (match) { - msg.breaking = match[1]; - } - - - msg.body = lines.join('\n'); - match = msg.subject.match(/^(.*)\((.*)\):\s(.*)$/); - - if (!match || !match[1] || !match[3]) { - warn('Incorrect message: %s %s', msg.hash, msg.subject); - return null; - } - - msg.type = match[1]; - msg.component = match[2]; - msg.subject = match[3]; - - return msg; -}; - - -var linkToIssue = function(issue) { - return util.format(LINK_ISSUE, issue, issue); -}; - - -var linkToCommit = function(hash) { - return util.format(LINK_COMMIT, hash.substr(0, 8), hash); -}; - - -var currentDate = function() { - var now = new Date(); - var pad = function(i) { - return ('0' + i).substr(-2); - }; - - return util.format('%d-%s-%s', now.getFullYear(), pad(now.getMonth() + 1), pad(now.getDate())); -}; - - -var printSection = function(stream, title, section, printCommitLinks) { - printCommitLinks = printCommitLinks === undefined ? true : printCommitLinks; - var components = Object.getOwnPropertyNames(section).sort(); - - if (!components.length) return; - - stream.write(util.format('\n## %s\n\n', title)); - - components.forEach(function(name) { - var prefix = '-'; - var nested = section[name].length > 1; - - if (name !== EMPTY_COMPONENT) { - if (nested) { - stream.write(util.format('- **%s:**\n', name)); - prefix = ' -'; - } else { - prefix = util.format('- **%s:**', name); - } - } - - section[name].forEach(function(commit) { - if (printCommitLinks) { - stream.write(util.format('%s %s\n (%s', prefix, commit.subject, linkToCommit(commit.hash))); - if (commit.closes.length) { - stream.write(',\n ' + commit.closes.map(linkToIssue).join(', ')); - } - stream.write(')\n'); - } else { - stream.write(util.format('%s %s\n', prefix, commit.subject)); - } - }); - }); - - stream.write('\n'); -}; - - -var readGitLog = function(grep, from) { - var deferred = q.defer(); - - // TODO(vojta): if it's slow, use spawn and stream it instead - child.exec(util.format(GIT_LOG_CMD, grep, '%H%n%s%n%b%n==END==', from), function(code, stdout, stderr) { - var commits = []; - - stdout.split('\n==END==\n').forEach(function(rawCommit) { - var commit = parseRawCommit(rawCommit); - if (commit) commits.push(commit); - }); - - deferred.resolve(commits); - }); - - return deferred.promise; -}; - - -var writeChangelog = function(stream, commits, version) { - var sections = { - fix: {}, - feat: {}, - perf: {}, - breaks: {} - }; - - commits.forEach(function(commit) { - var section = sections[commit.type]; - var component = commit.component || EMPTY_COMPONENT; - - if (section) { - section[component] = section[component] || []; - section[component].push(commit); - } - - if (commit.breaking) { - sections.breaks[component] = sections.breaks[component] || []; - sections.breaks[component].push({ - subject: util.format('due to %s,\n %s', linkToCommit(commit.hash), commit.breaking), - hash: commit.hash, - closes: [] - }); - } - }); - - stream.write(util.format(HEADER_TPL, version, version, currentDate())); - printSection(stream, 'Bug Fixes', sections.fix); - printSection(stream, 'Features', sections.feat); - printSection(stream, 'Performance Improvements', sections.perf); - printSection(stream, 'Breaking Changes', sections.breaks, false); -}; - - -var getPreviousTag = function() { - var deferred = q.defer(); - child.exec(GIT_TAG_CMD, function(code, stdout, stderr) { - if (code) deferred.reject('Cannot get the previous tag.'); - else deferred.resolve(stdout.replace('\n', '')); - }); - return deferred.promise; -}; - - -var generate = function(version, file) { - - getPreviousTag().then(function(tag) { - console.log('Reading git log since', tag); - readGitLog('^fix|^feat|^perf|BREAKING', tag).then(function(commits) { - console.log('Parsed', commits.length, 'commits'); - console.log('Generating changelog to', file || 'stdout', '(', version, ')'); - writeChangelog(file ? fs.createWriteStream(file) : process.stdout, commits, version); - }); - }); -}; - - -// publish for testing -exports.parseRawCommit = parseRawCommit; -exports.printSection = printSection; - -// hacky start if not run by jasmine :-D -if (process.argv.join('').indexOf('jasmine-node') === -1) { - generate(process.argv[2], process.argv[3]); -} diff --git a/changelog.spec.js b/changelog.spec.js deleted file mode 100644 index b3b46ef5515c..000000000000 --- a/changelog.spec.js +++ /dev/null @@ -1,108 +0,0 @@ -/* global describe: false, beforeEach: false, afterEach: false, it: false, expect: false */ - -'use strict'; - -describe('changelog.js', function() { - var ch = require('./changelog'); - - describe('parseRawCommit', function() { - it('should parse raw commit', function() { - var msg = ch.parseRawCommit( - '9b1aff905b638aa274a5fc8f88662df446d374bd\n' + - 'feat(scope): broadcast $destroy event on scope destruction\n' + - 'perf testing shows that in chrome this change adds 5-15% overhead\n' + - 'when destroying 10k nested scopes where each scope has a $destroy listener\n'); - - expect(msg.type).toBe('feat'); - expect(msg.hash).toBe('9b1aff905b638aa274a5fc8f88662df446d374bd'); - expect(msg.subject).toBe('broadcast $destroy event on scope destruction'); - expect(msg.body).toBe('perf testing shows that in chrome this change adds 5-15% overhead\n' + - 'when destroying 10k nested scopes where each scope has a $destroy listener\n'); - expect(msg.component).toBe('scope'); - }); - - - it('should parse closed issues', function() { - var msg = ch.parseRawCommit( - '13f31602f396bc269076ab4d389cfd8ca94b20ba\n' + - 'feat(ng-list): Allow custom separator\n' + - 'bla bla bla\n\n' + - 'Closes #123\nCloses #25\n'); - - expect(msg.closes).toEqual([123, 25]); - }); - - - it('should parse breaking changes', function() { - var msg = ch.parseRawCommit( - '13f31602f396bc269076ab4d389cfd8ca94b20ba\n' + - 'feat(ng-list): Allow custom separator\n' + - 'bla bla bla\n\n' + - 'BREAKING CHANGE: first breaking change\nsomething else\n' + - 'another line with more info\n'); - - expect(msg.breaking).toEqual(' first breaking change\nsomething else\nanother line with more info\n'); - }); - }); - - describe('printSection', function() { - var output; - var streamMock = { - write: function(str) { - output += str; - } - }; - - beforeEach(function() { - output = ''; - }); - - it('should add a new line at the end of each breaking change list item ' + - 'when there is 1 item per component', function() { - var title = 'test'; - var printCommitLinks = false; - - var section = { - module1: [{subject: 'breaking change 1'}], - module2: [{subject: 'breaking change 2'}] - }; - var expectedOutput = - '\n## test\n\n' + - '- **module1:** breaking change 1\n' + - '- **module2:** breaking change 2\n' + - '\n'; - - ch.printSection(streamMock, title, section, printCommitLinks); - expect(output).toBe(expectedOutput); - }); - - it('should add a new line at the end of each breaking change list item ' + - 'when there are multiple items per component', function() { - var title = 'test'; - var printCommitLinks = false; - - var section = { - module1: [ - {subject: 'breaking change 1.1'}, - {subject: 'breaking change 1.2'} - ], - module2: [ - {subject: 'breaking change 2.1'}, - {subject: 'breaking change 2.2'} - ] - }; - var expectedOutput = - '\n## test\n\n' + - '- **module1:**\n' + - ' - breaking change 1.1\n' + - ' - breaking change 1.2\n' + - '- **module2:**\n' + - ' - breaking change 2.1\n' + - ' - breaking change 2.2\n' + - '\n'; - - ch.printSection(streamMock, title, section, printCommitLinks); - expect(output).toBe(expectedOutput); - }); - }); -}); diff --git a/check-size.sh b/check-size.sh index 636092ffb92b..327e5e170999 100755 --- a/check-size.sh +++ b/check-size.sh @@ -1,5 +1,5 @@ #!/bin/bash -grunt minify +node_modules/.bin/grunt minify gzip -c < build/angular.min.js > build/angular.min.js.gzip ls -l build/angular.min.* diff --git a/docs/config/processors/versions-data.js b/docs/config/processors/versions-data.js index 8b8d0fd52d36..4e0d3aeffb47 100644 --- a/docs/config/processors/versions-data.js +++ b/docs/config/processors/versions-data.js @@ -13,14 +13,14 @@ module.exports = function generateVersionDocProcessor(gitData) { return { $runAfter: ['generatePagesDataProcessor'], $runBefore: ['rendering-docs'], - // the blacklist is to remove rogue builds that are in npm but not on code.angularjs.org + // the blacklist is to remove rogue builds that are in the npm repository but not on code.angularjs.org blacklist: ['1.3.4-build.3588'], $process: function(docs) { var blacklist = this.blacklist; var currentVersion = require('../../../build/version.json'); - var output = exec('npm info angular versions --json', { silent: true }).stdout; - var allVersions = processAllVersionsResponse(JSON.parse(output)); + var output = exec('yarn info angular versions --json', { silent: true }).stdout.split('\n')[0]; + var allVersions = processAllVersionsResponse(JSON.parse(output).data); docs.push({ docType: 'current-version-data', diff --git a/i18n/generate.sh b/i18n/generate.sh index b92a28da8c36..255020ea9b12 100755 --- a/i18n/generate.sh +++ b/i18n/generate.sh @@ -3,14 +3,13 @@ set -e BASE_DIR=`dirname $0` -cd $BASE_DIR -npm run test-i18n +yarn run test-i18n -node src/closureSlurper.js +node $BASE_DIR/src/closureSlurper.js -npm run test-i18n-ucd +yarn run test-i18n-ucd echo "Generating ngParseExt" -node ucd/src/extract.js +node $BASE_DIR/ucd/src/extract.js diff --git a/lib/grunt/plugins.js b/lib/grunt/plugins.js index 14cdecd300ce..6de60d0b282d 100644 --- a/lib/grunt/plugins.js +++ b/lib/grunt/plugins.js @@ -39,7 +39,7 @@ module.exports = function(grunt) { grunt.registerTask('docs', 'create angular docs', function() { - var gruntProc = shelljs.exec('npm run gulp -- --gulpfile docs/gulpfile.js'); + var gruntProc = shelljs.exec('yarn run gulp -- --gulpfile docs/gulpfile.js'); if (gruntProc.code !== 0) { throw new Error('doc generation failed'); } diff --git a/npm-shrinkwrap.clean.json b/npm-shrinkwrap.clean.json deleted file mode 100644 index f0284fd78927..000000000000 --- a/npm-shrinkwrap.clean.json +++ /dev/null @@ -1,10243 +0,0 @@ -{ - "dependencies": { - "angular-benchpress": { - "version": "0.2.2", - "dependencies": { - "bootstrap": { - "version": "3.3.6" - }, - "express": { - "version": "4.14.0", - "dependencies": { - "accepts": { - "version": "1.3.3", - "dependencies": { - "mime-types": { - "version": "2.1.11", - "dependencies": { - "mime-db": { - "version": "1.23.0" - } - } - }, - "negotiator": { - "version": "0.6.1" - } - } - }, - "array-flatten": { - "version": "1.1.1" - }, - "content-disposition": { - "version": "0.5.1" - }, - "content-type": { - "version": "1.0.2" - }, - "cookie": { - "version": "0.3.1" - }, - "cookie-signature": { - "version": "1.0.6" - }, - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - }, - "depd": { - "version": "1.1.0" - }, - "encodeurl": { - "version": "1.0.1" - }, - "escape-html": { - "version": "1.0.3" - }, - "etag": { - "version": "1.7.0" - }, - "finalhandler": { - "version": "0.5.0", - "dependencies": { - "statuses": { - "version": "1.3.0" - }, - "unpipe": { - "version": "1.0.0" - } - } - }, - "fresh": { - "version": "0.3.0" - }, - "merge-descriptors": { - "version": "1.0.1" - }, - "methods": { - "version": "1.1.2" - }, - "on-finished": { - "version": "2.3.0", - "dependencies": { - "ee-first": { - "version": "1.1.1" - } - } - }, - "parseurl": { - "version": "1.3.1" - }, - "path-to-regexp": { - "version": "0.1.7" - }, - "proxy-addr": { - "version": "1.1.2", - "dependencies": { - "forwarded": { - "version": "0.1.0" - }, - "ipaddr.js": { - "version": "1.1.1" - } - } - }, - "qs": { - "version": "6.2.0" - }, - "range-parser": { - "version": "1.2.0" - }, - "send": { - "version": "0.14.1", - "dependencies": { - "destroy": { - "version": "1.0.4" - }, - "http-errors": { - "version": "1.5.0", - "dependencies": { - "inherits": { - "version": "2.0.1" - }, - "setprototypeof": { - "version": "1.0.1" - } - } - }, - "mime": { - "version": "1.3.4" - }, - "ms": { - "version": "0.7.1" - }, - "statuses": { - "version": "1.3.0" - } - } - }, - "type-is": { - "version": "1.6.13", - "dependencies": { - "media-typer": { - "version": "0.3.0" - }, - "mime-types": { - "version": "2.1.11", - "dependencies": { - "mime-db": { - "version": "1.23.0" - } - } - } - } - }, - "utils-merge": { - "version": "1.0.0" - }, - "vary": { - "version": "1.1.0" - } - } - }, - "minimist": { - "version": "1.2.0" - }, - "mkdirp": { - "version": "0.5.1", - "dependencies": { - "minimist": { - "version": "0.0.8" - } - } - }, - "rimraf": { - "version": "2.5.3", - "dependencies": { - "glob": { - "version": "7.0.5", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.5", - "dependencies": { - "balanced-match": { - "version": "0.4.1" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - } - } - }, - "underscore": { - "version": "1.8.3" - }, - "di": { - "version": "2.0.0-pre-9", - "dependencies": { - "traceur": { - "version": "0.0.33", - "resolved": "git://github.com/vojtajina/traceur-compiler.git#d90b1e34c799bf61cd1aafdc33db0a554fa9e617", - "dependencies": { - "commander": { - "version": "2.9.0", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1" - } - } - }, - "q-io": { - "version": "1.10.9", - "dependencies": { - "q": { - "version": "0.9.7" - }, - "qs": { - "version": "0.1.0" - }, - "url2": { - "version": "0.0.0" - }, - "mime": { - "version": "1.2.11" - }, - "mimeparse": { - "version": "0.1.4" - }, - "collections": { - "version": "0.2.2", - "dependencies": { - "weak-map": { - "version": "1.0.0" - } - } - } - } - } - } - }, - "es6-shim": { - "version": "0.9.3" - } - } - }, - "rx": { - "version": "2.3.25" - }, - "browserify": { - "version": "7.0.3", - "dependencies": { - "JSONStream": { - "version": "0.8.4", - "dependencies": { - "jsonparse": { - "version": "0.0.5" - }, - "through": { - "version": "2.3.8" - } - } - }, - "assert": { - "version": "1.1.2" - }, - "browser-pack": { - "version": "3.2.0", - "dependencies": { - "combine-source-map": { - "version": "0.3.0", - "dependencies": { - "inline-source-map": { - "version": "0.3.1", - "dependencies": { - "source-map": { - "version": "0.3.0", - "dependencies": { - "amdefine": { - "version": "1.0.0" - } - } - } - } - }, - "convert-source-map": { - "version": "0.3.5" - }, - "source-map": { - "version": "0.1.43", - "dependencies": { - "amdefine": { - "version": "1.0.0" - } - } - } - } - }, - "through2": { - "version": "0.5.1", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - } - } - } - } - } - } - }, - "browser-resolve": { - "version": "1.11.2", - "dependencies": { - "resolve": { - "version": "1.1.7" - } - } - }, - "browserify-zlib": { - "version": "0.1.4", - "dependencies": { - "pako": { - "version": "0.2.8" - } - } - }, - "buffer": { - "version": "2.8.2", - "dependencies": { - "base64-js": { - "version": "0.0.7" - }, - "ieee754": { - "version": "1.1.6" - }, - "is-array": { - "version": "1.0.1" - } - } - }, - "builtins": { - "version": "0.0.7" - }, - "commondir": { - "version": "0.0.1" - }, - "concat-stream": { - "version": "1.4.10", - "dependencies": { - "typedarray": { - "version": "0.0.6" - } - } - }, - "console-browserify": { - "version": "1.1.0", - "dependencies": { - "date-now": { - "version": "0.1.4" - } - } - }, - "constants-browserify": { - "version": "0.0.1" - }, - "crypto-browserify": { - "version": "3.11.0", - "dependencies": { - "browserify-cipher": { - "version": "1.0.0", - "dependencies": { - "browserify-aes": { - "version": "1.0.6", - "dependencies": { - "buffer-xor": { - "version": "1.0.3" - }, - "cipher-base": { - "version": "1.0.2" - } - } - }, - "browserify-des": { - "version": "1.0.0", - "dependencies": { - "cipher-base": { - "version": "1.0.2" - }, - "des.js": { - "version": "1.0.0", - "dependencies": { - "minimalistic-assert": { - "version": "1.0.0" - } - } - } - } - }, - "evp_bytestokey": { - "version": "1.0.0" - } - } - }, - "browserify-sign": { - "version": "4.0.0", - "dependencies": { - "bn.js": { - "version": "4.11.4" - }, - "browserify-rsa": { - "version": "4.0.1" - }, - "elliptic": { - "version": "6.3.1", - "dependencies": { - "brorand": { - "version": "1.0.5" - }, - "hash.js": { - "version": "1.0.3" - } - } - }, - "parse-asn1": { - "version": "5.0.0", - "dependencies": { - "asn1.js": { - "version": "4.6.2", - "dependencies": { - "minimalistic-assert": { - "version": "1.0.0" - } - } - }, - "browserify-aes": { - "version": "1.0.6", - "dependencies": { - "buffer-xor": { - "version": "1.0.3" - }, - "cipher-base": { - "version": "1.0.2" - } - } - }, - "evp_bytestokey": { - "version": "1.0.0" - } - } - } - } - }, - "create-ecdh": { - "version": "4.0.0", - "dependencies": { - "bn.js": { - "version": "4.11.4" - }, - "elliptic": { - "version": "6.3.1", - "dependencies": { - "brorand": { - "version": "1.0.5" - }, - "hash.js": { - "version": "1.0.3" - } - } - } - } - }, - "create-hash": { - "version": "1.1.2", - "dependencies": { - "cipher-base": { - "version": "1.0.2" - }, - "ripemd160": { - "version": "1.0.1" - }, - "sha.js": { - "version": "2.4.5" - } - } - }, - "create-hmac": { - "version": "1.1.4" - }, - "diffie-hellman": { - "version": "5.0.2", - "dependencies": { - "bn.js": { - "version": "4.11.4" - }, - "miller-rabin": { - "version": "4.0.0", - "dependencies": { - "brorand": { - "version": "1.0.5" - } - } - } - } - }, - "pbkdf2": { - "version": "3.0.4" - }, - "public-encrypt": { - "version": "4.0.0", - "dependencies": { - "bn.js": { - "version": "4.11.4" - }, - "browserify-rsa": { - "version": "4.0.1" - }, - "parse-asn1": { - "version": "5.0.0", - "dependencies": { - "asn1.js": { - "version": "4.6.2", - "dependencies": { - "minimalistic-assert": { - "version": "1.0.0" - } - } - }, - "browserify-aes": { - "version": "1.0.6", - "dependencies": { - "buffer-xor": { - "version": "1.0.3" - }, - "cipher-base": { - "version": "1.0.2" - } - } - }, - "evp_bytestokey": { - "version": "1.0.0" - } - } - } - } - }, - "randombytes": { - "version": "2.0.3" - } - } - }, - "deep-equal": { - "version": "0.2.2" - }, - "defined": { - "version": "0.0.0" - }, - "deps-sort": { - "version": "1.3.9", - "dependencies": { - "JSONStream": { - "version": "1.1.3", - "dependencies": { - "jsonparse": { - "version": "1.2.0" - }, - "through": { - "version": "2.3.8" - } - } - } - } - }, - "domain-browser": { - "version": "1.1.7" - }, - "duplexer2": { - "version": "0.0.2" - }, - "events": { - "version": "1.0.2" - }, - "glob": { - "version": "4.5.3", - "dependencies": { - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "minimatch": { - "version": "2.0.10", - "dependencies": { - "brace-expansion": { - "version": "1.1.5", - "dependencies": { - "balanced-match": { - "version": "0.4.1" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - } - } - }, - "http-browserify": { - "version": "1.7.0", - "dependencies": { - "Base64": { - "version": "0.2.1" - } - } - }, - "https-browserify": { - "version": "0.0.1" - }, - "inherits": { - "version": "2.0.1" - }, - "insert-module-globals": { - "version": "6.6.3", - "dependencies": { - "JSONStream": { - "version": "1.1.3", - "dependencies": { - "jsonparse": { - "version": "1.2.0" - }, - "through": { - "version": "2.3.8" - } - } - }, - "combine-source-map": { - "version": "0.6.1", - "dependencies": { - "convert-source-map": { - "version": "1.1.3" - }, - "inline-source-map": { - "version": "0.5.0" - }, - "lodash.memoize": { - "version": "3.0.4" - }, - "source-map": { - "version": "0.4.4", - "dependencies": { - "amdefine": { - "version": "1.0.0" - } - } - } - } - }, - "is-buffer": { - "version": "1.1.3" - }, - "lexical-scope": { - "version": "1.2.0", - "dependencies": { - "astw": { - "version": "2.0.0", - "dependencies": { - "acorn": { - "version": "1.2.2" - } - } - } - } - }, - "process": { - "version": "0.11.5" - }, - "xtend": { - "version": "4.0.1" - } - } - }, - "isarray": { - "version": "0.0.1" - }, - "labeled-stream-splicer": { - "version": "1.0.2", - "dependencies": { - "stream-splicer": { - "version": "1.3.2", - "dependencies": { - "readable-wrap": { - "version": "1.0.0" - }, - "indexof": { - "version": "0.0.1" - } - } - } - } - }, - "module-deps": { - "version": "3.9.1", - "dependencies": { - "JSONStream": { - "version": "1.1.3", - "dependencies": { - "jsonparse": { - "version": "1.2.0" - }, - "through": { - "version": "2.3.8" - } - } - }, - "defined": { - "version": "1.0.0" - }, - "detective": { - "version": "4.3.1", - "dependencies": { - "acorn": { - "version": "1.2.2" - } - } - }, - "parents": { - "version": "1.0.1", - "dependencies": { - "path-platform": { - "version": "0.11.15" - } - } - }, - "resolve": { - "version": "1.1.7" - }, - "stream-combiner2": { - "version": "1.0.2", - "dependencies": { - "through2": { - "version": "0.5.1", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - } - } - }, - "xtend": { - "version": "3.0.0" - } - } - } - } - }, - "xtend": { - "version": "4.0.1" - } - } - }, - "os-browserify": { - "version": "0.1.2" - }, - "parents": { - "version": "0.0.3", - "dependencies": { - "path-platform": { - "version": "0.0.1" - } - } - }, - "path-browserify": { - "version": "0.0.0" - }, - "process": { - "version": "0.8.0" - }, - "punycode": { - "version": "1.2.4" - }, - "querystring-es3": { - "version": "0.2.1" - }, - "readable-stream": { - "version": "1.1.14", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - } - } - }, - "resolve": { - "version": "0.7.4" - }, - "shallow-copy": { - "version": "0.0.1" - }, - "shasum": { - "version": "1.0.2", - "dependencies": { - "json-stable-stringify": { - "version": "0.0.1", - "dependencies": { - "jsonify": { - "version": "0.0.0" - } - } - }, - "sha.js": { - "version": "2.4.5" - } - } - }, - "shell-quote": { - "version": "0.0.1" - }, - "stream-browserify": { - "version": "1.0.0" - }, - "string_decoder": { - "version": "0.10.31" - }, - "subarg": { - "version": "1.0.0" - }, - "syntax-error": { - "version": "1.1.6", - "dependencies": { - "acorn": { - "version": "2.7.0" - } - } - }, - "through2": { - "version": "1.1.1", - "dependencies": { - "xtend": { - "version": "4.0.1" - } - } - }, - "timers-browserify": { - "version": "1.4.2", - "dependencies": { - "process": { - "version": "0.11.5" - } - } - }, - "tty-browserify": { - "version": "0.0.0" - }, - "umd": { - "version": "2.1.0", - "dependencies": { - "rfile": { - "version": "1.0.0", - "dependencies": { - "callsite": { - "version": "1.0.0" - }, - "resolve": { - "version": "0.3.1" - } - } - }, - "ruglify": { - "version": "1.0.0", - "dependencies": { - "uglify-js": { - "version": "2.2.5", - "dependencies": { - "source-map": { - "version": "0.1.43", - "dependencies": { - "amdefine": { - "version": "1.0.0" - } - } - }, - "optimist": { - "version": "0.3.7", - "dependencies": { - "wordwrap": { - "version": "0.0.3" - } - } - } - } - } - } - }, - "through": { - "version": "2.3.8" - }, - "uglify-js": { - "version": "2.4.24", - "dependencies": { - "async": { - "version": "0.2.10" - }, - "source-map": { - "version": "0.1.34", - "dependencies": { - "amdefine": { - "version": "1.0.0" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2" - }, - "yargs": { - "version": "3.5.4", - "dependencies": { - "camelcase": { - "version": "1.2.1" - }, - "decamelize": { - "version": "1.2.0" - }, - "window-size": { - "version": "0.1.0" - }, - "wordwrap": { - "version": "0.0.2" - } - } - } - } - } - } - }, - "url": { - "version": "0.10.3", - "dependencies": { - "punycode": { - "version": "1.3.2" - }, - "querystring": { - "version": "0.2.0" - } - } - }, - "util": { - "version": "0.10.3" - }, - "vm-browserify": { - "version": "0.0.4", - "dependencies": { - "indexof": { - "version": "0.0.1" - } - } - }, - "xtend": { - "version": "3.0.0" - } - } - } - } - }, - "benchmark": { - "version": "1.0.0" - }, - "bower": { - "version": "1.3.12", - "dependencies": { - "abbrev": { - "version": "1.0.7" - }, - "archy": { - "version": "0.0.2" - }, - "bower-config": { - "version": "0.5.2", - "dependencies": { - "graceful-fs": { - "version": "2.0.3" - }, - "optimist": { - "version": "0.6.1", - "dependencies": { - "wordwrap": { - "version": "0.0.3" - }, - "minimist": { - "version": "0.0.10" - } - } - }, - "osenv": { - "version": "0.0.3" - } - } - }, - "bower-endpoint-parser": { - "version": "0.2.2" - }, - "bower-json": { - "version": "0.4.0", - "dependencies": { - "deep-extend": { - "version": "0.2.11" - }, - "graceful-fs": { - "version": "2.0.3" - }, - "intersect": { - "version": "0.0.3" - } - } - }, - "bower-logger": { - "version": "0.2.2" - }, - "bower-registry-client": { - "version": "0.2.4", - "dependencies": { - "async": { - "version": "0.2.10" - }, - "graceful-fs": { - "version": "2.0.3" - }, - "lru-cache": { - "version": "2.3.1" - }, - "request": { - "version": "2.51.0", - "dependencies": { - "bl": { - "version": "0.9.5", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - } - } - }, - "caseless": { - "version": "0.8.0" - }, - "forever-agent": { - "version": "0.5.2" - }, - "form-data": { - "version": "0.2.0", - "dependencies": { - "async": { - "version": "0.9.2" - }, - "mime-types": { - "version": "2.0.14", - "dependencies": { - "mime-db": { - "version": "1.12.0" - } - } - } - } - }, - "json-stringify-safe": { - "version": "5.0.1" - }, - "mime-types": { - "version": "1.0.2" - }, - "node-uuid": { - "version": "1.4.7" - }, - "qs": { - "version": "2.3.3" - }, - "tunnel-agent": { - "version": "0.4.3" - }, - "tough-cookie": { - "version": "2.2.2" - }, - "http-signature": { - "version": "0.10.1", - "dependencies": { - "assert-plus": { - "version": "0.1.5" - }, - "asn1": { - "version": "0.1.11" - }, - "ctype": { - "version": "0.5.3" - } - } - }, - "oauth-sign": { - "version": "0.5.0" - }, - "hawk": { - "version": "1.1.1", - "dependencies": { - "hoek": { - "version": "0.9.1" - }, - "boom": { - "version": "0.4.2" - }, - "cryptiles": { - "version": "0.2.2" - }, - "sntp": { - "version": "0.2.4" - } - } - }, - "aws-sign2": { - "version": "0.5.0" - }, - "stringstream": { - "version": "0.0.5" - }, - "combined-stream": { - "version": "0.0.7", - "dependencies": { - "delayed-stream": { - "version": "0.0.5" - } - } - } - } - }, - "request-replay": { - "version": "0.2.0" - }, - "mkdirp": { - "version": "0.3.5" - } - } - }, - "cardinal": { - "version": "0.4.0", - "dependencies": { - "redeyed": { - "version": "0.4.4", - "dependencies": { - "esprima": { - "version": "1.0.4" - } - } - } - } - }, - "chalk": { - "version": "0.5.0", - "dependencies": { - "ansi-styles": { - "version": "1.1.0" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "0.1.0", - "dependencies": { - "ansi-regex": { - "version": "0.2.1" - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "dependencies": { - "ansi-regex": { - "version": "0.2.1" - } - } - }, - "supports-color": { - "version": "0.2.0" - } - } - }, - "chmodr": { - "version": "0.1.0" - }, - "decompress-zip": { - "version": "0.0.8", - "dependencies": { - "mkpath": { - "version": "0.1.0" - }, - "binary": { - "version": "0.3.0", - "dependencies": { - "chainsaw": { - "version": "0.1.0", - "dependencies": { - "traverse": { - "version": "0.3.9" - } - } - }, - "buffers": { - "version": "0.1.1" - } - } - }, - "touch": { - "version": "0.0.2", - "dependencies": { - "nopt": { - "version": "1.0.10" - } - } - }, - "readable-stream": { - "version": "1.1.14", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "nopt": { - "version": "2.2.1" - } - } - }, - "fstream": { - "version": "1.0.8", - "dependencies": { - "graceful-fs": { - "version": "4.1.4" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "fstream-ignore": { - "version": "1.0.4", - "dependencies": { - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.0", - "dependencies": { - "brace-expansion": { - "version": "1.1.4", - "dependencies": { - "balanced-match": { - "version": "0.4.1" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - } - } - }, - "glob": { - "version": "4.0.6", - "dependencies": { - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "1.0.0", - "dependencies": { - "sigmund": { - "version": "1.0.1" - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.1" - } - } - } - } - }, - "graceful-fs": { - "version": "3.0.8" - }, - "handlebars": { - "version": "2.0.0", - "dependencies": { - "optimist": { - "version": "0.3.7", - "dependencies": { - "wordwrap": { - "version": "0.0.3" - } - } - }, - "uglify-js": { - "version": "2.3.6", - "dependencies": { - "async": { - "version": "0.2.10" - }, - "source-map": { - "version": "0.1.43", - "dependencies": { - "amdefine": { - "version": "1.0.0" - } - } - } - } - } - } - }, - "inquirer": { - "version": "0.7.1", - "dependencies": { - "cli-color": { - "version": "0.3.3", - "dependencies": { - "d": { - "version": "0.1.1" - }, - "es5-ext": { - "version": "0.10.11", - "dependencies": { - "es6-iterator": { - "version": "2.0.0" - }, - "es6-symbol": { - "version": "3.0.2" - } - } - }, - "memoizee": { - "version": "0.3.10", - "dependencies": { - "es6-weak-map": { - "version": "0.1.4", - "dependencies": { - "es6-iterator": { - "version": "0.1.3" - }, - "es6-symbol": { - "version": "2.0.1" - } - } - }, - "event-emitter": { - "version": "0.3.4" - }, - "lru-queue": { - "version": "0.1.0" - }, - "next-tick": { - "version": "0.2.2" - } - } - }, - "timers-ext": { - "version": "0.1.0", - "dependencies": { - "next-tick": { - "version": "0.2.2" - } - } - } - } - }, - "figures": { - "version": "1.6.0" - }, - "mute-stream": { - "version": "0.0.4" - }, - "readline2": { - "version": "0.1.1", - "dependencies": { - "strip-ansi": { - "version": "2.0.1", - "dependencies": { - "ansi-regex": { - "version": "1.1.1" - } - } - } - } - }, - "rx": { - "version": "2.5.3" - }, - "through": { - "version": "2.3.8" - } - } - }, - "insight": { - "version": "0.4.3", - "dependencies": { - "async": { - "version": "0.9.2" - }, - "chalk": { - "version": "0.5.1", - "dependencies": { - "ansi-styles": { - "version": "1.1.0" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "0.1.0", - "dependencies": { - "ansi-regex": { - "version": "0.2.1" - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "dependencies": { - "ansi-regex": { - "version": "0.2.1" - } - } - }, - "supports-color": { - "version": "0.2.0" - } - } - }, - "configstore": { - "version": "0.3.2", - "dependencies": { - "js-yaml": { - "version": "3.6.1", - "dependencies": { - "argparse": { - "version": "1.0.7", - "dependencies": { - "sprintf-js": { - "version": "1.0.3" - } - } - }, - "esprima": { - "version": "2.7.2" - } - } - }, - "object-assign": { - "version": "2.1.1" - }, - "user-home": { - "version": "1.1.1" - }, - "uuid": { - "version": "2.0.2" - }, - "xdg-basedir": { - "version": "1.0.1" - } - } - }, - "inquirer": { - "version": "0.6.0", - "dependencies": { - "cli-color": { - "version": "0.3.3", - "dependencies": { - "d": { - "version": "0.1.1" - }, - "es5-ext": { - "version": "0.10.11", - "dependencies": { - "es6-iterator": { - "version": "2.0.0" - }, - "es6-symbol": { - "version": "3.0.2" - } - } - }, - "memoizee": { - "version": "0.3.10", - "dependencies": { - "es6-weak-map": { - "version": "0.1.4", - "dependencies": { - "es6-iterator": { - "version": "0.1.3" - }, - "es6-symbol": { - "version": "2.0.1" - } - } - }, - "event-emitter": { - "version": "0.3.4" - }, - "lru-queue": { - "version": "0.1.0" - }, - "next-tick": { - "version": "0.2.2" - } - } - }, - "timers-ext": { - "version": "0.1.0", - "dependencies": { - "next-tick": { - "version": "0.2.2" - } - } - } - } - }, - "mute-stream": { - "version": "0.0.4" - }, - "readline2": { - "version": "0.1.1", - "dependencies": { - "strip-ansi": { - "version": "2.0.1", - "dependencies": { - "ansi-regex": { - "version": "1.1.1" - } - } - } - } - }, - "rx": { - "version": "2.5.3" - }, - "through": { - "version": "2.3.8" - } - } - }, - "lodash.debounce": { - "version": "2.4.1", - "dependencies": { - "lodash.isfunction": { - "version": "2.4.1" - }, - "lodash.isobject": { - "version": "2.4.1", - "dependencies": { - "lodash._objecttypes": { - "version": "2.4.1" - } - } - }, - "lodash.now": { - "version": "2.4.1", - "dependencies": { - "lodash._isnative": { - "version": "2.4.1" - } - } - } - } - }, - "object-assign": { - "version": "1.0.0" - }, - "os-name": { - "version": "1.0.3", - "dependencies": { - "osx-release": { - "version": "1.1.0", - "dependencies": { - "minimist": { - "version": "1.2.0" - } - } - }, - "win-release": { - "version": "1.1.1", - "dependencies": { - "semver": { - "version": "5.1.0" - } - } - } - } - }, - "tough-cookie": { - "version": "0.12.1", - "dependencies": { - "punycode": { - "version": "1.4.1" - } - } - } - } - }, - "is-root": { - "version": "1.0.0" - }, - "junk": { - "version": "1.0.2" - }, - "lockfile": { - "version": "1.0.1" - }, - "lru-cache": { - "version": "2.5.2" - }, - "mkdirp": { - "version": "0.5.0", - "dependencies": { - "minimist": { - "version": "0.0.8" - } - } - }, - "mout": { - "version": "0.9.1" - }, - "nopt": { - "version": "3.0.6" - }, - "opn": { - "version": "1.0.2" - }, - "osenv": { - "version": "0.1.0" - }, - "p-throttler": { - "version": "0.1.0", - "dependencies": { - "q": { - "version": "0.9.7" - } - } - }, - "promptly": { - "version": "0.2.0", - "dependencies": { - "read": { - "version": "1.0.7", - "dependencies": { - "mute-stream": { - "version": "0.0.6" - } - } - } - } - }, - "request": { - "version": "2.42.0", - "dependencies": { - "bl": { - "version": "0.9.5", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - } - } - }, - "caseless": { - "version": "0.6.0" - }, - "forever-agent": { - "version": "0.5.2" - }, - "qs": { - "version": "1.2.2" - }, - "json-stringify-safe": { - "version": "5.0.1" - }, - "mime-types": { - "version": "1.0.2" - }, - "node-uuid": { - "version": "1.4.7" - }, - "tunnel-agent": { - "version": "0.4.3" - }, - "tough-cookie": { - "version": "2.2.2" - }, - "form-data": { - "version": "0.1.4", - "dependencies": { - "combined-stream": { - "version": "0.0.7", - "dependencies": { - "delayed-stream": { - "version": "0.0.5" - } - } - }, - "mime": { - "version": "1.2.11" - }, - "async": { - "version": "0.9.2" - } - } - }, - "http-signature": { - "version": "0.10.1", - "dependencies": { - "assert-plus": { - "version": "0.1.5" - }, - "asn1": { - "version": "0.1.11" - }, - "ctype": { - "version": "0.5.3" - } - } - }, - "oauth-sign": { - "version": "0.4.0" - }, - "hawk": { - "version": "1.1.1", - "dependencies": { - "hoek": { - "version": "0.9.1" - }, - "boom": { - "version": "0.4.2" - }, - "cryptiles": { - "version": "0.2.2" - }, - "sntp": { - "version": "0.2.4" - } - } - }, - "aws-sign2": { - "version": "0.5.0" - }, - "stringstream": { - "version": "0.0.5" - } - } - }, - "request-progress": { - "version": "0.3.0", - "dependencies": { - "throttleit": { - "version": "0.0.2" - } - } - }, - "retry": { - "version": "0.6.0" - }, - "rimraf": { - "version": "2.2.8" - }, - "semver": { - "version": "2.3.2" - }, - "shell-quote": { - "version": "1.4.3", - "dependencies": { - "jsonify": { - "version": "0.0.0" - }, - "array-filter": { - "version": "0.0.1" - }, - "array-reduce": { - "version": "0.0.0" - }, - "array-map": { - "version": "0.0.0" - } - } - }, - "stringify-object": { - "version": "1.0.1" - }, - "tar-fs": { - "version": "0.5.2", - "dependencies": { - "pump": { - "version": "0.3.5", - "dependencies": { - "once": { - "version": "1.2.0" - }, - "end-of-stream": { - "version": "1.0.0", - "dependencies": { - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.1" - } - } - } - } - } - } - }, - "tar-stream": { - "version": "0.4.7", - "dependencies": { - "bl": { - "version": "0.9.5", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - } - } - }, - "end-of-stream": { - "version": "1.1.0", - "dependencies": { - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.1" - } - } - } - } - }, - "readable-stream": { - "version": "1.1.14", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "xtend": { - "version": "4.0.1" - } - } - } - } - }, - "tmp": { - "version": "0.0.23" - }, - "update-notifier": { - "version": "0.2.0", - "dependencies": { - "configstore": { - "version": "0.3.2", - "dependencies": { - "js-yaml": { - "version": "3.6.1", - "dependencies": { - "argparse": { - "version": "1.0.7", - "dependencies": { - "sprintf-js": { - "version": "1.0.3" - } - } - }, - "esprima": { - "version": "2.7.2" - } - } - }, - "object-assign": { - "version": "2.1.1" - }, - "user-home": { - "version": "1.1.1" - }, - "uuid": { - "version": "2.0.2" - }, - "xdg-basedir": { - "version": "1.0.1" - } - } - }, - "latest-version": { - "version": "0.2.0", - "dependencies": { - "package-json": { - "version": "0.2.0", - "dependencies": { - "got": { - "version": "0.3.0", - "dependencies": { - "object-assign": { - "version": "0.3.1" - } - } - }, - "registry-url": { - "version": "0.1.1", - "dependencies": { - "npmconf": { - "version": "2.1.2", - "dependencies": { - "config-chain": { - "version": "1.1.10", - "dependencies": { - "proto-list": { - "version": "1.2.4" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "ini": { - "version": "1.3.4" - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.1" - } - } - }, - "uid-number": { - "version": "0.0.5" - } - } - } - } - } - } - } - } - }, - "semver-diff": { - "version": "0.1.0" - }, - "string-length": { - "version": "0.1.2", - "dependencies": { - "strip-ansi": { - "version": "0.2.2", - "dependencies": { - "ansi-regex": { - "version": "0.1.0" - } - } - } - } - } - } - }, - "which": { - "version": "1.0.9" - } - } - }, - "browserstacktunnel-wrapper": { - "version": "1.4.2", - "dependencies": { - "unzip": { - "version": "0.1.11", - "dependencies": { - "fstream": { - "version": "0.1.31", - "dependencies": { - "graceful-fs": { - "version": "3.0.8" - }, - "inherits": { - "version": "2.0.1" - }, - "mkdirp": { - "version": "0.5.1", - "dependencies": { - "minimist": { - "version": "0.0.8" - } - } - }, - "rimraf": { - "version": "2.5.4", - "dependencies": { - "glob": { - "version": "7.0.5", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - } - } - } - } - }, - "pullstream": { - "version": "0.4.1", - "dependencies": { - "over": { - "version": "0.0.5" - }, - "slice-stream": { - "version": "1.0.0" - } - } - }, - "binary": { - "version": "0.3.0", - "dependencies": { - "chainsaw": { - "version": "0.1.0", - "dependencies": { - "traverse": { - "version": "0.3.9" - } - } - }, - "buffers": { - "version": "0.1.1" - } - } - }, - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "setimmediate": { - "version": "1.0.4" - }, - "match-stream": { - "version": "0.0.2", - "dependencies": { - "buffers": { - "version": "0.1.1" - } - } - } - } - } - } - }, - "canonical-path": { - "version": "0.0.2" - }, - "changez": { - "version": "2.1.1", - "dependencies": { - "commander": { - "version": "2.9.0", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1" - } - } - }, - "find-package": { - "version": "1.0.0", - "dependencies": { - "parents": { - "version": "1.0.1", - "dependencies": { - "path-platform": { - "version": "0.11.15" - } - } - } - } - }, - "nunjucks": { - "version": "2.5.2", - "dependencies": { - "asap": { - "version": "2.0.5" - }, - "chokidar": { - "version": "1.6.1", - "dependencies": { - "anymatch": { - "version": "1.3.0", - "dependencies": { - "arrify": { - "version": "1.0.1" - }, - "micromatch": { - "version": "2.3.11", - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "dependencies": { - "arr-flatten": { - "version": "1.0.1" - } - } - }, - "array-unique": { - "version": "0.2.1" - }, - "braces": { - "version": "1.8.5", - "dependencies": { - "expand-range": { - "version": "1.8.2", - "dependencies": { - "fill-range": { - "version": "2.2.3", - "dependencies": { - "is-number": { - "version": "2.1.0" - }, - "isobject": { - "version": "2.1.0", - "dependencies": { - "isarray": { - "version": "1.0.0" - } - } - }, - "randomatic": { - "version": "1.1.5" - }, - "repeat-string": { - "version": "1.6.1" - } - } - } - } - }, - "preserve": { - "version": "0.2.0" - }, - "repeat-element": { - "version": "1.1.2" - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "dependencies": { - "is-posix-bracket": { - "version": "0.1.1" - } - } - }, - "extglob": { - "version": "0.3.2" - }, - "filename-regex": { - "version": "2.0.0" - }, - "is-extglob": { - "version": "1.0.0" - }, - "kind-of": { - "version": "3.0.4", - "dependencies": { - "is-buffer": { - "version": "1.1.4" - } - } - }, - "normalize-path": { - "version": "2.0.1" - }, - "object.omit": { - "version": "2.0.0", - "dependencies": { - "for-own": { - "version": "0.1.4", - "dependencies": { - "for-in": { - "version": "0.1.6" - } - } - }, - "is-extendable": { - "version": "0.1.1" - } - } - }, - "parse-glob": { - "version": "3.0.4", - "dependencies": { - "glob-base": { - "version": "0.3.0" - }, - "is-dotfile": { - "version": "1.0.2" - } - } - }, - "regex-cache": { - "version": "0.4.3", - "dependencies": { - "is-equal-shallow": { - "version": "0.1.3" - }, - "is-primitive": { - "version": "2.0.0" - } - } - } - } - } - } - }, - "async-each": { - "version": "1.0.1" - }, - "glob-parent": { - "version": "2.0.0" - }, - "inherits": { - "version": "2.0.3" - }, - "is-binary-path": { - "version": "1.0.1", - "dependencies": { - "binary-extensions": { - "version": "1.7.0" - } - } - }, - "is-glob": { - "version": "2.0.1", - "dependencies": { - "is-extglob": { - "version": "1.0.0" - } - } - }, - "path-is-absolute": { - "version": "1.0.1" - }, - "readdirp": { - "version": "2.1.0", - "dependencies": { - "graceful-fs": { - "version": "4.1.9" - }, - "minimatch": { - "version": "3.0.3", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "readable-stream": { - "version": "2.1.5", - "dependencies": { - "buffer-shims": { - "version": "1.0.0" - }, - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - }, - "set-immediate-shim": { - "version": "1.0.1" - } - } - }, - "fsevents": { - "version": "1.0.14", - "dependencies": { - "nan": { - "version": "2.4.0" - }, - "node-pre-gyp": { - "version": "0.6.29" - }, - "ansi-regex": { - "version": "2.0.0" - }, - "abbrev": { - "version": "1.0.9" - }, - "ansi-styles": { - "version": "2.2.1" - }, - "are-we-there-yet": { - "version": "1.1.2" - }, - "aproba": { - "version": "1.0.4" - }, - "asn1": { - "version": "0.2.3" - }, - "assert-plus": { - "version": "0.2.0" - }, - "aws-sign2": { - "version": "0.6.0" - }, - "async": { - "version": "1.5.2" - }, - "aws4": { - "version": "1.4.1" - }, - "balanced-match": { - "version": "0.4.2" - }, - "block-stream": { - "version": "0.0.9" - }, - "boom": { - "version": "2.10.1" - }, - "brace-expansion": { - "version": "1.1.5" - }, - "buffer-shims": { - "version": "1.0.0" - }, - "caseless": { - "version": "0.11.0" - }, - "chalk": { - "version": "1.1.3" - }, - "code-point-at": { - "version": "1.0.0" - }, - "combined-stream": { - "version": "1.0.5" - }, - "commander": { - "version": "2.9.0" - }, - "concat-map": { - "version": "0.0.1" - }, - "console-control-strings": { - "version": "1.1.0" - }, - "core-util-is": { - "version": "1.0.2" - }, - "cryptiles": { - "version": "2.0.5" - }, - "debug": { - "version": "2.2.0" - }, - "deep-extend": { - "version": "0.4.1" - }, - "delayed-stream": { - "version": "1.0.0" - }, - "delegates": { - "version": "1.0.0" - }, - "ecc-jsbn": { - "version": "0.1.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "extend": { - "version": "3.0.0" - }, - "extsprintf": { - "version": "1.0.2" - }, - "forever-agent": { - "version": "0.6.1" - }, - "form-data": { - "version": "1.0.0-rc4" - }, - "fs.realpath": { - "version": "1.0.0" - }, - "fstream": { - "version": "1.0.10" - }, - "fstream-ignore": { - "version": "1.0.5" - }, - "gauge": { - "version": "2.6.0" - }, - "generate-function": { - "version": "2.0.0" - }, - "generate-object-property": { - "version": "1.2.0" - }, - "glob": { - "version": "7.0.5" - }, - "graceful-fs": { - "version": "4.1.4" - }, - "graceful-readlink": { - "version": "1.0.1" - }, - "har-validator": { - "version": "2.0.6" - }, - "has-ansi": { - "version": "2.0.0" - }, - "has-color": { - "version": "0.1.7" - }, - "has-unicode": { - "version": "2.0.1" - }, - "hawk": { - "version": "3.1.3" - }, - "hoek": { - "version": "2.16.3" - }, - "http-signature": { - "version": "1.1.1" - }, - "inflight": { - "version": "1.0.5" - }, - "inherits": { - "version": "2.0.1" - }, - "ini": { - "version": "1.3.4" - }, - "is-fullwidth-code-point": { - "version": "1.0.0" - }, - "is-my-json-valid": { - "version": "2.13.1" - }, - "is-property": { - "version": "1.0.2" - }, - "is-typedarray": { - "version": "1.0.0" - }, - "isarray": { - "version": "1.0.0" - }, - "isstream": { - "version": "0.1.2" - }, - "jodid25519": { - "version": "1.0.2" - }, - "jsbn": { - "version": "0.1.0" - }, - "json-schema": { - "version": "0.2.2" - }, - "json-stringify-safe": { - "version": "5.0.1" - }, - "jsonpointer": { - "version": "2.0.0" - }, - "jsprim": { - "version": "1.3.0" - }, - "mime-db": { - "version": "1.23.0" - }, - "mime-types": { - "version": "2.1.11" - }, - "minimatch": { - "version": "3.0.2" - }, - "minimist": { - "version": "0.0.8" - }, - "mkdirp": { - "version": "0.5.1" - }, - "ms": { - "version": "0.7.1" - }, - "node-uuid": { - "version": "1.4.7" - }, - "nopt": { - "version": "3.0.6" - }, - "npmlog": { - "version": "3.1.2" - }, - "number-is-nan": { - "version": "1.0.0" - }, - "oauth-sign": { - "version": "0.8.2" - }, - "object-assign": { - "version": "4.1.0" - }, - "once": { - "version": "1.3.3" - }, - "path-is-absolute": { - "version": "1.0.0" - }, - "pinkie": { - "version": "2.0.4" - }, - "pinkie-promise": { - "version": "2.0.1" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "qs": { - "version": "6.2.0" - }, - "readable-stream": { - "version": "2.1.4" - }, - "request": { - "version": "2.73.0" - }, - "rimraf": { - "version": "2.5.3" - }, - "semver": { - "version": "5.2.0" - }, - "set-blocking": { - "version": "2.0.0" - }, - "signal-exit": { - "version": "3.0.0" - }, - "sntp": { - "version": "1.0.9" - }, - "string-width": { - "version": "1.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "stringstream": { - "version": "0.0.5" - }, - "strip-ansi": { - "version": "3.0.1" - }, - "strip-json-comments": { - "version": "1.0.4" - }, - "supports-color": { - "version": "2.0.0" - }, - "tar": { - "version": "2.2.1" - }, - "tar-pack": { - "version": "3.1.4" - }, - "tough-cookie": { - "version": "2.2.2" - }, - "tunnel-agent": { - "version": "0.4.3" - }, - "tweetnacl": { - "version": "0.13.3" - }, - "uid-number": { - "version": "0.0.6" - }, - "util-deprecate": { - "version": "1.0.2" - }, - "verror": { - "version": "1.3.6" - }, - "wide-align": { - "version": "1.1.0" - }, - "wrappy": { - "version": "1.0.2" - }, - "xtend": { - "version": "4.0.1" - }, - "bl": { - "version": "1.1.2", - "dependencies": { - "readable-stream": { - "version": "2.0.6" - } - } - }, - "dashdash": { - "version": "1.14.0", - "dependencies": { - "assert-plus": { - "version": "1.0.0" - } - } - }, - "getpass": { - "version": "0.1.6", - "dependencies": { - "assert-plus": { - "version": "1.0.0" - } - } - }, - "rc": { - "version": "1.1.6", - "dependencies": { - "minimist": { - "version": "1.2.0" - } - } - }, - "sshpk": { - "version": "1.8.3", - "dependencies": { - "assert-plus": { - "version": "1.0.0" - } - } - } - } - } - } - }, - "yargs": { - "version": "3.32.0", - "dependencies": { - "camelcase": { - "version": "2.1.1" - }, - "cliui": { - "version": "3.2.0", - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "wrap-ansi": { - "version": "2.0.0" - } - } - }, - "decamelize": { - "version": "1.2.0" - }, - "os-locale": { - "version": "1.4.0", - "dependencies": { - "lcid": { - "version": "1.0.0", - "dependencies": { - "invert-kv": { - "version": "1.0.0" - } - } - } - } - }, - "string-width": { - "version": "1.0.2", - "dependencies": { - "code-point-at": { - "version": "1.0.1", - "dependencies": { - "number-is-nan": { - "version": "1.0.1" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.1" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - } - } - }, - "window-size": { - "version": "0.1.4" - }, - "y18n": { - "version": "3.2.1" - } - } - } - } - }, - "shelljs": { - "version": "0.7.4", - "dependencies": { - "glob": { - "version": "7.1.1", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.6", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.3" - }, - "minimatch": { - "version": "3.0.3", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.4.0", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.1" - } - } - }, - "interpret": { - "version": "1.0.1" - }, - "rechoir": { - "version": "0.6.2", - "dependencies": { - "resolve": { - "version": "1.1.7" - } - } - } - } - }, - "simple-node-logger": { - "version": "0.93.12", - "dependencies": { - "lodash": { - "version": "4.16.4" - }, - "moment": { - "version": "2.15.2" - }, - "path": { - "version": "0.12.7", - "dependencies": { - "process": { - "version": "0.11.9" - } - } - }, - "util": { - "version": "0.10.3", - "dependencies": { - "inherits": { - "version": "2.0.1" - } - } - } - } - } - } - }, - "changez-angular": { - "version": "2.1.0", - "dependencies": { - "nunjucks-date": { - "version": "1.2.0", - "dependencies": { - "moment": { - "version": "2.15.2" - } - } - } - } - }, - "cheerio": { - "version": "0.17.0", - "dependencies": { - "CSSselect": { - "version": "0.4.1", - "dependencies": { - "CSSwhat": { - "version": "0.4.7" - }, - "domutils": { - "version": "1.4.3", - "dependencies": { - "domelementtype": { - "version": "1.3.0" - } - } - } - } - }, - "entities": { - "version": "1.1.1" - }, - "htmlparser2": { - "version": "3.7.3", - "dependencies": { - "domhandler": { - "version": "2.2.1" - }, - "domutils": { - "version": "1.5.1" - }, - "domelementtype": { - "version": "1.3.0" - }, - "readable-stream": { - "version": "1.1.14", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "entities": { - "version": "1.0.0" - } - } - }, - "dom-serializer": { - "version": "0.0.1", - "dependencies": { - "domelementtype": { - "version": "1.1.3" - } - } - } - } - }, - "commitizen": { - "version": "2.8.4", - "dependencies": { - "chalk": { - "version": "1.1.3", - "dependencies": { - "ansi-styles": { - "version": "2.2.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "2.0.0", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "supports-color": { - "version": "2.0.0" - } - } - }, - "cz-conventional-changelog": { - "version": "1.1.6", - "dependencies": { - "word-wrap": { - "version": "1.1.0" - } - } - }, - "dedent": { - "version": "0.6.0" - }, - "detect-indent": { - "version": "4.0.0", - "dependencies": { - "repeating": { - "version": "2.0.1", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - } - } - } - } - }, - "find-node-modules": { - "version": "1.0.3", - "dependencies": { - "findup-sync": { - "version": "0.2.1", - "dependencies": { - "glob": { - "version": "4.3.5", - "dependencies": { - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "2.0.10", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - } - } - } - } - }, - "merge": { - "version": "1.2.0" - } - } - }, - "find-root": { - "version": "1.0.0" - }, - "glob": { - "version": "7.0.5", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - }, - "home-or-tmp": { - "version": "2.0.0", - "dependencies": { - "os-homedir": { - "version": "1.0.1" - }, - "os-tmpdir": { - "version": "1.0.1" - } - } - }, - "inquirer": { - "version": "1.1.2", - "dependencies": { - "ansi-escapes": { - "version": "1.4.0" - }, - "cli-cursor": { - "version": "1.0.2", - "dependencies": { - "restore-cursor": { - "version": "1.0.1", - "dependencies": { - "exit-hook": { - "version": "1.1.1" - }, - "onetime": { - "version": "1.1.0" - } - } - } - } - }, - "cli-width": { - "version": "2.1.0" - }, - "external-editor": { - "version": "1.0.3", - "dependencies": { - "extend": { - "version": "3.0.0" - }, - "spawn-sync": { - "version": "1.0.15", - "dependencies": { - "concat-stream": { - "version": "1.5.1", - "dependencies": { - "inherits": { - "version": "2.0.1" - }, - "typedarray": { - "version": "0.0.6" - }, - "readable-stream": { - "version": "2.0.6", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - } - } - }, - "os-shim": { - "version": "0.1.3" - } - } - }, - "temp": { - "version": "0.8.3", - "dependencies": { - "os-tmpdir": { - "version": "1.0.1" - }, - "rimraf": { - "version": "2.2.8" - } - } - } - } - }, - "figures": { - "version": "1.7.0", - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5" - }, - "object-assign": { - "version": "4.1.0" - } - } - }, - "mute-stream": { - "version": "0.0.6" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - }, - "run-async": { - "version": "2.2.0", - "dependencies": { - "is-promise": { - "version": "2.1.0" - } - } - }, - "rx": { - "version": "4.1.0" - }, - "string-width": { - "version": "1.0.1", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "through": { - "version": "2.3.8" - } - } - }, - "lodash": { - "version": "4.14.1" - }, - "minimist": { - "version": "1.2.0" - }, - "path-exists": { - "version": "2.1.0", - "dependencies": { - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - } - } - }, - "shelljs": { - "version": "0.5.3" - }, - "strip-json-comments": { - "version": "2.0.1" - } - } - }, - "cross-spawn": { - "version": "4.0.0", - "dependencies": { - "lru-cache": { - "version": "4.0.1", - "dependencies": { - "pseudomap": { - "version": "1.0.2" - }, - "yallist": { - "version": "2.0.0" - } - } - }, - "which": { - "version": "1.2.10", - "dependencies": { - "isexe": { - "version": "1.1.2" - } - } - } - } - }, - "cz-conventional-changelog": { - "version": "1.1.4", - "dependencies": { - "word-wrap": { - "version": "1.1.0" - } - } - }, - "dgeni": { - "version": "0.4.2", - "dependencies": { - "dependency-graph": { - "version": "0.4.1" - }, - "di": { - "version": "0.0.1" - }, - "lodash": { - "version": "3.10.1" - }, - "optimist": { - "version": "0.6.1", - "dependencies": { - "wordwrap": { - "version": "0.0.3" - }, - "minimist": { - "version": "0.0.10" - } - } - }, - "q": { - "version": "1.4.1" - }, - "validate.js": { - "version": "0.9.0" - }, - "winston": { - "version": "2.2.0", - "dependencies": { - "async": { - "version": "1.0.0" - }, - "colors": { - "version": "1.0.3" - }, - "cycle": { - "version": "1.0.3" - }, - "eyes": { - "version": "0.1.8" - }, - "isstream": { - "version": "0.1.2" - }, - "pkginfo": { - "version": "0.3.1" - }, - "stack-trace": { - "version": "0.0.9" - } - } - } - } - }, - "dgeni-packages": { - "version": "0.16.0", - "dependencies": { - "catharsis": { - "version": "0.8.8", - "dependencies": { - "underscore-contrib": { - "version": "0.3.0", - "dependencies": { - "underscore": { - "version": "1.6.0" - } - } - } - } - }, - "change-case": { - "version": "3.0.0", - "dependencies": { - "camel-case": { - "version": "3.0.0" - }, - "constant-case": { - "version": "2.0.0" - }, - "dot-case": { - "version": "2.1.0" - }, - "header-case": { - "version": "1.0.0" - }, - "is-lower-case": { - "version": "1.1.3" - }, - "is-upper-case": { - "version": "1.1.2" - }, - "lower-case": { - "version": "1.1.3" - }, - "lower-case-first": { - "version": "1.0.2" - }, - "no-case": { - "version": "2.3.0" - }, - "param-case": { - "version": "2.1.0" - }, - "pascal-case": { - "version": "2.0.0" - }, - "path-case": { - "version": "2.1.0" - }, - "sentence-case": { - "version": "2.1.0" - }, - "snake-case": { - "version": "2.1.0" - }, - "swap-case": { - "version": "1.1.2" - }, - "title-case": { - "version": "2.1.0" - }, - "upper-case": { - "version": "1.1.3" - }, - "upper-case-first": { - "version": "1.1.2" - } - } - }, - "espree": { - "version": "2.2.5" - }, - "estraverse": { - "version": "4.2.0" - }, - "glob": { - "version": "7.1.1", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.6", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.3" - }, - "once": { - "version": "1.4.0", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.1" - } - } - }, - "htmlparser2": { - "version": "3.9.2", - "dependencies": { - "domelementtype": { - "version": "1.3.0" - }, - "domhandler": { - "version": "2.3.0" - }, - "domutils": { - "version": "1.5.1", - "dependencies": { - "dom-serializer": { - "version": "0.1.0", - "dependencies": { - "domelementtype": { - "version": "1.1.3" - } - } - } - } - }, - "entities": { - "version": "1.1.1" - }, - "inherits": { - "version": "2.0.3" - }, - "readable-stream": { - "version": "2.2.2", - "dependencies": { - "buffer-shims": { - "version": "1.0.0" - }, - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - } - } - }, - "lodash": { - "version": "4.17.1" - }, - "minimatch": { - "version": "3.0.3", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "nunjucks": { - "version": "2.5.2", - "dependencies": { - "asap": { - "version": "2.0.5" - }, - "chokidar": { - "version": "1.6.1", - "dependencies": { - "anymatch": { - "version": "1.3.0", - "dependencies": { - "arrify": { - "version": "1.0.1" - }, - "micromatch": { - "version": "2.3.11", - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "dependencies": { - "arr-flatten": { - "version": "1.0.1" - } - } - }, - "array-unique": { - "version": "0.2.1" - }, - "braces": { - "version": "1.8.5", - "dependencies": { - "expand-range": { - "version": "1.8.2", - "dependencies": { - "fill-range": { - "version": "2.2.3", - "dependencies": { - "is-number": { - "version": "2.1.0" - }, - "isobject": { - "version": "2.1.0", - "dependencies": { - "isarray": { - "version": "1.0.0" - } - } - }, - "randomatic": { - "version": "1.1.5" - }, - "repeat-string": { - "version": "1.6.1" - } - } - } - } - }, - "preserve": { - "version": "0.2.0" - }, - "repeat-element": { - "version": "1.1.2" - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "dependencies": { - "is-posix-bracket": { - "version": "0.1.1" - } - } - }, - "extglob": { - "version": "0.3.2" - }, - "filename-regex": { - "version": "2.0.0" - }, - "is-extglob": { - "version": "1.0.0" - }, - "kind-of": { - "version": "3.0.4", - "dependencies": { - "is-buffer": { - "version": "1.1.4" - } - } - }, - "normalize-path": { - "version": "2.0.1" - }, - "object.omit": { - "version": "2.0.1", - "dependencies": { - "for-own": { - "version": "0.1.4", - "dependencies": { - "for-in": { - "version": "0.1.6" - } - } - }, - "is-extendable": { - "version": "0.1.1" - } - } - }, - "parse-glob": { - "version": "3.0.4", - "dependencies": { - "glob-base": { - "version": "0.3.0" - }, - "is-dotfile": { - "version": "1.0.2" - } - } - }, - "regex-cache": { - "version": "0.4.3", - "dependencies": { - "is-equal-shallow": { - "version": "0.1.3" - }, - "is-primitive": { - "version": "2.0.0" - } - } - } - } - } - } - }, - "async-each": { - "version": "1.0.1" - }, - "glob-parent": { - "version": "2.0.0" - }, - "inherits": { - "version": "2.0.3" - }, - "is-binary-path": { - "version": "1.0.1", - "dependencies": { - "binary-extensions": { - "version": "1.7.0" - } - } - }, - "is-glob": { - "version": "2.0.1", - "dependencies": { - "is-extglob": { - "version": "1.0.0" - } - } - }, - "path-is-absolute": { - "version": "1.0.1" - }, - "readdirp": { - "version": "2.1.0", - "dependencies": { - "graceful-fs": { - "version": "4.1.10" - }, - "readable-stream": { - "version": "2.2.2", - "dependencies": { - "buffer-shims": { - "version": "1.0.0" - }, - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - }, - "set-immediate-shim": { - "version": "1.0.1" - } - } - }, - "fsevents": { - "version": "1.0.15", - "dependencies": { - "nan": { - "version": "2.4.0" - }, - "node-pre-gyp": { - "version": "0.6.29" - }, - "ansi-regex": { - "version": "2.0.0" - }, - "abbrev": { - "version": "1.0.9" - }, - "ansi-styles": { - "version": "2.2.1" - }, - "aproba": { - "version": "1.0.4" - }, - "asn1": { - "version": "0.2.3" - }, - "assert-plus": { - "version": "0.2.0" - }, - "are-we-there-yet": { - "version": "1.1.2" - }, - "async": { - "version": "1.5.2" - }, - "aws4": { - "version": "1.4.1" - }, - "aws-sign2": { - "version": "0.6.0" - }, - "balanced-match": { - "version": "0.4.2" - }, - "block-stream": { - "version": "0.0.9" - }, - "boom": { - "version": "2.10.1" - }, - "brace-expansion": { - "version": "1.1.5" - }, - "buffer-shims": { - "version": "1.0.0" - }, - "chalk": { - "version": "1.1.3" - }, - "caseless": { - "version": "0.11.0" - }, - "code-point-at": { - "version": "1.0.0" - }, - "combined-stream": { - "version": "1.0.5" - }, - "commander": { - "version": "2.9.0" - }, - "console-control-strings": { - "version": "1.1.0" - }, - "concat-map": { - "version": "0.0.1" - }, - "core-util-is": { - "version": "1.0.2" - }, - "cryptiles": { - "version": "2.0.5" - }, - "deep-extend": { - "version": "0.4.1" - }, - "debug": { - "version": "2.2.0" - }, - "delayed-stream": { - "version": "1.0.0" - }, - "delegates": { - "version": "1.0.0" - }, - "ecc-jsbn": { - "version": "0.1.1" - }, - "extend": { - "version": "3.0.0" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "extsprintf": { - "version": "1.0.2" - }, - "forever-agent": { - "version": "0.6.1" - }, - "form-data": { - "version": "1.0.0-rc4" - }, - "fs.realpath": { - "version": "1.0.0" - }, - "fstream": { - "version": "1.0.10" - }, - "fstream-ignore": { - "version": "1.0.5" - }, - "gauge": { - "version": "2.6.0" - }, - "generate-function": { - "version": "2.0.0" - }, - "generate-object-property": { - "version": "1.2.0" - }, - "glob": { - "version": "7.0.5" - }, - "graceful-fs": { - "version": "4.1.4" - }, - "graceful-readlink": { - "version": "1.0.1" - }, - "har-validator": { - "version": "2.0.6" - }, - "has-ansi": { - "version": "2.0.0" - }, - "has-color": { - "version": "0.1.7" - }, - "has-unicode": { - "version": "2.0.1" - }, - "hawk": { - "version": "3.1.3" - }, - "hoek": { - "version": "2.16.3" - }, - "http-signature": { - "version": "1.1.1" - }, - "inflight": { - "version": "1.0.5" - }, - "inherits": { - "version": "2.0.1" - }, - "ini": { - "version": "1.3.4" - }, - "is-fullwidth-code-point": { - "version": "1.0.0" - }, - "is-my-json-valid": { - "version": "2.13.1" - }, - "is-typedarray": { - "version": "1.0.0" - }, - "is-property": { - "version": "1.0.2" - }, - "isarray": { - "version": "1.0.0" - }, - "isstream": { - "version": "0.1.2" - }, - "jodid25519": { - "version": "1.0.2" - }, - "jsbn": { - "version": "0.1.0" - }, - "json-schema": { - "version": "0.2.2" - }, - "json-stringify-safe": { - "version": "5.0.1" - }, - "jsonpointer": { - "version": "2.0.0" - }, - "jsprim": { - "version": "1.3.0" - }, - "mime-types": { - "version": "2.1.11" - }, - "mime-db": { - "version": "1.23.0" - }, - "minimatch": { - "version": "3.0.2" - }, - "minimist": { - "version": "0.0.8" - }, - "mkdirp": { - "version": "0.5.1" - }, - "ms": { - "version": "0.7.1" - }, - "node-uuid": { - "version": "1.4.7" - }, - "nopt": { - "version": "3.0.6" - }, - "npmlog": { - "version": "3.1.2" - }, - "number-is-nan": { - "version": "1.0.0" - }, - "oauth-sign": { - "version": "0.8.2" - }, - "object-assign": { - "version": "4.1.0" - }, - "once": { - "version": "1.3.3" - }, - "path-is-absolute": { - "version": "1.0.0" - }, - "pinkie": { - "version": "2.0.4" - }, - "pinkie-promise": { - "version": "2.0.1" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "qs": { - "version": "6.2.0" - }, - "request": { - "version": "2.73.0" - }, - "readable-stream": { - "version": "2.1.4" - }, - "rimraf": { - "version": "2.5.3" - }, - "semver": { - "version": "5.2.0" - }, - "set-blocking": { - "version": "2.0.0" - }, - "signal-exit": { - "version": "3.0.0" - }, - "sntp": { - "version": "1.0.9" - }, - "string-width": { - "version": "1.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "strip-ansi": { - "version": "3.0.1" - }, - "stringstream": { - "version": "0.0.5" - }, - "strip-json-comments": { - "version": "1.0.4" - }, - "supports-color": { - "version": "2.0.0" - }, - "tar": { - "version": "2.2.1" - }, - "tough-cookie": { - "version": "2.2.2" - }, - "tar-pack": { - "version": "3.1.4" - }, - "tunnel-agent": { - "version": "0.4.3" - }, - "tweetnacl": { - "version": "0.13.3" - }, - "uid-number": { - "version": "0.0.6" - }, - "util-deprecate": { - "version": "1.0.2" - }, - "verror": { - "version": "1.3.6" - }, - "wide-align": { - "version": "1.1.0" - }, - "wrappy": { - "version": "1.0.2" - }, - "xtend": { - "version": "4.0.1" - }, - "bl": { - "version": "1.1.2", - "dependencies": { - "readable-stream": { - "version": "2.0.6" - } - } - }, - "dashdash": { - "version": "1.14.0", - "dependencies": { - "assert-plus": { - "version": "1.0.0" - } - } - }, - "getpass": { - "version": "0.1.6", - "dependencies": { - "assert-plus": { - "version": "1.0.0" - } - } - }, - "rc": { - "version": "1.1.6", - "dependencies": { - "minimist": { - "version": "1.2.0" - } - } - }, - "sshpk": { - "version": "1.8.3", - "dependencies": { - "assert-plus": { - "version": "1.0.0" - } - } - } - } - } - } - }, - "yargs": { - "version": "3.32.0", - "dependencies": { - "camelcase": { - "version": "2.1.1" - }, - "cliui": { - "version": "3.2.0", - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "wrap-ansi": { - "version": "2.0.0" - } - } - }, - "decamelize": { - "version": "1.2.0" - }, - "os-locale": { - "version": "1.4.0", - "dependencies": { - "lcid": { - "version": "1.0.0", - "dependencies": { - "invert-kv": { - "version": "1.0.0" - } - } - } - } - }, - "string-width": { - "version": "1.0.2", - "dependencies": { - "code-point-at": { - "version": "1.1.0" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.1" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - } - } - }, - "window-size": { - "version": "0.1.4" - }, - "y18n": { - "version": "3.2.1" - } - } - } - } - }, - "q": { - "version": "1.4.1" - }, - "semver": { - "version": "5.3.0" - }, - "spdx-license-list": { - "version": "2.1.0" - }, - "typescript": { - "version": "1.8.10" - } - } - }, - "event-stream": { - "version": "3.1.7", - "dependencies": { - "through": { - "version": "2.3.8" - }, - "duplexer": { - "version": "0.1.1" - }, - "from": { - "version": "0.1.3" - }, - "map-stream": { - "version": "0.1.0" - }, - "pause-stream": { - "version": "0.0.11" - }, - "split": { - "version": "0.2.10" - }, - "stream-combiner": { - "version": "0.0.4" - } - } - }, - "glob": { - "version": "6.0.4", - "dependencies": { - "inflight": { - "version": "1.0.4", - "dependencies": { - "wrappy": { - "version": "1.0.1" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.0", - "dependencies": { - "brace-expansion": { - "version": "1.1.4", - "dependencies": { - "balanced-match": { - "version": "0.4.1" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.1" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - }, - "grunt": { - "version": "1.0.1", - "dependencies": { - "coffee-script": { - "version": "1.10.0" - }, - "dateformat": { - "version": "1.0.12", - "dependencies": { - "get-stdin": { - "version": "4.0.1" - }, - "meow": { - "version": "3.7.0", - "dependencies": { - "camelcase-keys": { - "version": "2.1.0", - "dependencies": { - "camelcase": { - "version": "2.1.1" - } - } - }, - "decamelize": { - "version": "1.2.0" - }, - "loud-rejection": { - "version": "1.6.0", - "dependencies": { - "currently-unhandled": { - "version": "0.4.1", - "dependencies": { - "array-find-index": { - "version": "1.0.1" - } - } - }, - "signal-exit": { - "version": "3.0.0" - } - } - }, - "map-obj": { - "version": "1.0.1" - }, - "minimist": { - "version": "1.2.0" - }, - "normalize-package-data": { - "version": "2.3.5", - "dependencies": { - "hosted-git-info": { - "version": "2.1.5" - }, - "is-builtin-module": { - "version": "1.0.0", - "dependencies": { - "builtin-modules": { - "version": "1.1.1" - } - } - }, - "validate-npm-package-license": { - "version": "3.0.1", - "dependencies": { - "spdx-correct": { - "version": "1.0.2", - "dependencies": { - "spdx-license-ids": { - "version": "1.2.2" - } - } - }, - "spdx-expression-parse": { - "version": "1.0.2", - "dependencies": { - "spdx-exceptions": { - "version": "1.0.5" - }, - "spdx-license-ids": { - "version": "1.2.2" - } - } - } - } - } - } - }, - "object-assign": { - "version": "4.1.0" - }, - "read-pkg-up": { - "version": "1.0.1", - "dependencies": { - "find-up": { - "version": "1.1.2", - "dependencies": { - "path-exists": { - "version": "2.1.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "dependencies": { - "graceful-fs": { - "version": "4.1.5" - }, - "parse-json": { - "version": "2.2.0", - "dependencies": { - "error-ex": { - "version": "1.3.0", - "dependencies": { - "is-arrayish": { - "version": "0.2.1" - } - } - } - } - }, - "pify": { - "version": "2.3.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - }, - "strip-bom": { - "version": "2.0.0", - "dependencies": { - "is-utf8": { - "version": "0.2.1" - } - } - } - } - }, - "path-type": { - "version": "1.1.0", - "dependencies": { - "graceful-fs": { - "version": "4.1.5" - }, - "pify": { - "version": "2.3.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - } - } - } - } - } - } - }, - "redent": { - "version": "1.0.0", - "dependencies": { - "indent-string": { - "version": "2.1.0", - "dependencies": { - "repeating": { - "version": "2.0.1", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - } - } - } - } - }, - "strip-indent": { - "version": "1.0.1" - } - } - }, - "trim-newlines": { - "version": "1.0.0" - } - } - } - } - }, - "eventemitter2": { - "version": "0.4.14" - }, - "exit": { - "version": "0.1.2" - }, - "findup-sync": { - "version": "0.3.0", - "dependencies": { - "glob": { - "version": "5.0.15", - "dependencies": { - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - } - } - } - } - }, - "glob": { - "version": "7.0.5", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - } - } - }, - "grunt-known-options": { - "version": "1.1.0" - }, - "grunt-legacy-log": { - "version": "1.0.0", - "dependencies": { - "colors": { - "version": "1.1.2" - }, - "grunt-legacy-log-utils": { - "version": "1.0.0", - "dependencies": { - "chalk": { - "version": "1.1.3", - "dependencies": { - "ansi-styles": { - "version": "2.2.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "2.0.0", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "supports-color": { - "version": "2.0.0" - } - } - }, - "lodash": { - "version": "4.3.0" - } - } - }, - "hooker": { - "version": "0.2.3" - }, - "lodash": { - "version": "3.10.1" - }, - "underscore.string": { - "version": "3.2.3" - } - } - }, - "grunt-legacy-util": { - "version": "1.0.0", - "dependencies": { - "async": { - "version": "1.5.2" - }, - "getobject": { - "version": "0.1.0" - }, - "hooker": { - "version": "0.2.3" - }, - "lodash": { - "version": "4.3.0" - }, - "underscore.string": { - "version": "3.2.3" - }, - "which": { - "version": "1.2.10", - "dependencies": { - "isexe": { - "version": "1.1.2" - } - } - } - } - }, - "iconv-lite": { - "version": "0.4.13" - }, - "js-yaml": { - "version": "3.5.5", - "dependencies": { - "argparse": { - "version": "1.0.7", - "dependencies": { - "sprintf-js": { - "version": "1.0.3" - } - } - }, - "esprima": { - "version": "2.7.2" - } - } - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "nopt": { - "version": "3.0.6", - "dependencies": { - "abbrev": { - "version": "1.0.9" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - }, - "rimraf": { - "version": "2.2.8" - } - } - }, - "grunt-bump": { - "version": "0.8.0", - "dependencies": { - "semver": { - "version": "5.3.0" - } - } - }, - "grunt-cli": { - "version": "1.2.0", - "dependencies": { - "findup-sync": { - "version": "0.3.0", - "dependencies": { - "glob": { - "version": "5.0.15", - "dependencies": { - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - } - } - }, - "grunt-known-options": { - "version": "1.1.0" - }, - "nopt": { - "version": "3.0.6", - "dependencies": { - "abbrev": { - "version": "1.0.9" - } - } - }, - "resolve": { - "version": "1.1.7" - } - } - }, - "grunt-contrib-clean": { - "version": "1.0.0", - "dependencies": { - "async": { - "version": "1.5.2" - }, - "rimraf": { - "version": "2.5.4", - "dependencies": { - "glob": { - "version": "7.0.5", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - } - } - } - } - }, - "grunt-contrib-compress": { - "version": "1.3.0", - "dependencies": { - "archiver": { - "version": "1.0.1", - "dependencies": { - "archiver-utils": { - "version": "1.2.0", - "dependencies": { - "graceful-fs": { - "version": "4.1.5" - }, - "lazystream": { - "version": "1.0.0" - }, - "normalize-path": { - "version": "2.0.1" - } - } - }, - "async": { - "version": "2.0.1" - }, - "buffer-crc32": { - "version": "0.2.5" - }, - "glob": { - "version": "7.0.5", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - }, - "readable-stream": { - "version": "2.1.4", - "dependencies": { - "buffer-shims": { - "version": "1.0.0" - }, - "core-util-is": { - "version": "1.0.2" - }, - "inherits": { - "version": "2.0.1" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - }, - "tar-stream": { - "version": "1.5.2", - "dependencies": { - "bl": { - "version": "1.1.2", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "inherits": { - "version": "2.0.1" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - } - } - }, - "end-of-stream": { - "version": "1.1.0", - "dependencies": { - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - } - } - }, - "xtend": { - "version": "4.0.1" - } - } - }, - "zip-stream": { - "version": "1.0.0", - "dependencies": { - "compress-commons": { - "version": "1.0.0", - "dependencies": { - "crc32-stream": { - "version": "1.0.0" - }, - "node-int64": { - "version": "0.4.0" - }, - "normalize-path": { - "version": "2.0.1" - } - } - } - } - } - } - }, - "chalk": { - "version": "1.1.3", - "dependencies": { - "ansi-styles": { - "version": "2.2.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "2.0.0", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "supports-color": { - "version": "2.0.0" - } - } - }, - "lodash": { - "version": "4.14.1" - }, - "pretty-bytes": { - "version": "3.0.1", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - }, - "stream-buffers": { - "version": "2.2.0" - } - } - }, - "grunt-contrib-connect": { - "version": "1.0.2", - "dependencies": { - "async": { - "version": "1.5.2" - }, - "connect": { - "version": "3.4.1", - "dependencies": { - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - }, - "finalhandler": { - "version": "0.4.1", - "dependencies": { - "escape-html": { - "version": "1.0.3" - }, - "on-finished": { - "version": "2.3.0", - "dependencies": { - "ee-first": { - "version": "1.1.1" - } - } - }, - "unpipe": { - "version": "1.0.0" - } - } - }, - "parseurl": { - "version": "1.3.1" - }, - "utils-merge": { - "version": "1.0.0" - } - } - }, - "connect-livereload": { - "version": "0.5.4" - }, - "http2": { - "version": "3.3.4" - }, - "morgan": { - "version": "1.7.0", - "dependencies": { - "basic-auth": { - "version": "1.0.4" - }, - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - }, - "depd": { - "version": "1.1.0" - }, - "on-finished": { - "version": "2.3.0", - "dependencies": { - "ee-first": { - "version": "1.1.1" - } - } - }, - "on-headers": { - "version": "1.0.1" - } - } - }, - "opn": { - "version": "4.0.2", - "dependencies": { - "object-assign": { - "version": "4.1.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - } - } - }, - "portscanner": { - "version": "1.0.0", - "dependencies": { - "async": { - "version": "0.1.15" - } - } - } - } - }, - "grunt-contrib-copy": { - "version": "1.0.0", - "dependencies": { - "chalk": { - "version": "1.1.3", - "dependencies": { - "ansi-styles": { - "version": "2.2.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "2.0.0", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "supports-color": { - "version": "2.0.0" - } - } - }, - "file-sync-cmp": { - "version": "0.1.1" - } - } - }, - "grunt-ddescribe-iit": { - "version": "0.0.6", - "dependencies": { - "bluebird": { - "version": "2.10.2" - }, - "win-spawn": { - "version": "2.0.0" - } - } - }, - "grunt-eslint": { - "version": "19.0.0", - "dependencies": { - "chalk": { - "version": "1.1.3", - "dependencies": { - "ansi-styles": { - "version": "2.2.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "2.0.0", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "supports-color": { - "version": "2.0.0" - } - } - }, - "eslint": { - "version": "3.2.2", - "dependencies": { - "concat-stream": { - "version": "1.5.1", - "dependencies": { - "inherits": { - "version": "2.0.1" - }, - "typedarray": { - "version": "0.0.6" - }, - "readable-stream": { - "version": "2.0.6", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - } - } - }, - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - }, - "doctrine": { - "version": "1.2.2", - "dependencies": { - "esutils": { - "version": "1.1.6" - }, - "isarray": { - "version": "1.0.0" - } - } - }, - "escope": { - "version": "3.6.0", - "dependencies": { - "es6-map": { - "version": "0.1.4", - "dependencies": { - "d": { - "version": "0.1.1" - }, - "es5-ext": { - "version": "0.10.12" - }, - "es6-iterator": { - "version": "2.0.0" - }, - "es6-set": { - "version": "0.1.4" - }, - "es6-symbol": { - "version": "3.1.0" - }, - "event-emitter": { - "version": "0.3.4" - } - } - }, - "es6-weak-map": { - "version": "2.0.1", - "dependencies": { - "d": { - "version": "0.1.1" - }, - "es5-ext": { - "version": "0.10.12" - }, - "es6-iterator": { - "version": "2.0.0" - }, - "es6-symbol": { - "version": "3.1.0" - } - } - }, - "esrecurse": { - "version": "4.1.0", - "dependencies": { - "estraverse": { - "version": "4.1.1" - }, - "object-assign": { - "version": "4.1.0" - } - } - } - } - }, - "espree": { - "version": "3.1.7", - "dependencies": { - "acorn": { - "version": "3.3.0" - }, - "acorn-jsx": { - "version": "3.0.1" - } - } - }, - "estraverse": { - "version": "4.2.0" - }, - "esutils": { - "version": "2.0.2" - }, - "file-entry-cache": { - "version": "1.3.1", - "dependencies": { - "flat-cache": { - "version": "1.2.1", - "dependencies": { - "circular-json": { - "version": "0.3.1" - }, - "del": { - "version": "2.2.1", - "dependencies": { - "globby": { - "version": "5.0.0", - "dependencies": { - "array-union": { - "version": "1.0.2", - "dependencies": { - "array-uniq": { - "version": "1.0.3" - } - } - }, - "arrify": { - "version": "1.0.1" - } - } - }, - "is-path-cwd": { - "version": "1.0.0" - }, - "is-path-in-cwd": { - "version": "1.0.0", - "dependencies": { - "is-path-inside": { - "version": "1.0.0" - } - } - }, - "pify": { - "version": "2.3.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - }, - "rimraf": { - "version": "2.5.4" - } - } - }, - "graceful-fs": { - "version": "4.1.5" - }, - "write": { - "version": "0.2.1" - } - } - }, - "object-assign": { - "version": "4.1.0" - } - } - }, - "glob": { - "version": "7.0.5", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - }, - "globals": { - "version": "9.9.0" - }, - "ignore": { - "version": "3.1.3" - }, - "imurmurhash": { - "version": "0.1.4" - }, - "inquirer": { - "version": "0.12.0", - "dependencies": { - "ansi-escapes": { - "version": "1.4.0" - }, - "ansi-regex": { - "version": "2.0.0" - }, - "cli-cursor": { - "version": "1.0.2", - "dependencies": { - "restore-cursor": { - "version": "1.0.1", - "dependencies": { - "exit-hook": { - "version": "1.1.1" - }, - "onetime": { - "version": "1.1.0" - } - } - } - } - }, - "cli-width": { - "version": "2.1.0" - }, - "figures": { - "version": "1.7.0", - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5" - }, - "object-assign": { - "version": "4.1.0" - } - } - }, - "readline2": { - "version": "1.0.1", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - }, - "mute-stream": { - "version": "0.0.5" - } - } - }, - "run-async": { - "version": "0.1.0", - "dependencies": { - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - } - } - }, - "rx-lite": { - "version": "3.1.2" - }, - "string-width": { - "version": "1.0.1", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1" - }, - "through": { - "version": "2.3.8" - } - } - }, - "is-my-json-valid": { - "version": "2.13.1", - "dependencies": { - "generate-function": { - "version": "2.0.0" - }, - "generate-object-property": { - "version": "1.2.0", - "dependencies": { - "is-property": { - "version": "1.0.2" - } - } - }, - "jsonpointer": { - "version": "2.0.0" - }, - "xtend": { - "version": "4.0.1" - } - } - }, - "is-resolvable": { - "version": "1.0.0", - "dependencies": { - "tryit": { - "version": "1.0.2" - } - } - }, - "js-yaml": { - "version": "3.6.1", - "dependencies": { - "argparse": { - "version": "1.0.7", - "dependencies": { - "sprintf-js": { - "version": "1.0.3" - } - } - }, - "esprima": { - "version": "2.7.2" - } - } - }, - "json-stable-stringify": { - "version": "1.0.1", - "dependencies": { - "jsonify": { - "version": "0.0.0" - } - } - }, - "levn": { - "version": "0.3.0", - "dependencies": { - "prelude-ls": { - "version": "1.1.2" - }, - "type-check": { - "version": "0.3.2" - } - } - }, - "lodash": { - "version": "4.14.1" - }, - "mkdirp": { - "version": "0.5.1", - "dependencies": { - "minimist": { - "version": "0.0.8" - } - } - }, - "optionator": { - "version": "0.8.1", - "dependencies": { - "prelude-ls": { - "version": "1.1.2" - }, - "deep-is": { - "version": "0.1.3" - }, - "wordwrap": { - "version": "1.0.0" - }, - "type-check": { - "version": "0.3.2" - }, - "fast-levenshtein": { - "version": "1.1.4" - } - } - }, - "path-is-inside": { - "version": "1.0.1" - }, - "pluralize": { - "version": "1.2.1" - }, - "progress": { - "version": "1.1.8" - }, - "require-uncached": { - "version": "1.0.2", - "dependencies": { - "caller-path": { - "version": "0.1.0", - "dependencies": { - "callsites": { - "version": "0.2.0" - } - } - }, - "resolve-from": { - "version": "1.0.1" - } - } - }, - "shelljs": { - "version": "0.6.0" - }, - "strip-bom": { - "version": "3.0.0" - }, - "strip-json-comments": { - "version": "1.0.4" - }, - "table": { - "version": "3.7.8", - "dependencies": { - "bluebird": { - "version": "3.4.1" - }, - "slice-ansi": { - "version": "0.0.4" - }, - "string-width": { - "version": "1.0.1", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "tv4": { - "version": "1.2.7" - }, - "xregexp": { - "version": "3.1.1" - } - } - }, - "text-table": { - "version": "0.2.0" - }, - "user-home": { - "version": "2.0.0", - "dependencies": { - "os-homedir": { - "version": "1.0.1" - } - } - } - } - } - } - }, - "grunt-merge-conflict": { - "version": "0.0.2" - }, - "grunt-shell": { - "version": "1.3.0", - "dependencies": { - "chalk": { - "version": "1.1.3", - "dependencies": { - "ansi-styles": { - "version": "2.2.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "2.0.0", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "supports-color": { - "version": "2.0.0" - } - } - }, - "npm-run-path": { - "version": "1.0.0", - "dependencies": { - "path-key": { - "version": "1.0.0" - } - } - }, - "object-assign": { - "version": "4.1.0" - } - } - }, - "gulp": { - "version": "3.8.11", - "dependencies": { - "archy": { - "version": "1.0.0" - }, - "chalk": { - "version": "0.5.1", - "dependencies": { - "ansi-styles": { - "version": "1.1.0" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "0.1.0", - "dependencies": { - "ansi-regex": { - "version": "0.2.1" - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "dependencies": { - "ansi-regex": { - "version": "0.2.1" - } - } - }, - "supports-color": { - "version": "0.2.0" - } - } - }, - "deprecated": { - "version": "0.0.1" - }, - "interpret": { - "version": "0.3.10" - }, - "liftoff": { - "version": "2.2.1", - "dependencies": { - "extend": { - "version": "2.0.1" - }, - "findup-sync": { - "version": "0.3.0", - "dependencies": { - "glob": { - "version": "5.0.15", - "dependencies": { - "inflight": { - "version": "1.0.4", - "dependencies": { - "wrappy": { - "version": "1.0.1" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.0", - "dependencies": { - "brace-expansion": { - "version": "1.1.4", - "dependencies": { - "balanced-match": { - "version": "0.4.1" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.1" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - } - } - }, - "flagged-respawn": { - "version": "0.3.2" - }, - "rechoir": { - "version": "0.6.2" - }, - "resolve": { - "version": "1.1.7" - } - } - }, - "minimist": { - "version": "1.2.0" - }, - "orchestrator": { - "version": "0.3.7", - "dependencies": { - "end-of-stream": { - "version": "0.1.5", - "dependencies": { - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.1" - } - } - } - } - }, - "sequencify": { - "version": "0.0.7" - }, - "stream-consume": { - "version": "0.1.0" - } - } - }, - "pretty-hrtime": { - "version": "0.2.2" - }, - "semver": { - "version": "4.3.6" - }, - "tildify": { - "version": "1.2.0", - "dependencies": { - "os-homedir": { - "version": "1.0.1" - } - } - }, - "v8flags": { - "version": "2.0.11", - "dependencies": { - "user-home": { - "version": "1.1.1" - } - } - }, - "vinyl-fs": { - "version": "0.3.14", - "dependencies": { - "defaults": { - "version": "1.0.3", - "dependencies": { - "clone": { - "version": "1.0.2" - } - } - }, - "glob-stream": { - "version": "3.1.18", - "dependencies": { - "glob": { - "version": "4.5.3", - "dependencies": { - "inflight": { - "version": "1.0.4", - "dependencies": { - "wrappy": { - "version": "1.0.1" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.1" - } - } - } - } - }, - "minimatch": { - "version": "2.0.10", - "dependencies": { - "brace-expansion": { - "version": "1.1.4", - "dependencies": { - "balanced-match": { - "version": "0.4.1" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "ordered-read-streams": { - "version": "0.1.0" - }, - "glob2base": { - "version": "0.0.12", - "dependencies": { - "find-index": { - "version": "0.1.1" - } - } - }, - "unique-stream": { - "version": "1.0.0" - } - } - }, - "glob-watcher": { - "version": "0.0.6", - "dependencies": { - "gaze": { - "version": "0.5.2", - "dependencies": { - "globule": { - "version": "0.1.0", - "dependencies": { - "lodash": { - "version": "1.0.2" - }, - "glob": { - "version": "3.1.21", - "dependencies": { - "graceful-fs": { - "version": "1.2.3" - }, - "inherits": { - "version": "1.0.2" - } - } - }, - "minimatch": { - "version": "0.2.14", - "dependencies": { - "lru-cache": { - "version": "2.7.3" - }, - "sigmund": { - "version": "1.0.1" - } - } - } - } - } - } - } - } - }, - "graceful-fs": { - "version": "3.0.8" - }, - "mkdirp": { - "version": "0.5.1", - "dependencies": { - "minimist": { - "version": "0.0.8" - } - } - }, - "strip-bom": { - "version": "1.0.0", - "dependencies": { - "first-chunk-stream": { - "version": "1.0.0" - }, - "is-utf8": { - "version": "0.2.1" - } - } - }, - "through2": { - "version": "0.6.5", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "xtend": { - "version": "4.0.1" - } - } - }, - "vinyl": { - "version": "0.4.6", - "dependencies": { - "clone": { - "version": "0.2.0" - }, - "clone-stats": { - "version": "0.0.1" - } - } - } - } - } - } - }, - "gulp-concat": { - "version": "2.6.0", - "dependencies": { - "concat-with-sourcemaps": { - "version": "1.0.4", - "dependencies": { - "source-map": { - "version": "0.5.6" - } - } - }, - "through2": { - "version": "0.6.5", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "xtend": { - "version": "4.0.1" - } - } - } - } - }, - "gulp-eslint": { - "version": "3.0.1", - "dependencies": { - "bufferstreams": { - "version": "1.1.1", - "dependencies": { - "readable-stream": { - "version": "2.1.4", - "dependencies": { - "buffer-shims": { - "version": "1.0.0" - }, - "core-util-is": { - "version": "1.0.2" - }, - "inherits": { - "version": "2.0.1" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - } - } - }, - "eslint": { - "version": "3.2.2", - "dependencies": { - "chalk": { - "version": "1.1.3", - "dependencies": { - "ansi-styles": { - "version": "2.2.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "2.0.0", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "supports-color": { - "version": "2.0.0" - } - } - }, - "concat-stream": { - "version": "1.5.1", - "dependencies": { - "inherits": { - "version": "2.0.1" - }, - "typedarray": { - "version": "0.0.6" - }, - "readable-stream": { - "version": "2.0.6", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - } - } - }, - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - }, - "doctrine": { - "version": "1.2.2", - "dependencies": { - "esutils": { - "version": "1.1.6" - }, - "isarray": { - "version": "1.0.0" - } - } - }, - "escope": { - "version": "3.6.0", - "dependencies": { - "es6-map": { - "version": "0.1.4", - "dependencies": { - "d": { - "version": "0.1.1" - }, - "es5-ext": { - "version": "0.10.12" - }, - "es6-iterator": { - "version": "2.0.0" - }, - "es6-set": { - "version": "0.1.4" - }, - "es6-symbol": { - "version": "3.1.0" - }, - "event-emitter": { - "version": "0.3.4" - } - } - }, - "es6-weak-map": { - "version": "2.0.1", - "dependencies": { - "d": { - "version": "0.1.1" - }, - "es5-ext": { - "version": "0.10.12" - }, - "es6-iterator": { - "version": "2.0.0" - }, - "es6-symbol": { - "version": "3.1.0" - } - } - }, - "esrecurse": { - "version": "4.1.0", - "dependencies": { - "estraverse": { - "version": "4.1.1" - }, - "object-assign": { - "version": "4.1.0" - } - } - } - } - }, - "espree": { - "version": "3.1.7", - "dependencies": { - "acorn": { - "version": "3.3.0" - }, - "acorn-jsx": { - "version": "3.0.1" - } - } - }, - "estraverse": { - "version": "4.2.0" - }, - "esutils": { - "version": "2.0.2" - }, - "file-entry-cache": { - "version": "1.3.1", - "dependencies": { - "flat-cache": { - "version": "1.2.1", - "dependencies": { - "circular-json": { - "version": "0.3.1" - }, - "del": { - "version": "2.2.1", - "dependencies": { - "globby": { - "version": "5.0.0", - "dependencies": { - "array-union": { - "version": "1.0.2", - "dependencies": { - "array-uniq": { - "version": "1.0.3" - } - } - }, - "arrify": { - "version": "1.0.1" - } - } - }, - "is-path-cwd": { - "version": "1.0.0" - }, - "is-path-in-cwd": { - "version": "1.0.0", - "dependencies": { - "is-path-inside": { - "version": "1.0.0" - } - } - }, - "pify": { - "version": "2.3.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - }, - "rimraf": { - "version": "2.5.4" - } - } - }, - "graceful-fs": { - "version": "4.1.5" - }, - "write": { - "version": "0.2.1" - } - } - }, - "object-assign": { - "version": "4.1.0" - } - } - }, - "glob": { - "version": "7.0.5", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - }, - "globals": { - "version": "9.9.0" - }, - "ignore": { - "version": "3.1.3" - }, - "imurmurhash": { - "version": "0.1.4" - }, - "inquirer": { - "version": "0.12.0", - "dependencies": { - "ansi-escapes": { - "version": "1.4.0" - }, - "ansi-regex": { - "version": "2.0.0" - }, - "cli-cursor": { - "version": "1.0.2", - "dependencies": { - "restore-cursor": { - "version": "1.0.1", - "dependencies": { - "exit-hook": { - "version": "1.1.1" - }, - "onetime": { - "version": "1.1.0" - } - } - } - } - }, - "cli-width": { - "version": "2.1.0" - }, - "figures": { - "version": "1.7.0", - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5" - }, - "object-assign": { - "version": "4.1.0" - } - } - }, - "readline2": { - "version": "1.0.1", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - }, - "mute-stream": { - "version": "0.0.5" - } - } - }, - "run-async": { - "version": "0.1.0", - "dependencies": { - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - } - } - }, - "rx-lite": { - "version": "3.1.2" - }, - "string-width": { - "version": "1.0.1", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1" - }, - "through": { - "version": "2.3.8" - } - } - }, - "is-my-json-valid": { - "version": "2.13.1", - "dependencies": { - "generate-function": { - "version": "2.0.0" - }, - "generate-object-property": { - "version": "1.2.0", - "dependencies": { - "is-property": { - "version": "1.0.2" - } - } - }, - "jsonpointer": { - "version": "2.0.0" - }, - "xtend": { - "version": "4.0.1" - } - } - }, - "is-resolvable": { - "version": "1.0.0", - "dependencies": { - "tryit": { - "version": "1.0.2" - } - } - }, - "js-yaml": { - "version": "3.6.1", - "dependencies": { - "argparse": { - "version": "1.0.7", - "dependencies": { - "sprintf-js": { - "version": "1.0.3" - } - } - }, - "esprima": { - "version": "2.7.2" - } - } - }, - "json-stable-stringify": { - "version": "1.0.1", - "dependencies": { - "jsonify": { - "version": "0.0.0" - } - } - }, - "levn": { - "version": "0.3.0", - "dependencies": { - "prelude-ls": { - "version": "1.1.2" - }, - "type-check": { - "version": "0.3.2" - } - } - }, - "lodash": { - "version": "4.14.1" - }, - "mkdirp": { - "version": "0.5.1", - "dependencies": { - "minimist": { - "version": "0.0.8" - } - } - }, - "optionator": { - "version": "0.8.1", - "dependencies": { - "prelude-ls": { - "version": "1.1.2" - }, - "deep-is": { - "version": "0.1.3" - }, - "wordwrap": { - "version": "1.0.0" - }, - "type-check": { - "version": "0.3.2" - }, - "fast-levenshtein": { - "version": "1.1.4" - } - } - }, - "path-is-inside": { - "version": "1.0.1" - }, - "pluralize": { - "version": "1.2.1" - }, - "progress": { - "version": "1.1.8" - }, - "require-uncached": { - "version": "1.0.2", - "dependencies": { - "caller-path": { - "version": "0.1.0", - "dependencies": { - "callsites": { - "version": "0.2.0" - } - } - }, - "resolve-from": { - "version": "1.0.1" - } - } - }, - "shelljs": { - "version": "0.6.0" - }, - "strip-bom": { - "version": "3.0.0" - }, - "strip-json-comments": { - "version": "1.0.4" - }, - "table": { - "version": "3.7.8", - "dependencies": { - "bluebird": { - "version": "3.4.1" - }, - "slice-ansi": { - "version": "0.0.4" - }, - "string-width": { - "version": "1.0.1", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "tv4": { - "version": "1.2.7" - }, - "xregexp": { - "version": "3.1.1" - } - } - }, - "text-table": { - "version": "0.2.0" - }, - "user-home": { - "version": "2.0.0", - "dependencies": { - "os-homedir": { - "version": "1.0.1" - } - } - } - } - } - } - }, - "gulp-foreach": { - "version": "0.0.1", - "dependencies": { - "gulp-util": { - "version": "2.2.20", - "dependencies": { - "chalk": { - "version": "0.5.1", - "dependencies": { - "ansi-styles": { - "version": "1.1.0" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "0.1.0", - "dependencies": { - "ansi-regex": { - "version": "0.2.1" - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "dependencies": { - "ansi-regex": { - "version": "0.2.1" - } - } - }, - "supports-color": { - "version": "0.2.0" - } - } - }, - "dateformat": { - "version": "1.0.12", - "dependencies": { - "get-stdin": { - "version": "4.0.1" - }, - "meow": { - "version": "3.7.0", - "dependencies": { - "camelcase-keys": { - "version": "2.1.0", - "dependencies": { - "camelcase": { - "version": "2.1.1" - } - } - }, - "decamelize": { - "version": "1.2.0" - }, - "loud-rejection": { - "version": "1.3.0", - "dependencies": { - "array-find-index": { - "version": "1.0.1" - }, - "signal-exit": { - "version": "2.1.2" - } - } - }, - "map-obj": { - "version": "1.0.1" - }, - "minimist": { - "version": "1.2.0" - }, - "normalize-package-data": { - "version": "2.3.5", - "dependencies": { - "hosted-git-info": { - "version": "2.1.4" - }, - "is-builtin-module": { - "version": "1.0.0", - "dependencies": { - "builtin-modules": { - "version": "1.1.1" - } - } - }, - "validate-npm-package-license": { - "version": "3.0.1", - "dependencies": { - "spdx-correct": { - "version": "1.0.2", - "dependencies": { - "spdx-license-ids": { - "version": "1.2.1" - } - } - }, - "spdx-expression-parse": { - "version": "1.0.2", - "dependencies": { - "spdx-exceptions": { - "version": "1.0.4" - }, - "spdx-license-ids": { - "version": "1.2.1" - } - } - } - } - } - } - }, - "object-assign": { - "version": "4.1.0" - }, - "read-pkg-up": { - "version": "1.0.1", - "dependencies": { - "find-up": { - "version": "1.1.2", - "dependencies": { - "path-exists": { - "version": "2.1.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "dependencies": { - "graceful-fs": { - "version": "4.1.4" - }, - "parse-json": { - "version": "2.2.0", - "dependencies": { - "error-ex": { - "version": "1.3.0", - "dependencies": { - "is-arrayish": { - "version": "0.2.1" - } - } - } - } - }, - "pify": { - "version": "2.3.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - }, - "strip-bom": { - "version": "2.0.0", - "dependencies": { - "is-utf8": { - "version": "0.2.1" - } - } - } - } - }, - "path-type": { - "version": "1.1.0", - "dependencies": { - "graceful-fs": { - "version": "4.1.4" - }, - "pify": { - "version": "2.3.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - } - } - } - } - } - } - }, - "redent": { - "version": "1.0.0", - "dependencies": { - "indent-string": { - "version": "2.1.0", - "dependencies": { - "repeating": { - "version": "2.0.1", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - } - } - } - } - }, - "strip-indent": { - "version": "1.0.1" - } - } - }, - "trim-newlines": { - "version": "1.0.0" - } - } - } - } - }, - "lodash._reinterpolate": { - "version": "2.4.1" - }, - "lodash.template": { - "version": "2.4.1", - "dependencies": { - "lodash.defaults": { - "version": "2.4.1", - "dependencies": { - "lodash._objecttypes": { - "version": "2.4.1" - } - } - }, - "lodash.escape": { - "version": "2.4.1", - "dependencies": { - "lodash._escapehtmlchar": { - "version": "2.4.1", - "dependencies": { - "lodash._htmlescapes": { - "version": "2.4.1" - } - } - }, - "lodash._reunescapedhtml": { - "version": "2.4.1", - "dependencies": { - "lodash._htmlescapes": { - "version": "2.4.1" - } - } - } - } - }, - "lodash._escapestringchar": { - "version": "2.4.1" - }, - "lodash.keys": { - "version": "2.4.1", - "dependencies": { - "lodash._isnative": { - "version": "2.4.1" - }, - "lodash.isobject": { - "version": "2.4.1", - "dependencies": { - "lodash._objecttypes": { - "version": "2.4.1" - } - } - }, - "lodash._shimkeys": { - "version": "2.4.1", - "dependencies": { - "lodash._objecttypes": { - "version": "2.4.1" - } - } - } - } - }, - "lodash.templatesettings": { - "version": "2.4.1" - }, - "lodash.values": { - "version": "2.4.1" - } - } - }, - "minimist": { - "version": "0.2.0" - }, - "multipipe": { - "version": "0.1.2", - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - } - } - } - } - }, - "through2": { - "version": "0.5.1", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "xtend": { - "version": "3.0.0" - } - } - }, - "vinyl": { - "version": "0.2.3", - "dependencies": { - "clone-stats": { - "version": "0.0.1" - } - } - } - } - }, - "through": { - "version": "2.3.8" - } - } - }, - "gulp-rename": { - "version": "1.2.2" - }, - "gulp-sourcemaps": { - "version": "1.6.0", - "dependencies": { - "convert-source-map": { - "version": "1.2.0" - }, - "graceful-fs": { - "version": "4.1.4" - }, - "strip-bom": { - "version": "2.0.0", - "dependencies": { - "is-utf8": { - "version": "0.2.1" - } - } - }, - "through2": { - "version": "2.0.1", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "inherits": { - "version": "2.0.1" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - }, - "xtend": { - "version": "4.0.1" - } - } - }, - "vinyl": { - "version": "1.1.1", - "dependencies": { - "clone": { - "version": "1.0.2" - }, - "clone-stats": { - "version": "0.0.1" - }, - "replace-ext": { - "version": "0.0.1" - } - } - } - } - }, - "gulp-uglify": { - "version": "1.5.3", - "dependencies": { - "deap": { - "version": "1.0.0" - }, - "fancy-log": { - "version": "1.2.0", - "dependencies": { - "chalk": { - "version": "1.1.3", - "dependencies": { - "ansi-styles": { - "version": "2.2.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "2.0.0", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "supports-color": { - "version": "2.0.0" - } - } - }, - "time-stamp": { - "version": "1.0.1" - } - } - }, - "isobject": { - "version": "2.1.0", - "dependencies": { - "isarray": { - "version": "1.0.0" - } - } - }, - "through2": { - "version": "2.0.1", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "inherits": { - "version": "2.0.1" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - }, - "xtend": { - "version": "4.0.1" - } - } - }, - "uglify-js": { - "version": "2.6.2", - "dependencies": { - "async": { - "version": "0.2.10" - }, - "source-map": { - "version": "0.5.6" - }, - "uglify-to-browserify": { - "version": "1.0.2" - }, - "yargs": { - "version": "3.10.0", - "dependencies": { - "camelcase": { - "version": "1.2.1" - }, - "cliui": { - "version": "2.1.0", - "dependencies": { - "center-align": { - "version": "0.1.3", - "dependencies": { - "align-text": { - "version": "0.1.4", - "dependencies": { - "kind-of": { - "version": "3.0.3", - "dependencies": { - "is-buffer": { - "version": "1.1.3" - } - } - }, - "longest": { - "version": "1.0.1" - }, - "repeat-string": { - "version": "1.5.4" - } - } - }, - "lazy-cache": { - "version": "1.0.4" - } - } - }, - "right-align": { - "version": "0.1.3", - "dependencies": { - "align-text": { - "version": "0.1.4", - "dependencies": { - "kind-of": { - "version": "3.0.3", - "dependencies": { - "is-buffer": { - "version": "1.1.3" - } - } - }, - "longest": { - "version": "1.0.1" - }, - "repeat-string": { - "version": "1.5.4" - } - } - } - } - }, - "wordwrap": { - "version": "0.0.2" - } - } - }, - "decamelize": { - "version": "1.2.0" - }, - "window-size": { - "version": "0.1.0" - } - } - } - } - }, - "uglify-save-license": { - "version": "0.4.1" - }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "dependencies": { - "source-map": { - "version": "0.5.6" - } - } - } - } - }, - "gulp-util": { - "version": "3.0.7", - "dependencies": { - "array-differ": { - "version": "1.0.0" - }, - "array-uniq": { - "version": "1.0.2" - }, - "beeper": { - "version": "1.1.0" - }, - "chalk": { - "version": "1.1.3", - "dependencies": { - "ansi-styles": { - "version": "2.2.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "2.0.0", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "supports-color": { - "version": "2.0.0" - } - } - }, - "dateformat": { - "version": "1.0.12", - "dependencies": { - "get-stdin": { - "version": "4.0.1" - }, - "meow": { - "version": "3.7.0", - "dependencies": { - "camelcase-keys": { - "version": "2.1.0", - "dependencies": { - "camelcase": { - "version": "2.1.1" - } - } - }, - "decamelize": { - "version": "1.2.0" - }, - "loud-rejection": { - "version": "1.3.0", - "dependencies": { - "array-find-index": { - "version": "1.0.1" - }, - "signal-exit": { - "version": "2.1.2" - } - } - }, - "map-obj": { - "version": "1.0.1" - }, - "normalize-package-data": { - "version": "2.3.5", - "dependencies": { - "hosted-git-info": { - "version": "2.1.4" - }, - "is-builtin-module": { - "version": "1.0.0", - "dependencies": { - "builtin-modules": { - "version": "1.1.1" - } - } - }, - "validate-npm-package-license": { - "version": "3.0.1", - "dependencies": { - "spdx-correct": { - "version": "1.0.2", - "dependencies": { - "spdx-license-ids": { - "version": "1.2.1" - } - } - }, - "spdx-expression-parse": { - "version": "1.0.2", - "dependencies": { - "spdx-exceptions": { - "version": "1.0.4" - }, - "spdx-license-ids": { - "version": "1.2.1" - } - } - } - } - } - } - }, - "object-assign": { - "version": "4.1.0" - }, - "read-pkg-up": { - "version": "1.0.1", - "dependencies": { - "find-up": { - "version": "1.1.2", - "dependencies": { - "path-exists": { - "version": "2.1.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "dependencies": { - "graceful-fs": { - "version": "4.1.4" - }, - "parse-json": { - "version": "2.2.0", - "dependencies": { - "error-ex": { - "version": "1.3.0", - "dependencies": { - "is-arrayish": { - "version": "0.2.1" - } - } - } - } - }, - "pify": { - "version": "2.3.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - }, - "strip-bom": { - "version": "2.0.0", - "dependencies": { - "is-utf8": { - "version": "0.2.1" - } - } - } - } - }, - "path-type": { - "version": "1.1.0", - "dependencies": { - "graceful-fs": { - "version": "4.1.4" - }, - "pify": { - "version": "2.3.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - } - } - } - } - } - } - }, - "redent": { - "version": "1.0.0", - "dependencies": { - "indent-string": { - "version": "2.1.0", - "dependencies": { - "repeating": { - "version": "2.0.1", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "dependencies": { - "number-is-nan": { - "version": "1.0.0" - } - } - } - } - } - } - }, - "strip-indent": { - "version": "1.0.1" - } - } - }, - "trim-newlines": { - "version": "1.0.0" - } - } - } - } - }, - "fancy-log": { - "version": "1.2.0", - "dependencies": { - "time-stamp": { - "version": "1.0.1" - } - } - }, - "gulplog": { - "version": "1.0.0", - "dependencies": { - "glogg": { - "version": "1.0.0", - "dependencies": { - "sparkles": { - "version": "1.0.0" - } - } - } - } - }, - "has-gulplog": { - "version": "0.1.0", - "dependencies": { - "sparkles": { - "version": "1.0.0" - } - } - }, - "lodash._reescape": { - "version": "3.0.0" - }, - "lodash._reevaluate": { - "version": "3.0.0" - }, - "lodash._reinterpolate": { - "version": "3.0.0" - }, - "lodash.template": { - "version": "3.6.2", - "dependencies": { - "lodash._basecopy": { - "version": "3.0.1" - }, - "lodash._basetostring": { - "version": "3.0.1" - }, - "lodash._basevalues": { - "version": "3.0.0" - }, - "lodash._isiterateecall": { - "version": "3.0.9" - }, - "lodash.escape": { - "version": "3.2.0", - "dependencies": { - "lodash._root": { - "version": "3.0.1" - } - } - }, - "lodash.keys": { - "version": "3.1.2", - "dependencies": { - "lodash._getnative": { - "version": "3.9.1" - }, - "lodash.isarguments": { - "version": "3.0.8" - }, - "lodash.isarray": { - "version": "3.0.4" - } - } - }, - "lodash.restparam": { - "version": "3.6.1" - }, - "lodash.templatesettings": { - "version": "3.1.1" - } - } - }, - "minimist": { - "version": "1.2.0" - }, - "multipipe": { - "version": "0.1.2", - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - } - } - } - } - }, - "object-assign": { - "version": "3.0.0" - }, - "replace-ext": { - "version": "0.0.1" - }, - "through2": { - "version": "2.0.1", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "inherits": { - "version": "2.0.1" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - }, - "xtend": { - "version": "4.0.1" - } - } - }, - "vinyl": { - "version": "0.5.3", - "dependencies": { - "clone": { - "version": "1.0.2" - }, - "clone-stats": { - "version": "0.0.1" - } - } - } - } - }, - "jasmine-core": { - "version": "2.4.1" - }, - "jasmine-node": { - "version": "2.0.0", - "dependencies": { - "coffee-script": { - "version": "1.7.1" - }, - "walkdir": { - "version": "0.0.11" - }, - "underscore": { - "version": "1.6.0" - }, - "gaze": { - "version": "0.5.2", - "dependencies": { - "globule": { - "version": "0.1.0", - "dependencies": { - "lodash": { - "version": "1.0.2" - }, - "glob": { - "version": "3.1.21", - "dependencies": { - "graceful-fs": { - "version": "1.2.3" - }, - "inherits": { - "version": "1.0.2" - } - } - }, - "minimatch": { - "version": "0.2.14", - "dependencies": { - "lru-cache": { - "version": "2.7.3" - }, - "sigmund": { - "version": "1.0.1" - } - } - } - } - } - } - }, - "mkdirp": { - "version": "0.3.5" - }, - "minimist": { - "version": "0.0.8" - }, - "jasmine-growl-reporter": { - "version": "0.2.1", - "dependencies": { - "growl": { - "version": "1.7.0" - } - } - } - } - }, - "jasmine-reporters": { - "version": "2.2.0", - "dependencies": { - "jasmine": { - "version": "2.4.1", - "dependencies": { - "exit": { - "version": "0.1.2" - }, - "glob": { - "version": "3.2.11", - "dependencies": { - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "0.3.0", - "dependencies": { - "lru-cache": { - "version": "2.7.3" - }, - "sigmund": { - "version": "1.0.1" - } - } - } - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "dependencies": { - "minimist": { - "version": "0.0.8" - } - } - }, - "xmldom": { - "version": "0.1.22" - } - } - }, - "karma": { - "version": "1.1.2", - "dependencies": { - "bluebird": { - "version": "3.4.1" - }, - "body-parser": { - "version": "1.15.2", - "dependencies": { - "bytes": { - "version": "2.4.0" - }, - "content-type": { - "version": "1.0.2" - }, - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - }, - "depd": { - "version": "1.1.0" - }, - "http-errors": { - "version": "1.5.0", - "dependencies": { - "inherits": { - "version": "2.0.1" - }, - "setprototypeof": { - "version": "1.0.1" - }, - "statuses": { - "version": "1.3.0" - } - } - }, - "iconv-lite": { - "version": "0.4.13" - }, - "on-finished": { - "version": "2.3.0", - "dependencies": { - "ee-first": { - "version": "1.1.1" - } - } - }, - "qs": { - "version": "6.2.0" - }, - "raw-body": { - "version": "2.1.7", - "dependencies": { - "unpipe": { - "version": "1.0.0" - } - } - }, - "type-is": { - "version": "1.6.13", - "dependencies": { - "media-typer": { - "version": "0.3.0" - }, - "mime-types": { - "version": "2.1.11", - "dependencies": { - "mime-db": { - "version": "1.23.0" - } - } - } - } - } - } - }, - "chokidar": { - "version": "1.6.0", - "dependencies": { - "anymatch": { - "version": "1.3.0", - "dependencies": { - "arrify": { - "version": "1.0.1" - }, - "micromatch": { - "version": "2.3.11", - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "dependencies": { - "arr-flatten": { - "version": "1.0.1" - } - } - }, - "array-unique": { - "version": "0.2.1" - }, - "braces": { - "version": "1.8.5", - "dependencies": { - "expand-range": { - "version": "1.8.2", - "dependencies": { - "fill-range": { - "version": "2.2.3", - "dependencies": { - "is-number": { - "version": "2.1.0" - }, - "isobject": { - "version": "2.1.0", - "dependencies": { - "isarray": { - "version": "1.0.0" - } - } - }, - "randomatic": { - "version": "1.1.5" - }, - "repeat-string": { - "version": "1.5.4" - } - } - } - } - }, - "preserve": { - "version": "0.2.0" - }, - "repeat-element": { - "version": "1.1.2" - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "dependencies": { - "is-posix-bracket": { - "version": "0.1.1" - } - } - }, - "extglob": { - "version": "0.3.2" - }, - "filename-regex": { - "version": "2.0.0" - }, - "is-extglob": { - "version": "1.0.0" - }, - "kind-of": { - "version": "3.0.4", - "dependencies": { - "is-buffer": { - "version": "1.1.4" - } - } - }, - "normalize-path": { - "version": "2.0.1" - }, - "object.omit": { - "version": "2.0.0", - "dependencies": { - "for-own": { - "version": "0.1.4", - "dependencies": { - "for-in": { - "version": "0.1.5" - } - } - }, - "is-extendable": { - "version": "0.1.1" - } - } - }, - "parse-glob": { - "version": "3.0.4", - "dependencies": { - "glob-base": { - "version": "0.3.0" - }, - "is-dotfile": { - "version": "1.0.2" - } - } - }, - "regex-cache": { - "version": "0.4.3", - "dependencies": { - "is-equal-shallow": { - "version": "0.1.3" - }, - "is-primitive": { - "version": "2.0.0" - } - } - } - } - } - } - }, - "async-each": { - "version": "1.0.0" - }, - "glob-parent": { - "version": "2.0.0" - }, - "inherits": { - "version": "2.0.1" - }, - "is-binary-path": { - "version": "1.0.1", - "dependencies": { - "binary-extensions": { - "version": "1.5.0" - } - } - }, - "is-glob": { - "version": "2.0.1", - "dependencies": { - "is-extglob": { - "version": "1.0.0" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - }, - "readdirp": { - "version": "2.1.0", - "dependencies": { - "readable-stream": { - "version": "2.1.4", - "dependencies": { - "buffer-shims": { - "version": "1.0.0" - }, - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "1.0.0" - }, - "process-nextick-args": { - "version": "1.0.7" - }, - "string_decoder": { - "version": "0.10.31" - }, - "util-deprecate": { - "version": "1.0.2" - } - } - }, - "set-immediate-shim": { - "version": "1.0.1" - } - } - } - } - }, - "colors": { - "version": "1.1.2" - }, - "combine-lists": { - "version": "1.0.0", - "dependencies": { - "lodash": { - "version": "4.14.1" - } - } - }, - "connect": { - "version": "3.4.1", - "dependencies": { - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - }, - "finalhandler": { - "version": "0.4.1", - "dependencies": { - "escape-html": { - "version": "1.0.3" - }, - "on-finished": { - "version": "2.3.0", - "dependencies": { - "ee-first": { - "version": "1.1.1" - } - } - }, - "unpipe": { - "version": "1.0.0" - } - } - }, - "parseurl": { - "version": "1.3.1" - }, - "utils-merge": { - "version": "1.0.0" - } - } - }, - "core-js": { - "version": "2.4.1" - }, - "di": { - "version": "0.0.1" - }, - "dom-serialize": { - "version": "2.2.1", - "dependencies": { - "custom-event": { - "version": "1.0.0" - }, - "ent": { - "version": "2.2.0" - }, - "extend": { - "version": "3.0.0" - }, - "void-elements": { - "version": "2.0.1" - } - } - }, - "expand-braces": { - "version": "0.1.2", - "dependencies": { - "array-slice": { - "version": "0.2.3" - }, - "array-unique": { - "version": "0.2.1" - }, - "braces": { - "version": "0.1.5", - "dependencies": { - "expand-range": { - "version": "0.1.1", - "dependencies": { - "is-number": { - "version": "0.1.1" - }, - "repeat-string": { - "version": "0.2.2" - } - } - } - } - } - } - }, - "glob": { - "version": "7.0.5", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - }, - "graceful-fs": { - "version": "4.1.5" - }, - "http-proxy": { - "version": "1.14.0", - "dependencies": { - "eventemitter3": { - "version": "1.2.0" - }, - "requires-port": { - "version": "1.0.0" - } - } - }, - "isbinaryfile": { - "version": "3.0.0" - }, - "lodash": { - "version": "3.10.1" - }, - "mime": { - "version": "1.3.4" - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "optimist": { - "version": "0.6.1", - "dependencies": { - "wordwrap": { - "version": "0.0.3" - }, - "minimist": { - "version": "0.0.10" - } - } - }, - "qjobs": { - "version": "1.1.4" - }, - "rimraf": { - "version": "2.5.4" - }, - "socket.io": { - "version": "1.4.7", - "dependencies": { - "engine.io": { - "version": "1.6.10", - "dependencies": { - "base64id": { - "version": "0.1.0" - }, - "ws": { - "version": "1.0.1", - "dependencies": { - "options": { - "version": "0.0.6" - }, - "ultron": { - "version": "1.0.2" - } - } - }, - "engine.io-parser": { - "version": "1.2.4", - "dependencies": { - "after": { - "version": "0.8.1" - }, - "arraybuffer.slice": { - "version": "0.0.6" - }, - "base64-arraybuffer": { - "version": "0.1.2" - }, - "blob": { - "version": "0.0.4" - }, - "has-binary": { - "version": "0.1.6", - "dependencies": { - "isarray": { - "version": "0.0.1" - } - } - }, - "utf8": { - "version": "2.1.0" - } - } - }, - "accepts": { - "version": "1.1.4", - "dependencies": { - "mime-types": { - "version": "2.0.14", - "dependencies": { - "mime-db": { - "version": "1.12.0" - } - } - }, - "negotiator": { - "version": "0.4.9" - } - } - } - } - }, - "socket.io-parser": { - "version": "2.2.6", - "dependencies": { - "json3": { - "version": "3.3.2" - }, - "component-emitter": { - "version": "1.1.2" - }, - "isarray": { - "version": "0.0.1" - } - } - }, - "socket.io-client": { - "version": "1.4.6", - "dependencies": { - "engine.io-client": { - "version": "1.6.9", - "dependencies": { - "has-cors": { - "version": "1.1.0" - }, - "ws": { - "version": "1.0.1", - "dependencies": { - "options": { - "version": "0.0.6" - }, - "ultron": { - "version": "1.0.2" - } - } - }, - "xmlhttprequest-ssl": { - "version": "1.5.1" - }, - "component-emitter": { - "version": "1.1.2" - }, - "engine.io-parser": { - "version": "1.2.4", - "dependencies": { - "after": { - "version": "0.8.1" - }, - "arraybuffer.slice": { - "version": "0.0.6" - }, - "base64-arraybuffer": { - "version": "0.1.2" - }, - "blob": { - "version": "0.0.4" - }, - "has-binary": { - "version": "0.1.6", - "dependencies": { - "isarray": { - "version": "0.0.1" - } - } - }, - "utf8": { - "version": "2.1.0" - } - } - }, - "parsejson": { - "version": "0.0.1", - "dependencies": { - "better-assert": { - "version": "1.0.2", - "dependencies": { - "callsite": { - "version": "1.0.0" - } - } - } - } - }, - "parseqs": { - "version": "0.0.2", - "dependencies": { - "better-assert": { - "version": "1.0.2", - "dependencies": { - "callsite": { - "version": "1.0.0" - } - } - } - } - }, - "component-inherit": { - "version": "0.0.3" - }, - "yeast": { - "version": "0.1.2" - } - } - }, - "component-bind": { - "version": "1.0.0" - }, - "component-emitter": { - "version": "1.2.0" - }, - "object-component": { - "version": "0.0.3" - }, - "indexof": { - "version": "0.0.1" - }, - "parseuri": { - "version": "0.0.4", - "dependencies": { - "better-assert": { - "version": "1.0.2", - "dependencies": { - "callsite": { - "version": "1.0.0" - } - } - } - } - }, - "to-array": { - "version": "0.1.4" - }, - "backo2": { - "version": "1.0.2" - } - } - }, - "socket.io-adapter": { - "version": "0.4.0", - "dependencies": { - "socket.io-parser": { - "version": "2.2.2", - "dependencies": { - "debug": { - "version": "0.7.4" - }, - "json3": { - "version": "3.2.6" - }, - "component-emitter": { - "version": "1.1.2" - }, - "isarray": { - "version": "0.0.1" - } - } - } - } - }, - "has-binary": { - "version": "0.1.7", - "dependencies": { - "isarray": { - "version": "0.0.1" - } - } - }, - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - } - } - }, - "source-map": { - "version": "0.5.6" - }, - "tmp": { - "version": "0.0.28", - "dependencies": { - "os-tmpdir": { - "version": "1.0.1" - } - } - }, - "useragent": { - "version": "2.1.9", - "dependencies": { - "lru-cache": { - "version": "2.2.4" - } - } - } - } - }, - "karma-browserstack-launcher": { - "version": "1.0.1", - "dependencies": { - "browserstack": { - "version": "1.5.0", - "dependencies": { - "https-proxy-agent": { - "version": "1.0.0", - "dependencies": { - "agent-base": { - "version": "2.0.1", - "dependencies": { - "semver": { - "version": "5.0.3" - } - } - }, - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - }, - "extend": { - "version": "3.0.0" - } - } - } - } - }, - "q": { - "version": "1.4.1" - } - } - }, - "karma-chrome-launcher": { - "version": "1.0.1", - "dependencies": { - "fs-access": { - "version": "1.0.0", - "dependencies": { - "null-check": { - "version": "1.0.0" - } - } - }, - "which": { - "version": "1.2.10", - "dependencies": { - "isexe": { - "version": "1.1.2" - } - } - } - } - }, - "karma-firefox-launcher": { - "version": "1.0.0" - }, - "karma-jasmine": { - "version": "1.0.2" - }, - "karma-junit-reporter": { - "version": "1.1.0", - "dependencies": { - "path-is-absolute": { - "version": "1.0.0" - }, - "xmlbuilder": { - "version": "8.2.2" - } - } - }, - "karma-ng-scenario": { - "version": "1.0.0" - }, - "karma-sauce-launcher": { - "version": "1.0.0", - "dependencies": { - "q": { - "version": "1.4.1" - }, - "sauce-connect-launcher": { - "version": "0.13.0", - "dependencies": { - "lodash": { - "version": "3.10.1" - }, - "async": { - "version": "1.4.0" - }, - "adm-zip": { - "version": "0.4.7" - }, - "rimraf": { - "version": "2.4.3", - "dependencies": { - "glob": { - "version": "5.0.15", - "dependencies": { - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - } - } - } - } - }, - "saucelabs": { - "version": "1.2.0", - "dependencies": { - "https-proxy-agent": { - "version": "1.0.0", - "dependencies": { - "agent-base": { - "version": "2.0.1", - "dependencies": { - "semver": { - "version": "5.0.3" - } - } - }, - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - }, - "extend": { - "version": "3.0.0" - } - } - } - } - }, - "wd": { - "version": "0.3.12", - "dependencies": { - "archiver": { - "version": "0.14.4", - "dependencies": { - "async": { - "version": "0.9.2" - }, - "buffer-crc32": { - "version": "0.2.5" - }, - "glob": { - "version": "4.3.5", - "dependencies": { - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "2.0.10", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - } - } - }, - "lazystream": { - "version": "0.1.0" - }, - "lodash": { - "version": "3.2.0" - }, - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "tar-stream": { - "version": "1.1.5", - "dependencies": { - "bl": { - "version": "0.9.5" - }, - "end-of-stream": { - "version": "1.1.0", - "dependencies": { - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - } - } - }, - "xtend": { - "version": "4.0.1" - } - } - }, - "zip-stream": { - "version": "0.5.2", - "dependencies": { - "compress-commons": { - "version": "0.2.9", - "dependencies": { - "crc32-stream": { - "version": "0.3.4" - }, - "node-int64": { - "version": "0.3.3" - } - } - } - } - } - } - }, - "async": { - "version": "1.0.0" - }, - "lodash": { - "version": "3.9.3" - }, - "request": { - "version": "2.55.0", - "dependencies": { - "bl": { - "version": "0.9.5", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - } - } - }, - "caseless": { - "version": "0.9.0" - }, - "forever-agent": { - "version": "0.6.1" - }, - "form-data": { - "version": "0.2.0", - "dependencies": { - "async": { - "version": "0.9.2" - } - } - }, - "json-stringify-safe": { - "version": "5.0.1" - }, - "mime-types": { - "version": "2.0.14", - "dependencies": { - "mime-db": { - "version": "1.12.0" - } - } - }, - "node-uuid": { - "version": "1.4.7" - }, - "qs": { - "version": "2.4.2" - }, - "tunnel-agent": { - "version": "0.4.3" - }, - "tough-cookie": { - "version": "2.3.1" - }, - "http-signature": { - "version": "0.10.1", - "dependencies": { - "assert-plus": { - "version": "0.1.5" - }, - "asn1": { - "version": "0.1.11" - }, - "ctype": { - "version": "0.5.3" - } - } - }, - "oauth-sign": { - "version": "0.6.0" - }, - "hawk": { - "version": "2.3.1", - "dependencies": { - "hoek": { - "version": "2.16.3" - }, - "boom": { - "version": "2.10.1" - }, - "cryptiles": { - "version": "2.0.5" - }, - "sntp": { - "version": "1.0.9" - } - } - }, - "aws-sign2": { - "version": "0.5.0" - }, - "stringstream": { - "version": "0.0.5" - }, - "combined-stream": { - "version": "0.0.7", - "dependencies": { - "delayed-stream": { - "version": "0.0.5" - } - } - }, - "isstream": { - "version": "0.1.2" - }, - "har-validator": { - "version": "1.8.0", - "dependencies": { - "bluebird": { - "version": "2.10.2" - }, - "chalk": { - "version": "1.1.3", - "dependencies": { - "ansi-styles": { - "version": "2.2.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "2.0.0", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "supports-color": { - "version": "2.0.0" - } - } - }, - "commander": { - "version": "2.9.0", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1" - } - } - }, - "is-my-json-valid": { - "version": "2.13.1", - "dependencies": { - "generate-function": { - "version": "2.0.0" - }, - "generate-object-property": { - "version": "1.2.0", - "dependencies": { - "is-property": { - "version": "1.0.2" - } - } - }, - "jsonpointer": { - "version": "2.0.0" - }, - "xtend": { - "version": "4.0.1" - } - } - } - } - } - } - }, - "underscore.string": { - "version": "3.0.3" - }, - "vargs": { - "version": "0.1.0" - } - } - } - } - }, - "karma-script-launcher": { - "version": "1.0.0" - }, - "load-grunt-tasks": { - "version": "3.5.0", - "dependencies": { - "arrify": { - "version": "1.0.1" - }, - "multimatch": { - "version": "2.1.0", - "dependencies": { - "array-differ": { - "version": "1.0.0" - }, - "array-union": { - "version": "1.0.2", - "dependencies": { - "array-uniq": { - "version": "1.0.3" - } - } - }, - "minimatch": { - "version": "3.0.2", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - } - } - }, - "pkg-up": { - "version": "1.0.0", - "dependencies": { - "find-up": { - "version": "1.1.2", - "dependencies": { - "path-exists": { - "version": "2.1.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - } - } - } - } - }, - "resolve-pkg": { - "version": "0.1.0", - "dependencies": { - "resolve-from": { - "version": "2.0.0" - } - } - } - } - }, - "lodash": { - "version": "2.4.2" - }, - "log4js": { - "version": "0.6.38", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "dependencies": { - "core-util-is": { - "version": "1.0.2" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.31" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "semver": { - "version": "4.3.6" - } - } - }, - "marked": { - "version": "0.3.5" - }, - "node-html-encoder": { - "version": "0.0.2" - }, - "promises-aplus-tests": { - "version": "2.1.1", - "dependencies": { - "mocha": { - "version": "1.21.5", - "dependencies": { - "commander": { - "version": "2.3.0" - }, - "debug": { - "version": "2.0.0", - "dependencies": { - "ms": { - "version": "0.6.2" - } - } - }, - "diff": { - "version": "1.0.8" - }, - "escape-string-regexp": { - "version": "1.0.2" - }, - "glob": { - "version": "3.2.3", - "dependencies": { - "minimatch": { - "version": "0.2.14", - "dependencies": { - "lru-cache": { - "version": "2.7.3" - }, - "sigmund": { - "version": "1.0.1" - } - } - }, - "graceful-fs": { - "version": "2.0.3" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "growl": { - "version": "1.8.1" - }, - "jade": { - "version": "0.26.3", - "dependencies": { - "commander": { - "version": "0.6.1" - }, - "mkdirp": { - "version": "0.3.0" - } - } - }, - "mkdirp": { - "version": "0.5.0", - "dependencies": { - "minimist": { - "version": "0.0.8" - } - } - } - } - }, - "sinon": { - "version": "1.17.4", - "dependencies": { - "formatio": { - "version": "1.1.1" - }, - "util": { - "version": "0.10.3", - "dependencies": { - "inherits": { - "version": "2.0.1" - } - } - }, - "lolex": { - "version": "1.3.2" - }, - "samsam": { - "version": "1.1.2" - } - } - }, - "underscore": { - "version": "1.6.0" - } - } - }, - "protractor": { - "version": "4.0.10", - "dependencies": { - "@types/jasmine": { - "version": "2.5.37" - }, - "@types/node": { - "version": "6.0.46" - }, - "@types/q": { - "version": "0.0.32" - }, - "@types/selenium-webdriver": { - "version": "2.53.34" - }, - "adm-zip": { - "version": "0.4.7" - }, - "chalk": { - "version": "1.1.3", - "dependencies": { - "ansi-styles": { - "version": "2.2.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "has-ansi": { - "version": "2.0.0", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dependencies": { - "ansi-regex": { - "version": "2.0.0" - } - } - }, - "supports-color": { - "version": "2.0.0" - } - } - }, - "glob": { - "version": "7.1.1", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.6", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.3" - }, - "minimatch": { - "version": "3.0.3", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.4.0", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.1" - } - } - }, - "jasmine": { - "version": "2.5.2", - "dependencies": { - "exit": { - "version": "0.1.2" - }, - "jasmine-core": { - "version": "2.5.2" - } - } - }, - "jasminewd2": { - "version": "0.0.10" - }, - "optimist": { - "version": "0.6.1", - "dependencies": { - "wordwrap": { - "version": "0.0.3" - }, - "minimist": { - "version": "0.0.10" - } - } - }, - "q": { - "version": "1.4.1" - }, - "saucelabs": { - "version": "1.3.0", - "dependencies": { - "https-proxy-agent": { - "version": "1.0.0", - "dependencies": { - "agent-base": { - "version": "2.0.1", - "dependencies": { - "semver": { - "version": "5.0.3" - } - } - }, - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - }, - "extend": { - "version": "3.0.0" - } - } - } - } - }, - "source-map-support": { - "version": "0.4.6", - "dependencies": { - "source-map": { - "version": "0.5.6" - } - } - }, - "webdriver-manager": { - "version": "10.2.6", - "dependencies": { - "del": { - "version": "2.2.2", - "dependencies": { - "globby": { - "version": "5.0.0", - "dependencies": { - "array-union": { - "version": "1.0.2", - "dependencies": { - "array-uniq": { - "version": "1.0.3" - } - } - }, - "arrify": { - "version": "1.0.1" - } - } - }, - "is-path-cwd": { - "version": "1.0.0" - }, - "is-path-in-cwd": { - "version": "1.0.0", - "dependencies": { - "is-path-inside": { - "version": "1.0.0", - "dependencies": { - "path-is-inside": { - "version": "1.0.2" - } - } - } - } - }, - "object-assign": { - "version": "4.1.0" - }, - "pify": { - "version": "2.3.0" - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - } - } - }, - "ini": { - "version": "1.3.4" - }, - "minimist": { - "version": "1.2.0" - }, - "request": { - "version": "2.78.0", - "dependencies": { - "aws-sign2": { - "version": "0.6.0" - }, - "aws4": { - "version": "1.5.0" - }, - "caseless": { - "version": "0.11.0" - }, - "combined-stream": { - "version": "1.0.5", - "dependencies": { - "delayed-stream": { - "version": "1.0.0" - } - } - }, - "extend": { - "version": "3.0.0" - }, - "forever-agent": { - "version": "0.6.1" - }, - "form-data": { - "version": "2.1.1", - "dependencies": { - "asynckit": { - "version": "0.4.0" - } - } - }, - "har-validator": { - "version": "2.0.6", - "dependencies": { - "commander": { - "version": "2.9.0", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1" - } - } - }, - "is-my-json-valid": { - "version": "2.15.0", - "dependencies": { - "generate-function": { - "version": "2.0.0" - }, - "generate-object-property": { - "version": "1.2.0", - "dependencies": { - "is-property": { - "version": "1.0.2" - } - } - }, - "jsonpointer": { - "version": "4.0.0" - }, - "xtend": { - "version": "4.0.1" - } - } - }, - "pinkie-promise": { - "version": "2.0.1", - "dependencies": { - "pinkie": { - "version": "2.0.4" - } - } - } - } - }, - "hawk": { - "version": "3.1.3", - "dependencies": { - "hoek": { - "version": "2.16.3" - }, - "boom": { - "version": "2.10.1" - }, - "cryptiles": { - "version": "2.0.5" - }, - "sntp": { - "version": "1.0.9" - } - } - }, - "http-signature": { - "version": "1.1.1", - "dependencies": { - "assert-plus": { - "version": "0.2.0" - }, - "jsprim": { - "version": "1.3.1", - "dependencies": { - "extsprintf": { - "version": "1.0.2" - }, - "json-schema": { - "version": "0.2.3" - }, - "verror": { - "version": "1.3.6" - } - } - }, - "sshpk": { - "version": "1.10.1", - "dependencies": { - "asn1": { - "version": "0.2.3" - }, - "assert-plus": { - "version": "1.0.0" - }, - "dashdash": { - "version": "1.14.0" - }, - "getpass": { - "version": "0.1.6" - }, - "jsbn": { - "version": "0.1.0" - }, - "tweetnacl": { - "version": "0.14.3" - }, - "jodid25519": { - "version": "1.0.2" - }, - "ecc-jsbn": { - "version": "0.1.1" - }, - "bcrypt-pbkdf": { - "version": "1.0.0" - } - } - } - } - }, - "is-typedarray": { - "version": "1.0.0" - }, - "isstream": { - "version": "0.1.2" - }, - "json-stringify-safe": { - "version": "5.0.1" - }, - "mime-types": { - "version": "2.1.12", - "dependencies": { - "mime-db": { - "version": "1.24.0" - } - } - }, - "node-uuid": { - "version": "1.4.7" - }, - "oauth-sign": { - "version": "0.8.2" - }, - "qs": { - "version": "6.3.0" - }, - "stringstream": { - "version": "0.0.5" - }, - "tough-cookie": { - "version": "2.3.2", - "dependencies": { - "punycode": { - "version": "1.4.1" - } - } - }, - "tunnel-agent": { - "version": "0.4.3" - } - } - }, - "rimraf": { - "version": "2.5.4" - }, - "semver": { - "version": "5.3.0" - } - } - } - } - }, - "q": { - "version": "1.0.1" - }, - "q-io": { - "version": "1.13.2", - "dependencies": { - "qs": { - "version": "1.2.2" - }, - "url2": { - "version": "0.0.0" - }, - "mime": { - "version": "1.3.4" - }, - "mimeparse": { - "version": "0.1.4" - }, - "collections": { - "version": "0.2.2", - "dependencies": { - "weak-map": { - "version": "1.0.0" - } - } - } - } - }, - "qq": { - "version": "0.3.5", - "dependencies": { - "q": { - "version": "0.8.4" - } - } - }, - "rewire": { - "version": "2.1.5" - }, - "sax": { - "version": "1.2.1" - }, - "selenium-webdriver": { - "version": "2.53.3", - "dependencies": { - "adm-zip": { - "version": "0.4.4" - }, - "rimraf": { - "version": "2.5.4", - "dependencies": { - "glob": { - "version": "7.0.6", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.5", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.1" - }, - "minimatch": { - "version": "3.0.3", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.0" - } - } - } - } - }, - "tmp": { - "version": "0.0.24" - }, - "ws": { - "version": "1.1.1", - "dependencies": { - "options": { - "version": "0.0.6" - }, - "ultron": { - "version": "1.0.2" - } - } - }, - "xml2js": { - "version": "0.4.4", - "dependencies": { - "sax": { - "version": "0.6.1" - }, - "xmlbuilder": { - "version": "8.2.2" - } - } - } - } - }, - "semver": { - "version": "4.0.3" - }, - "serve-favicon": { - "version": "2.3.0", - "dependencies": { - "etag": { - "version": "1.7.0" - }, - "fresh": { - "version": "0.3.0" - }, - "ms": { - "version": "0.7.1" - }, - "parseurl": { - "version": "1.3.1" - } - } - }, - "serve-index": { - "version": "1.8.0", - "dependencies": { - "accepts": { - "version": "1.3.3", - "dependencies": { - "negotiator": { - "version": "0.6.1" - } - } - }, - "batch": { - "version": "0.5.3" - }, - "debug": { - "version": "2.2.0", - "dependencies": { - "ms": { - "version": "0.7.1" - } - } - }, - "escape-html": { - "version": "1.0.3" - }, - "http-errors": { - "version": "1.5.0", - "dependencies": { - "inherits": { - "version": "2.0.1" - }, - "setprototypeof": { - "version": "1.0.1" - }, - "statuses": { - "version": "1.3.0" - } - } - }, - "mime-types": { - "version": "2.1.11", - "dependencies": { - "mime-db": { - "version": "1.23.0" - } - } - }, - "parseurl": { - "version": "1.3.1" - } - } - }, - "serve-static": { - "version": "1.11.1", - "dependencies": { - "encodeurl": { - "version": "1.0.1" - }, - "escape-html": { - "version": "1.0.3" - }, - "parseurl": { - "version": "1.3.1" - }, - "send": { - "version": "0.14.1", - "dependencies": { - "debug": { - "version": "2.2.0" - }, - "depd": { - "version": "1.1.0" - }, - "destroy": { - "version": "1.0.4" - }, - "etag": { - "version": "1.7.0" - }, - "fresh": { - "version": "0.3.0" - }, - "http-errors": { - "version": "1.5.0", - "dependencies": { - "inherits": { - "version": "2.0.1" - }, - "setprototypeof": { - "version": "1.0.1" - } - } - }, - "mime": { - "version": "1.3.4" - }, - "ms": { - "version": "0.7.1" - }, - "on-finished": { - "version": "2.3.0", - "dependencies": { - "ee-first": { - "version": "1.1.1" - } - } - }, - "range-parser": { - "version": "1.2.0" - }, - "statuses": { - "version": "1.3.0" - } - } - } - } - }, - "shelljs": { - "version": "0.7.5", - "dependencies": { - "glob": { - "version": "7.1.1", - "dependencies": { - "fs.realpath": { - "version": "1.0.0" - }, - "inflight": { - "version": "1.0.6", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "inherits": { - "version": "2.0.3" - }, - "minimatch": { - "version": "3.0.3", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "dependencies": { - "balanced-match": { - "version": "0.4.2" - }, - "concat-map": { - "version": "0.0.1" - } - } - } - } - }, - "once": { - "version": "1.4.0", - "dependencies": { - "wrappy": { - "version": "1.0.2" - } - } - }, - "path-is-absolute": { - "version": "1.0.1" - } - } - }, - "interpret": { - "version": "1.0.1" - }, - "rechoir": { - "version": "0.6.2", - "dependencies": { - "resolve": { - "version": "1.1.7" - } - } - } - } - }, - "sorted-object": { - "version": "1.0.0" - }, - "stringmap": { - "version": "0.2.2" - } - }, - "name": "angularjs" -} diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json deleted file mode 100644 index 107db949fc98..000000000000 --- a/npm-shrinkwrap.json +++ /dev/null @@ -1,15811 +0,0 @@ -{ - "name": "angularjs", - "dependencies": { - "angular-benchpress": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/angular-benchpress/-/angular-benchpress-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/angular-benchpress/-/angular-benchpress-0.2.2.tgz", - "dependencies": { - "bootstrap": { - "version": "3.3.6", - "from": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.6.tgz", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.6.tgz" - }, - "express": { - "version": "4.14.0", - "from": "https://registry.npmjs.org/express/-/express-4.14.0.tgz", - "resolved": "https://registry.npmjs.org/express/-/express-4.14.0.tgz", - "dependencies": { - "accepts": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "dependencies": { - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - }, - "negotiator": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz" - } - } - }, - "array-flatten": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - }, - "content-disposition": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.1.tgz" - }, - "content-type": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" - }, - "cookie": { - "version": "0.3.1", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" - }, - "cookie-signature": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "depd": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "encodeurl": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz" - }, - "escape-html": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - }, - "etag": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" - }, - "finalhandler": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.0.tgz", - "dependencies": { - "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" - }, - "unpipe": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - } - } - }, - "fresh": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" - }, - "merge-descriptors": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - }, - "methods": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } - }, - "parseurl": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - }, - "path-to-regexp": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - }, - "proxy-addr": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.2.tgz", - "dependencies": { - "forwarded": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" - }, - "ipaddr.js": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.1.1.tgz" - } - } - }, - "qs": { - "version": "6.2.0", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" - }, - "range-parser": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" - }, - "send": { - "version": "0.14.1", - "from": "https://registry.npmjs.org/send/-/send-0.14.1.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.14.1.tgz", - "dependencies": { - "destroy": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" - }, - "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" - } - } - }, - "mime": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" - } - } - }, - "type-is": { - "version": "1.6.13", - "from": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", - "dependencies": { - "media-typer": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - } - } - }, - "utils-merge": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" - }, - "vary": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz" - } - } - }, - "minimist": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "rimraf": { - "version": "2.5.3", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.3.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.3.tgz", - "dependencies": { - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - }, - "underscore": { - "version": "1.8.3", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" - }, - "di": { - "version": "2.0.0-pre-9", - "from": "https://registry.npmjs.org/di/-/di-2.0.0-pre-9.tgz", - "resolved": "https://registry.npmjs.org/di/-/di-2.0.0-pre-9.tgz", - "dependencies": { - "traceur": { - "version": "0.0.33", - "from": "git://github.com/vojtajina/traceur-compiler.git#d90b1e34c799bf61cd1aafdc33db0a554fa9e617", - "resolved": "git://github.com/vojtajina/traceur-compiler.git#d90b1e34c799bf61cd1aafdc33db0a554fa9e617", - "dependencies": { - "commander": { - "version": "2.9.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - } - } - }, - "q-io": { - "version": "1.10.9", - "from": "https://registry.npmjs.org/q-io/-/q-io-1.10.9.tgz", - "resolved": "https://registry.npmjs.org/q-io/-/q-io-1.10.9.tgz", - "dependencies": { - "q": { - "version": "0.9.7", - "from": "https://registry.npmjs.org/q/-/q-0.9.7.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-0.9.7.tgz" - }, - "qs": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/qs/-/qs-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-0.1.0.tgz" - }, - "url2": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/url2/-/url2-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/url2/-/url2-0.0.0.tgz" - }, - "mime": { - "version": "1.2.11", - "from": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" - }, - "mimeparse": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/mimeparse/-/mimeparse-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/mimeparse/-/mimeparse-0.1.4.tgz" - }, - "collections": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/collections/-/collections-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/collections/-/collections-0.2.2.tgz", - "dependencies": { - "weak-map": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.0.tgz" - } - } - } - } - } - } - }, - "es6-shim": { - "version": "0.9.3", - "from": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.9.3.tgz", - "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.9.3.tgz" - } - } - }, - "rx": { - "version": "2.3.25", - "from": "https://registry.npmjs.org/rx/-/rx-2.3.25.tgz", - "resolved": "https://registry.npmjs.org/rx/-/rx-2.3.25.tgz" - }, - "browserify": { - "version": "7.0.3", - "from": "https://registry.npmjs.org/browserify/-/browserify-7.0.3.tgz", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-7.0.3.tgz", - "dependencies": { - "JSONStream": { - "version": "0.8.4", - "from": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", - "dependencies": { - "jsonparse": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz" - }, - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - }, - "assert": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/assert/-/assert-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.1.2.tgz" - }, - "browser-pack": { - "version": "3.2.0", - "from": "https://registry.npmjs.org/browser-pack/-/browser-pack-3.2.0.tgz", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-3.2.0.tgz", - "dependencies": { - "combine-source-map": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.3.0.tgz", - "dependencies": { - "inline-source-map": { - "version": "0.3.1", - "from": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.3.1.tgz", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.3.1.tgz", - "dependencies": { - "source-map": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - }, - "convert-source-map": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz" - }, - "source-map": { - "version": "0.1.43", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - }, - "through2": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - } - } - } - } - } - } - }, - "browser-resolve": { - "version": "1.11.2", - "from": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "dependencies": { - "resolve": { - "version": "1.1.7", - "from": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" - } - } - }, - "browserify-zlib": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "dependencies": { - "pako": { - "version": "0.2.8", - "from": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz" - } - } - }, - "buffer": { - "version": "2.8.2", - "from": "https://registry.npmjs.org/buffer/-/buffer-2.8.2.tgz", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-2.8.2.tgz", - "dependencies": { - "base64-js": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.7.tgz" - }, - "ieee754": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz" - }, - "is-array": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz" - } - } - }, - "builtins": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz" - }, - "commondir": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/commondir/-/commondir-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-0.0.1.tgz" - }, - "concat-stream": { - "version": "1.4.10", - "from": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.10.tgz", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.10.tgz", - "dependencies": { - "typedarray": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - } - } - }, - "console-browserify": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "dependencies": { - "date-now": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" - } - } - }, - "constants-browserify": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" - }, - "crypto-browserify": { - "version": "3.11.0", - "from": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", - "dependencies": { - "browserify-cipher": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "dependencies": { - "browserify-aes": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "dependencies": { - "buffer-xor": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - }, - "cipher-base": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz" - } - } - }, - "browserify-des": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "dependencies": { - "cipher-base": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz" - }, - "des.js": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "dependencies": { - "minimalistic-assert": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" - } - } - } - } - }, - "evp_bytestokey": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz" - } - } - }, - "browserify-sign": { - "version": "4.0.0", - "from": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.0.tgz", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.0.tgz", - "dependencies": { - "bn.js": { - "version": "4.11.4", - "from": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.4.tgz", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.4.tgz" - }, - "browserify-rsa": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz" - }, - "elliptic": { - "version": "6.3.1", - "from": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", - "dependencies": { - "brorand": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz" - }, - "hash.js": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz" - } - } - }, - "parse-asn1": { - "version": "5.0.0", - "from": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.0.0.tgz", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.0.0.tgz", - "dependencies": { - "asn1.js": { - "version": "4.6.2", - "from": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.6.2.tgz", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.6.2.tgz", - "dependencies": { - "minimalistic-assert": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" - } - } - }, - "browserify-aes": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "dependencies": { - "buffer-xor": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - }, - "cipher-base": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz" - } - } - }, - "evp_bytestokey": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz" - } - } - } - } - }, - "create-ecdh": { - "version": "4.0.0", - "from": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "dependencies": { - "bn.js": { - "version": "4.11.4", - "from": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.4.tgz", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.4.tgz" - }, - "elliptic": { - "version": "6.3.1", - "from": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", - "dependencies": { - "brorand": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz" - }, - "hash.js": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz" - } - } - } - } - }, - "create-hash": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.2.tgz", - "dependencies": { - "cipher-base": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz" - }, - "ripemd160": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/ripemd160/-/ripemd160-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-1.0.1.tgz" - }, - "sha.js": { - "version": "2.4.5", - "from": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz" - } - } - }, - "create-hmac": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.4.tgz" - }, - "diffie-hellman": { - "version": "5.0.2", - "from": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "dependencies": { - "bn.js": { - "version": "4.11.4", - "from": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.4.tgz", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.4.tgz" - }, - "miller-rabin": { - "version": "4.0.0", - "from": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "dependencies": { - "brorand": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz" - } - } - } - } - }, - "pbkdf2": { - "version": "3.0.4", - "from": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.4.tgz", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.4.tgz" - }, - "public-encrypt": { - "version": "4.0.0", - "from": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "dependencies": { - "bn.js": { - "version": "4.11.4", - "from": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.4.tgz", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.4.tgz" - }, - "browserify-rsa": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz" - }, - "parse-asn1": { - "version": "5.0.0", - "from": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.0.0.tgz", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.0.0.tgz", - "dependencies": { - "asn1.js": { - "version": "4.6.2", - "from": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.6.2.tgz", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.6.2.tgz", - "dependencies": { - "minimalistic-assert": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" - } - } - }, - "browserify-aes": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "dependencies": { - "buffer-xor": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - }, - "cipher-base": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz" - } - } - }, - "evp_bytestokey": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz" - } - } - } - } - }, - "randombytes": { - "version": "2.0.3", - "from": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz" - } - } - }, - "deep-equal": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz" - }, - "defined": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz" - }, - "deps-sort": { - "version": "1.3.9", - "from": "https://registry.npmjs.org/deps-sort/-/deps-sort-1.3.9.tgz", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-1.3.9.tgz", - "dependencies": { - "JSONStream": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.1.3.tgz", - "dependencies": { - "jsonparse": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz" - }, - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - } - } - }, - "domain-browser": { - "version": "1.1.7", - "from": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz" - }, - "duplexer2": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz" - }, - "events": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz" - }, - "glob": { - "version": "4.5.3", - "from": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "dependencies": { - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "minimatch": { - "version": "2.0.10", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - } - } - }, - "http-browserify": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", - "dependencies": { - "Base64": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" - } - } - }, - "https-browserify": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "insert-module-globals": { - "version": "6.6.3", - "from": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-6.6.3.tgz", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-6.6.3.tgz", - "dependencies": { - "JSONStream": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.1.3.tgz", - "dependencies": { - "jsonparse": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz" - }, - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - }, - "combine-source-map": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.6.1.tgz", - "dependencies": { - "convert-source-map": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz" - }, - "inline-source-map": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.5.0.tgz" - }, - "lodash.memoize": { - "version": "3.0.4", - "from": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz" - }, - "source-map": { - "version": "0.4.4", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - }, - "is-buffer": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz" - }, - "lexical-scope": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", - "dependencies": { - "astw": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/astw/-/astw-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/astw/-/astw-2.0.0.tgz", - "dependencies": { - "acorn": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz" - } - } - } - } - }, - "process": { - "version": "0.11.5", - "from": "https://registry.npmjs.org/process/-/process-0.11.5.tgz", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.5.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "labeled-stream-splicer": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-1.0.2.tgz", - "dependencies": { - "stream-splicer": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-1.3.2.tgz", - "dependencies": { - "readable-wrap": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/readable-wrap/-/readable-wrap-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/readable-wrap/-/readable-wrap-1.0.0.tgz" - }, - "indexof": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - } - } - } - } - }, - "module-deps": { - "version": "3.9.1", - "from": "https://registry.npmjs.org/module-deps/-/module-deps-3.9.1.tgz", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-3.9.1.tgz", - "dependencies": { - "JSONStream": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.1.3.tgz", - "dependencies": { - "jsonparse": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz" - }, - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - }, - "defined": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" - }, - "detective": { - "version": "4.3.1", - "from": "https://registry.npmjs.org/detective/-/detective-4.3.1.tgz", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.3.1.tgz", - "dependencies": { - "acorn": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz" - } - } - }, - "parents": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "dependencies": { - "path-platform": { - "version": "0.11.15", - "from": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz" - } - } - }, - "resolve": { - "version": "1.1.7", - "from": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" - }, - "stream-combiner2": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.0.2.tgz", - "dependencies": { - "through2": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - } - } - }, - "xtend": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz" - } - } - } - } - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "os-browserify": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" - }, - "parents": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/parents/-/parents-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/parents/-/parents-0.0.3.tgz", - "dependencies": { - "path-platform": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/path-platform/-/path-platform-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.0.1.tgz" - } - } - }, - "path-browserify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" - }, - "process": { - "version": "0.8.0", - "from": "https://registry.npmjs.org/process/-/process-0.8.0.tgz", - "resolved": "https://registry.npmjs.org/process/-/process-0.8.0.tgz" - }, - "punycode": { - "version": "1.2.4", - "from": "https://registry.npmjs.org/punycode/-/punycode-1.2.4.tgz", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.2.4.tgz" - }, - "querystring-es3": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - }, - "readable-stream": { - "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - } - } - }, - "resolve": { - "version": "0.7.4", - "from": "https://registry.npmjs.org/resolve/-/resolve-0.7.4.tgz", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.7.4.tgz" - }, - "shallow-copy": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz" - }, - "shasum": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", - "dependencies": { - "json-stable-stringify": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "dependencies": { - "jsonify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" - } - } - }, - "sha.js": { - "version": "2.4.5", - "from": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz" - } - } - }, - "shell-quote": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/shell-quote/-/shell-quote-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-0.0.1.tgz" - }, - "stream-browserify": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "subarg": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz" - }, - "syntax-error": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.1.6.tgz", - "dependencies": { - "acorn": { - "version": "2.7.0", - "from": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz" - } - } - }, - "through2": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz", - "dependencies": { - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "timers-browserify": { - "version": "1.4.2", - "from": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "dependencies": { - "process": { - "version": "0.11.5", - "from": "https://registry.npmjs.org/process/-/process-0.11.5.tgz", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.5.tgz" - } - } - }, - "tty-browserify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" - }, - "umd": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/umd/-/umd-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/umd/-/umd-2.1.0.tgz", - "dependencies": { - "rfile": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/rfile/-/rfile-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/rfile/-/rfile-1.0.0.tgz", - "dependencies": { - "callsite": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" - }, - "resolve": { - "version": "0.3.1", - "from": "https://registry.npmjs.org/resolve/-/resolve-0.3.1.tgz", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.3.1.tgz" - } - } - }, - "ruglify": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/ruglify/-/ruglify-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/ruglify/-/ruglify-1.0.0.tgz", - "dependencies": { - "uglify-js": { - "version": "2.2.5", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "dependencies": { - "source-map": { - "version": "0.1.43", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "optimist": { - "version": "0.3.7", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - } - } - } - } - } - } - }, - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "uglify-js": { - "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "source-map": { - "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" - }, - "yargs": { - "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "dependencies": { - "camelcase": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" - }, - "decamelize": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "window-size": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" - }, - "wordwrap": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" - } - } - } - } - } - } - }, - "url": { - "version": "0.10.3", - "from": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "dependencies": { - "punycode": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - }, - "querystring": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - } - } - }, - "util": { - "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz" - }, - "vm-browserify": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "dependencies": { - "indexof": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - } - } - }, - "xtend": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz" - } - } - } - } - }, - "benchmark": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz" - }, - "bower": { - "version": "1.3.12", - "from": "https://registry.npmjs.org/bower/-/bower-1.3.12.tgz", - "resolved": "https://registry.npmjs.org/bower/-/bower-1.3.12.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" - }, - "archy": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/archy/-/archy-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/archy/-/archy-0.0.2.tgz" - }, - "bower-config": { - "version": "0.5.2", - "from": "https://registry.npmjs.org/bower-config/-/bower-config-0.5.2.tgz", - "resolved": "https://registry.npmjs.org/bower-config/-/bower-config-0.5.2.tgz", - "dependencies": { - "graceful-fs": { - "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" - }, - "optimist": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "minimist": { - "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - } - } - }, - "osenv": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/osenv/-/osenv-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.0.3.tgz" - } - } - }, - "bower-endpoint-parser": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz" - }, - "bower-json": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/bower-json/-/bower-json-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/bower-json/-/bower-json-0.4.0.tgz", - "dependencies": { - "deep-extend": { - "version": "0.2.11", - "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz" - }, - "graceful-fs": { - "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" - }, - "intersect": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/intersect/-/intersect-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/intersect/-/intersect-0.0.3.tgz" - } - } - }, - "bower-logger": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/bower-logger/-/bower-logger-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/bower-logger/-/bower-logger-0.2.2.tgz" - }, - "bower-registry-client": { - "version": "0.2.4", - "from": "https://registry.npmjs.org/bower-registry-client/-/bower-registry-client-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/bower-registry-client/-/bower-registry-client-0.2.4.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "graceful-fs": { - "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" - }, - "lru-cache": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.3.1.tgz" - }, - "request": { - "version": "2.51.0", - "from": "https://registry.npmjs.org/request/-/request-2.51.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.51.0.tgz", - "dependencies": { - "bl": { - "version": "0.9.5", - "from": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "caseless": { - "version": "0.8.0", - "from": "https://registry.npmjs.org/caseless/-/caseless-0.8.0.tgz", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.8.0.tgz" - }, - "forever-agent": { - "version": "0.5.2", - "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz" - }, - "form-data": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", - "dependencies": { - "async": { - "version": "0.9.2", - "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" - }, - "mime-types": { - "version": "2.0.14", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "dependencies": { - "mime-db": { - "version": "1.12.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" - } - } - } - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "mime-types": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz" - }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "qs": { - "version": "2.3.3", - "from": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz" - }, - "tunnel-agent": { - "version": "0.4.3", - "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - }, - "tough-cookie": { - "version": "2.2.2", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz" - }, - "http-signature": { - "version": "0.10.1", - "from": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", - "dependencies": { - "assert-plus": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "asn1": { - "version": "0.1.11", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" - }, - "ctype": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" - } - } - }, - "oauth-sign": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.5.0.tgz" - }, - "hawk": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", - "dependencies": { - "hoek": { - "version": "0.9.1", - "from": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz" - }, - "boom": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz" - }, - "cryptiles": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz" - }, - "sntp": { - "version": "0.2.4", - "from": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz" - } - } - }, - "aws-sign2": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "combined-stream": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "dependencies": { - "delayed-stream": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" - } - } - } - } - }, - "request-replay": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/request-replay/-/request-replay-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/request-replay/-/request-replay-0.2.0.tgz" - }, - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - } - } - }, - "cardinal": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/cardinal/-/cardinal-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-0.4.0.tgz", - "dependencies": { - "redeyed": { - "version": "0.4.4", - "from": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz", - "dependencies": { - "esprima": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" - } - } - } - } - }, - "chalk": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.0.tgz", - "dependencies": { - "ansi-styles": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "supports-color": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" - } - } - }, - "chmodr": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/chmodr/-/chmodr-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/chmodr/-/chmodr-0.1.0.tgz" - }, - "decompress-zip": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.0.8.tgz", - "dependencies": { - "mkpath": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz" - }, - "binary": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "dependencies": { - "chainsaw": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "dependencies": { - "traverse": { - "version": "0.3.9", - "from": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz" - } - } - }, - "buffers": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz" - } - } - }, - "touch": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/touch/-/touch-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.2.tgz", - "dependencies": { - "nopt": { - "version": "1.0.10", - "from": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" - } - } - }, - "readable-stream": { - "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "nopt": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/nopt/-/nopt-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.2.1.tgz" - } - } - }, - "fstream": { - "version": "1.0.8", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.8.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.4", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "fstream-ignore": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.4.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - } - } - }, - "glob": { - "version": "4.0.6", - "from": "https://registry.npmjs.org/glob/-/glob-4.0.6.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.0.6.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", - "dependencies": { - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - } - } - }, - "graceful-fs": { - "version": "3.0.8", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "handlebars": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/handlebars/-/handlebars-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-2.0.0.tgz", - "dependencies": { - "optimist": { - "version": "0.3.7", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - } - } - }, - "uglify-js": { - "version": "2.3.6", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "source-map": { - "version": "0.1.43", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - } - } - }, - "inquirer": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/inquirer/-/inquirer-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.7.1.tgz", - "dependencies": { - "cli-color": { - "version": "0.3.3", - "from": "https://registry.npmjs.org/cli-color/-/cli-color-0.3.3.tgz", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-0.3.3.tgz", - "dependencies": { - "d": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz" - }, - "es5-ext": { - "version": "0.10.11", - "from": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.11.tgz", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.11.tgz", - "dependencies": { - "es6-iterator": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz" - }, - "es6-symbol": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.0.2.tgz" - } - } - }, - "memoizee": { - "version": "0.3.10", - "from": "https://registry.npmjs.org/memoizee/-/memoizee-0.3.10.tgz", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.3.10.tgz", - "dependencies": { - "es6-weak-map": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz", - "dependencies": { - "es6-iterator": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz" - }, - "es6-symbol": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz" - } - } - }, - "event-emitter": { - "version": "0.3.4", - "from": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz" - }, - "lru-queue": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz" - }, - "next-tick": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz" - } - } - }, - "timers-ext": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.0.tgz", - "dependencies": { - "next-tick": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz" - } - } - } - } - }, - "figures": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/figures/-/figures-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.6.0.tgz" - }, - "mute-stream": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.4.tgz" - }, - "readline2": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/readline2/-/readline2-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-0.1.1.tgz", - "dependencies": { - "strip-ansi": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz" - } - } - } - } - }, - "rx": { - "version": "2.5.3", - "from": "https://registry.npmjs.org/rx/-/rx-2.5.3.tgz", - "resolved": "https://registry.npmjs.org/rx/-/rx-2.5.3.tgz" - }, - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - }, - "insight": { - "version": "0.4.3", - "from": "https://registry.npmjs.org/insight/-/insight-0.4.3.tgz", - "resolved": "https://registry.npmjs.org/insight/-/insight-0.4.3.tgz", - "dependencies": { - "async": { - "version": "0.9.2", - "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" - }, - "chalk": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "dependencies": { - "ansi-styles": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "supports-color": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" - } - } - }, - "configstore": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/configstore/-/configstore-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-0.3.2.tgz", - "dependencies": { - "js-yaml": { - "version": "3.6.1", - "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", - "dependencies": { - "argparse": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/argparse/-/argparse-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.7.tgz", - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - } - } - }, - "esprima": { - "version": "2.7.2", - "from": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz" - } - } - }, - "object-assign": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz" - }, - "user-home": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" - }, - "uuid": { - "version": "2.0.2", - "from": "https://registry.npmjs.org/uuid/-/uuid-2.0.2.tgz", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.2.tgz" - }, - "xdg-basedir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-1.0.1.tgz" - } - } - }, - "inquirer": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/inquirer/-/inquirer-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.6.0.tgz", - "dependencies": { - "cli-color": { - "version": "0.3.3", - "from": "https://registry.npmjs.org/cli-color/-/cli-color-0.3.3.tgz", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-0.3.3.tgz", - "dependencies": { - "d": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz" - }, - "es5-ext": { - "version": "0.10.11", - "from": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.11.tgz", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.11.tgz", - "dependencies": { - "es6-iterator": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz" - }, - "es6-symbol": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.0.2.tgz" - } - } - }, - "memoizee": { - "version": "0.3.10", - "from": "https://registry.npmjs.org/memoizee/-/memoizee-0.3.10.tgz", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.3.10.tgz", - "dependencies": { - "es6-weak-map": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz", - "dependencies": { - "es6-iterator": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz" - }, - "es6-symbol": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz" - } - } - }, - "event-emitter": { - "version": "0.3.4", - "from": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz" - }, - "lru-queue": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz" - }, - "next-tick": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz" - } - } - }, - "timers-ext": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.0.tgz", - "dependencies": { - "next-tick": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz" - } - } - } - } - }, - "mute-stream": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.4.tgz" - }, - "readline2": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/readline2/-/readline2-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-0.1.1.tgz", - "dependencies": { - "strip-ansi": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz" - } - } - } - } - }, - "rx": { - "version": "2.5.3", - "from": "https://registry.npmjs.org/rx/-/rx-2.5.3.tgz", - "resolved": "https://registry.npmjs.org/rx/-/rx-2.5.3.tgz" - }, - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - }, - "lodash.debounce": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-2.4.1.tgz", - "dependencies": { - "lodash.isfunction": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz" - }, - "lodash.isobject": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", - "dependencies": { - "lodash._objecttypes": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz" - } - } - }, - "lodash.now": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash.now/-/lodash.now-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.now/-/lodash.now-2.4.1.tgz", - "dependencies": { - "lodash._isnative": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz" - } - } - } - } - }, - "object-assign": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-1.0.0.tgz" - }, - "os-name": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", - "dependencies": { - "osx-release": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", - "dependencies": { - "minimist": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - } - } - }, - "win-release": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", - "dependencies": { - "semver": { - "version": "5.1.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz" - } - } - } - } - }, - "tough-cookie": { - "version": "0.12.1", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz", - "dependencies": { - "punycode": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - } - } - } - } - }, - "is-root": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz" - }, - "junk": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/junk/-/junk-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.2.tgz" - }, - "lockfile": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.1.tgz" - }, - "lru-cache": { - "version": "2.5.2", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.2.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.2.tgz" - }, - "mkdirp": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "mout": { - "version": "0.9.1", - "from": "https://registry.npmjs.org/mout/-/mout-0.9.1.tgz", - "resolved": "https://registry.npmjs.org/mout/-/mout-0.9.1.tgz" - }, - "nopt": { - "version": "3.0.6", - "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" - }, - "opn": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/opn/-/opn-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/opn/-/opn-1.0.2.tgz" - }, - "osenv": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/osenv/-/osenv-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.0.tgz" - }, - "p-throttler": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/p-throttler/-/p-throttler-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/p-throttler/-/p-throttler-0.1.0.tgz", - "dependencies": { - "q": { - "version": "0.9.7", - "from": "https://registry.npmjs.org/q/-/q-0.9.7.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-0.9.7.tgz" - } - } - }, - "promptly": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/promptly/-/promptly-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/promptly/-/promptly-0.2.0.tgz", - "dependencies": { - "read": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "dependencies": { - "mute-stream": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz" - } - } - } - } - }, - "request": { - "version": "2.42.0", - "from": "https://registry.npmjs.org/request/-/request-2.42.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.42.0.tgz", - "dependencies": { - "bl": { - "version": "0.9.5", - "from": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "caseless": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/caseless/-/caseless-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.6.0.tgz" - }, - "forever-agent": { - "version": "0.5.2", - "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz" - }, - "qs": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz" - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "mime-types": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz" - }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "tunnel-agent": { - "version": "0.4.3", - "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - }, - "tough-cookie": { - "version": "2.2.2", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz" - }, - "form-data": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", - "dependencies": { - "combined-stream": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "dependencies": { - "delayed-stream": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" - } - } - }, - "mime": { - "version": "1.2.11", - "from": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" - }, - "async": { - "version": "0.9.2", - "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" - } - } - }, - "http-signature": { - "version": "0.10.1", - "from": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", - "dependencies": { - "assert-plus": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "asn1": { - "version": "0.1.11", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" - }, - "ctype": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" - } - } - }, - "oauth-sign": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.4.0.tgz" - }, - "hawk": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", - "dependencies": { - "hoek": { - "version": "0.9.1", - "from": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz" - }, - "boom": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz" - }, - "cryptiles": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz" - }, - "sntp": { - "version": "0.2.4", - "from": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz" - } - } - }, - "aws-sign2": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - } - } - }, - "request-progress": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/request-progress/-/request-progress-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-0.3.0.tgz", - "dependencies": { - "throttleit": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz" - } - } - }, - "retry": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/retry/-/retry-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.6.0.tgz" - }, - "rimraf": { - "version": "2.2.8", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" - }, - "semver": { - "version": "2.3.2", - "from": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz" - }, - "shell-quote": { - "version": "1.4.3", - "from": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.4.3.tgz", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.4.3.tgz", - "dependencies": { - "jsonify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" - }, - "array-filter": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz" - }, - "array-reduce": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz" - }, - "array-map": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz" - } - } - }, - "stringify-object": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/stringify-object/-/stringify-object-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-1.0.1.tgz" - }, - "tar-fs": { - "version": "0.5.2", - "from": "https://registry.npmjs.org/tar-fs/-/tar-fs-0.5.2.tgz", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-0.5.2.tgz", - "dependencies": { - "pump": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/pump/-/pump-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/pump/-/pump-0.3.5.tgz", - "dependencies": { - "once": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/once/-/once-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.2.0.tgz" - }, - "end-of-stream": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", - "dependencies": { - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - } - } - } - } - }, - "tar-stream": { - "version": "0.4.7", - "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.4.7.tgz", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.4.7.tgz", - "dependencies": { - "bl": { - "version": "0.9.5", - "from": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "end-of-stream": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", - "dependencies": { - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - } - } - }, - "readable-stream": { - "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - } - } - }, - "tmp": { - "version": "0.0.23", - "from": "https://registry.npmjs.org/tmp/-/tmp-0.0.23.tgz", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.23.tgz" - }, - "update-notifier": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.2.0.tgz", - "dependencies": { - "configstore": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/configstore/-/configstore-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-0.3.2.tgz", - "dependencies": { - "js-yaml": { - "version": "3.6.1", - "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", - "dependencies": { - "argparse": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/argparse/-/argparse-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.7.tgz", - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - } - } - }, - "esprima": { - "version": "2.7.2", - "from": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz" - } - } - }, - "object-assign": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz" - }, - "user-home": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" - }, - "uuid": { - "version": "2.0.2", - "from": "https://registry.npmjs.org/uuid/-/uuid-2.0.2.tgz", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.2.tgz" - }, - "xdg-basedir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-1.0.1.tgz" - } - } - }, - "latest-version": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/latest-version/-/latest-version-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-0.2.0.tgz", - "dependencies": { - "package-json": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/package-json/-/package-json-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-0.2.0.tgz", - "dependencies": { - "got": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/got/-/got-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/got/-/got-0.3.0.tgz", - "dependencies": { - "object-assign": { - "version": "0.3.1", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-0.3.1.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-0.3.1.tgz" - } - } - }, - "registry-url": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/registry-url/-/registry-url-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-0.1.1.tgz", - "dependencies": { - "npmconf": { - "version": "2.1.2", - "from": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz", - "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz", - "dependencies": { - "config-chain": { - "version": "1.1.10", - "from": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.10.tgz", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.10.tgz", - "dependencies": { - "proto-list": { - "version": "1.2.4", - "from": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "ini": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - }, - "uid-number": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz" - } - } - } - } - } - } - } - } - }, - "semver-diff": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/semver-diff/-/semver-diff-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-0.1.0.tgz" - }, - "string-length": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/string-length/-/string-length-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-0.1.2.tgz", - "dependencies": { - "strip-ansi": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.2.2.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.1.0.tgz" - } - } - } - } - } - } - }, - "which": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" - } - } - }, - "browserstacktunnel-wrapper": { - "version": "1.4.2", - "from": "https://registry.npmjs.org/browserstacktunnel-wrapper/-/browserstacktunnel-wrapper-1.4.2.tgz", - "resolved": "https://registry.npmjs.org/browserstacktunnel-wrapper/-/browserstacktunnel-wrapper-1.4.2.tgz", - "dependencies": { - "unzip": { - "version": "0.1.11", - "from": "https://registry.npmjs.org/unzip/-/unzip-0.1.11.tgz", - "resolved": "https://registry.npmjs.org/unzip/-/unzip-0.1.11.tgz", - "dependencies": { - "fstream": { - "version": "0.1.31", - "from": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", - "dependencies": { - "graceful-fs": { - "version": "3.0.8", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "rimraf": { - "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "dependencies": { - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - } - } - }, - "pullstream": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", - "dependencies": { - "over": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz" - }, - "slice-stream": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz" - } - } - }, - "binary": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "dependencies": { - "chainsaw": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "dependencies": { - "traverse": { - "version": "0.3.9", - "from": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz" - } - } - }, - "buffers": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz" - } - } - }, - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "setimmediate": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz" - }, - "match-stream": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", - "dependencies": { - "buffers": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz" - } - } - } - } - } - } - }, - "canonical-path": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/canonical-path/-/canonical-path-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-0.0.2.tgz" - }, - "changez": { - "version": "2.1.1", - "from": "changez@2.1.1", - "resolved": "https://registry.npmjs.org/changez/-/changez-2.1.1.tgz", - "dependencies": { - "commander": { - "version": "2.9.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - } - } - }, - "find-package": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/find-package/-/find-package-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/find-package/-/find-package-1.0.0.tgz", - "dependencies": { - "parents": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "dependencies": { - "path-platform": { - "version": "0.11.15", - "from": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz" - } - } - } - } - }, - "nunjucks": { - "version": "2.5.2", - "from": "https://registry.npmjs.org/nunjucks/-/nunjucks-2.5.2.tgz", - "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-2.5.2.tgz", - "dependencies": { - "asap": { - "version": "2.0.5", - "from": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz" - }, - "chokidar": { - "version": "1.6.1", - "from": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.1.tgz", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.1.tgz", - "dependencies": { - "anymatch": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "dependencies": { - "arrify": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - }, - "micromatch": { - "version": "2.3.11", - "from": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "dependencies": { - "arr-flatten": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz" - } - } - }, - "array-unique": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" - }, - "braces": { - "version": "1.8.5", - "from": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "dependencies": { - "expand-range": { - "version": "1.8.2", - "from": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "dependencies": { - "fill-range": { - "version": "2.2.3", - "from": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "dependencies": { - "is-number": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" - }, - "isobject": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "dependencies": { - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - } - } - }, - "randomatic": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.5.tgz" - }, - "repeat-string": { - "version": "1.6.1", - "from": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - } - } - } - } - }, - "preserve": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" - }, - "repeat-element": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "dependencies": { - "is-posix-bracket": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" - } - } - }, - "extglob": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" - }, - "filename-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" - }, - "is-extglob": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - }, - "kind-of": { - "version": "3.0.4", - "from": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.4.tgz", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.4.tgz", - "dependencies": { - "is-buffer": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz" - } - } - }, - "normalize-path": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz" - }, - "object.omit": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.0.tgz", - "dependencies": { - "for-own": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/for-own/-/for-own-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.4.tgz", - "dependencies": { - "for-in": { - "version": "0.1.6", - "from": "https://registry.npmjs.org/for-in/-/for-in-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.6.tgz" - } - } - }, - "is-extendable": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - } - } - }, - "parse-glob": { - "version": "3.0.4", - "from": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "dependencies": { - "glob-base": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" - }, - "is-dotfile": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz" - } - } - }, - "regex-cache": { - "version": "0.4.3", - "from": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "dependencies": { - "is-equal-shallow": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" - }, - "is-primitive": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" - } - } - } - } - } - } - }, - "async-each": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz" - }, - "glob-parent": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" - }, - "inherits": { - "version": "2.0.3", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - }, - "is-binary-path": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "dependencies": { - "binary-extensions": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.7.0.tgz" - } - } - }, - "is-glob": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - }, - "readdirp": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.9", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "readable-stream": { - "version": "2.1.5", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - }, - "set-immediate-shim": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" - } - } - }, - "fsevents": { - "version": "1.0.14", - "from": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.14.tgz", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.14.tgz", - "dependencies": { - "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" - }, - "node-pre-gyp": { - "version": "0.6.29", - "from": "node-pre-gyp@>=0.6.29 <0.7.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz" - }, - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "abbrev": { - "version": "1.0.9", - "from": "abbrev@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" - }, - "ansi-styles": { - "version": "2.2.1", - "from": "ansi-styles@>=2.2.1 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "are-we-there-yet": { - "version": "1.1.2", - "from": "are-we-there-yet@>=1.1.2 <1.2.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz" - }, - "aproba": { - "version": "1.0.4", - "from": "aproba@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz" - }, - "asn1": { - "version": "0.2.3", - "from": "asn1@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "0.2.0", - "from": "assert-plus@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" - }, - "aws-sign2": { - "version": "0.6.0", - "from": "aws-sign2@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "async": { - "version": "1.5.2", - "from": "async@>=1.5.2 <2.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - }, - "aws4": { - "version": "1.4.1", - "from": "aws4@>=1.2.1 <2.0.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" - }, - "balanced-match": { - "version": "0.4.2", - "from": "balanced-match@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "block-stream": { - "version": "0.0.9", - "from": "block-stream@*", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "boom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "brace-expansion": { - "version": "1.1.5", - "from": "brace-expansion@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz" - }, - "buffer-shims": { - "version": "1.0.0", - "from": "buffer-shims@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "caseless": { - "version": "0.11.0", - "from": "caseless@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" - }, - "chalk": { - "version": "1.1.3", - "from": "chalk@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - }, - "code-point-at": { - "version": "1.0.0", - "from": "code-point-at@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "combined-stream@>=1.0.5 <1.1.0", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" - }, - "commander": { - "version": "2.9.0", - "from": "commander@>=2.9.0 <3.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "concat-map@0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - }, - "console-control-strings": { - "version": "1.1.0", - "from": "console-control-strings@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "cryptiles@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" - }, - "deep-extend": { - "version": "0.4.1", - "from": "deep-extend@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" - }, - "delayed-stream": { - "version": "1.0.0", - "from": "delayed-stream@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - }, - "delegates": { - "version": "1.0.0", - "from": "delegates@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - }, - "ecc-jsbn": { - "version": "0.1.1", - "from": "ecc-jsbn@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "escape-string-regexp@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "extend": { - "version": "3.0.0", - "from": "extend@>=3.0.0 <3.1.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "extsprintf": { - "version": "1.0.2", - "from": "extsprintf@1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" - }, - "forever-agent": { - "version": "0.6.1", - "from": "forever-agent@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "1.0.0-rc4", - "from": "form-data@>=1.0.0-rc4 <1.1.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz" - }, - "fs.realpath": { - "version": "1.0.0", - "from": "fs.realpath@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "fstream": { - "version": "1.0.10", - "from": "fstream@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz" - }, - "fstream-ignore": { - "version": "1.0.5", - "from": "fstream-ignore@>=1.0.5 <1.1.0", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz" - }, - "gauge": { - "version": "2.6.0", - "from": "gauge@>=2.6.0 <2.7.0", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz" - }, - "generate-function": { - "version": "2.0.0", - "from": "generate-function@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "generate-object-property@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" - }, - "glob": { - "version": "7.0.5", - "from": "glob@>=7.0.5 <8.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz" - }, - "graceful-fs": { - "version": "4.1.4", - "from": "graceful-fs@>=4.1.2 <5.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz" - }, - "graceful-readlink": { - "version": "1.0.1", - "from": "graceful-readlink@>=1.0.0", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - }, - "har-validator": { - "version": "2.0.6", - "from": "har-validator@>=2.0.6 <2.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "has-color": { - "version": "0.1.7", - "from": "has-color@>=0.1.7 <0.2.0", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz" - }, - "has-unicode": { - "version": "2.0.1", - "from": "has-unicode@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - }, - "hawk": { - "version": "3.1.3", - "from": "hawk@>=3.1.3 <3.2.0", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz" - }, - "hoek": { - "version": "2.16.3", - "from": "hoek@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "http-signature": { - "version": "1.1.1", - "from": "http-signature@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "inflight@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "ini": { - "version": "1.3.4", - "from": "ini@>=1.3.0 <1.4.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "is-fullwidth-code-point@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" - }, - "is-my-json-valid": { - "version": "2.13.1", - "from": "is-my-json-valid@>=2.12.4 <3.0.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz" - }, - "is-property": { - "version": "1.0.2", - "from": "is-property@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - }, - "is-typedarray": { - "version": "1.0.0", - "from": "is-typedarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "isarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "isstream": { - "version": "0.1.2", - "from": "isstream@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "jodid25519": { - "version": "1.0.2", - "from": "jodid25519@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" - }, - "jsbn": { - "version": "0.1.0", - "from": "jsbn@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" - }, - "json-schema": { - "version": "0.2.2", - "from": "json-schema@0.2.2", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@>=5.0.1 <5.1.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "jsonpointer": { - "version": "2.0.0", - "from": "jsonpointer@2.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "jsprim": { - "version": "1.3.0", - "from": "jsprim@>=1.2.2 <2.0.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz" - }, - "mime-db": { - "version": "1.23.0", - "from": "mime-db@>=1.23.0 <1.24.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - }, - "mime-types": { - "version": "2.1.11", - "from": "mime-types@>=2.1.7 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz" - }, - "minimatch": { - "version": "3.0.2", - "from": "minimatch@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz" - }, - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "node-uuid": { - "version": "1.4.7", - "from": "node-uuid@>=1.4.7 <1.5.0", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "nopt": { - "version": "3.0.6", - "from": "nopt@>=3.0.1 <3.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" - }, - "npmlog": { - "version": "3.1.2", - "from": "npmlog@>=3.1.2 <3.2.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz" - }, - "number-is-nan": { - "version": "1.0.0", - "from": "number-is-nan@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - }, - "oauth-sign": { - "version": "0.8.2", - "from": "oauth-sign@>=0.8.1 <0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "object-assign@>=4.1.0 <5.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - }, - "once": { - "version": "1.3.3", - "from": "once@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "path-is-absolute@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - }, - "pinkie": { - "version": "2.0.4", - "from": "pinkie@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "pinkie-promise@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "process-nextick-args@>=1.0.6 <1.1.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "qs": { - "version": "6.2.0", - "from": "qs@>=6.2.0 <6.3.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" - }, - "readable-stream": { - "version": "2.1.4", - "from": "readable-stream@>=2.0.0 <3.0.0||>=1.1.13 <2.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz" - }, - "request": { - "version": "2.73.0", - "from": "request@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.73.0.tgz" - }, - "rimraf": { - "version": "2.5.3", - "from": "rimraf@>=2.5.0 <2.6.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.3.tgz" - }, - "semver": { - "version": "5.2.0", - "from": "semver@>=5.2.0 <5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz" - }, - "set-blocking": { - "version": "2.0.0", - "from": "set-blocking@>=2.0.0 <2.1.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - }, - "signal-exit": { - "version": "3.0.0", - "from": "signal-exit@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "sntp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - }, - "string-width": { - "version": "1.0.1", - "from": "string-width@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "stringstream@>=0.0.4 <0.1.0", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "strip-json-comments": { - "version": "1.0.4", - "from": "strip-json-comments@>=1.0.4 <1.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - }, - "tar": { - "version": "2.2.1", - "from": "tar@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz" - }, - "tar-pack": { - "version": "3.1.4", - "from": "tar-pack@>=3.1.0 <3.2.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz" - }, - "tough-cookie": { - "version": "2.2.2", - "from": "tough-cookie@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz" - }, - "tunnel-agent": { - "version": "0.4.3", - "from": "tunnel-agent@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - }, - "tweetnacl": { - "version": "0.13.3", - "from": "tweetnacl@>=0.13.0 <0.14.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" - }, - "uid-number": { - "version": "0.0.6", - "from": "uid-number@>=0.0.6 <0.1.0", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "util-deprecate@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - }, - "verror": { - "version": "1.3.6", - "from": "verror@1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" - }, - "wide-align": { - "version": "1.1.0", - "from": "wide-align@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" - }, - "wrappy": { - "version": "1.0.2", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "xtend@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - }, - "bl": { - "version": "1.1.2", - "from": "bl@>=1.1.2 <1.2.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "readable-stream@>=2.0.5 <2.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" - } - } - }, - "dashdash": { - "version": "1.14.0", - "from": "dashdash@>=1.12.0 <2.0.0", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "getpass": { - "version": "0.1.6", - "from": "getpass@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "rc": { - "version": "1.1.6", - "from": "rc@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "dependencies": { - "minimist": { - "version": "1.2.0", - "from": "minimist@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - } - } - }, - "sshpk": { - "version": "1.8.3", - "from": "sshpk@>=1.7.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.8.3.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - } - } - } - } - }, - "yargs": { - "version": "3.32.0", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "dependencies": { - "camelcase": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - }, - "cliui": { - "version": "3.2.0", - "from": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "wrap-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.0.0.tgz" - } - } - }, - "decamelize": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "os-locale": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "dependencies": { - "lcid": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "dependencies": { - "invert-kv": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" - } - } - } - } - }, - "string-width": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "dependencies": { - "code-point-at": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.1.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - } - } - }, - "window-size": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz" - }, - "y18n": { - "version": "3.2.1", - "from": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz" - } - } - } - } - }, - "shelljs": { - "version": "0.7.4", - "from": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.4.tgz", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.4.tgz", - "dependencies": { - "glob": { - "version": "7.1.1", - "from": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.3", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - } - } - }, - "interpret": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/interpret/-/interpret-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.1.tgz" - }, - "rechoir": { - "version": "0.6.2", - "from": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "dependencies": { - "resolve": { - "version": "1.1.7", - "from": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" - } - } - } - } - }, - "simple-node-logger": { - "version": "0.93.12", - "from": "https://registry.npmjs.org/simple-node-logger/-/simple-node-logger-0.93.12.tgz", - "resolved": "https://registry.npmjs.org/simple-node-logger/-/simple-node-logger-0.93.12.tgz", - "dependencies": { - "lodash": { - "version": "4.16.4", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.16.4.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.4.tgz" - }, - "moment": { - "version": "2.15.2", - "from": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz" - }, - "path": { - "version": "0.12.7", - "from": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "dependencies": { - "process": { - "version": "0.11.9", - "from": "https://registry.npmjs.org/process/-/process-0.11.9.tgz", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.9.tgz" - } - } - }, - "util": { - "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - } - } - }, - "changez-angular": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/changez-angular/-/changez-angular-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/changez-angular/-/changez-angular-2.1.0.tgz", - "dependencies": { - "nunjucks-date": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/nunjucks-date/-/nunjucks-date-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/nunjucks-date/-/nunjucks-date-1.2.0.tgz", - "dependencies": { - "moment": { - "version": "2.15.2", - "from": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz" - } - } - } - } - }, - "cheerio": { - "version": "0.17.0", - "from": "https://registry.npmjs.org/cheerio/-/cheerio-0.17.0.tgz", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.17.0.tgz", - "dependencies": { - "CSSselect": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/CSSselect/-/CSSselect-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/CSSselect/-/CSSselect-0.4.1.tgz", - "dependencies": { - "CSSwhat": { - "version": "0.4.7", - "from": "https://registry.npmjs.org/CSSwhat/-/CSSwhat-0.4.7.tgz", - "resolved": "https://registry.npmjs.org/CSSwhat/-/CSSwhat-0.4.7.tgz" - }, - "domutils": { - "version": "1.4.3", - "from": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz", - "dependencies": { - "domelementtype": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" - } - } - } - } - }, - "entities": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz" - }, - "htmlparser2": { - "version": "3.7.3", - "from": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.7.3.tgz", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.7.3.tgz", - "dependencies": { - "domhandler": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/domhandler/-/domhandler-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.2.1.tgz" - }, - "domutils": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz" - }, - "domelementtype": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" - }, - "readable-stream": { - "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "entities": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz" - } - } - }, - "dom-serializer": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.0.1.tgz", - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz" - } - } - } - } - }, - "commitizen": { - "version": "2.8.4", - "from": "https://registry.npmjs.org/commitizen/-/commitizen-2.8.4.tgz", - "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-2.8.4.tgz", - "dependencies": { - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "cz-conventional-changelog": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-1.1.6.tgz", - "dependencies": { - "word-wrap": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.1.0.tgz" - } - } - }, - "dedent": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz" - }, - "detect-indent": { - "version": "4.0.0", - "from": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "dependencies": { - "repeating": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - } - } - }, - "find-node-modules": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-1.0.3.tgz", - "dependencies": { - "findup-sync": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.2.1.tgz", - "dependencies": { - "glob": { - "version": "4.3.5", - "from": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz", - "dependencies": { - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "2.0.10", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - } - } - } - } - }, - "merge": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz" - } - } - }, - "find-root": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/find-root/-/find-root-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.0.0.tgz" - }, - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - }, - "home-or-tmp": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "dependencies": { - "os-homedir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz" - }, - "os-tmpdir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" - } - } - }, - "inquirer": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/inquirer/-/inquirer-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-1.1.2.tgz", - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz" - }, - "cli-cursor": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "dependencies": { - "restore-cursor": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "dependencies": { - "exit-hook": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz" - }, - "onetime": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz" - } - } - } - } - }, - "cli-width": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz" - }, - "external-editor": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/external-editor/-/external-editor-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-1.0.3.tgz", - "dependencies": { - "extend": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "spawn-sync": { - "version": "1.0.15", - "from": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", - "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", - "dependencies": { - "concat-stream": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "typedarray": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - }, - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "os-shim": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz" - } - } - }, - "temp": { - "version": "0.8.3", - "from": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "dependencies": { - "os-tmpdir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" - }, - "rimraf": { - "version": "2.2.8", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" - } - } - } - } - }, - "figures": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "mute-stream": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - }, - "run-async": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/run-async/-/run-async-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.2.0.tgz", - "dependencies": { - "is-promise": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz" - } - } - }, - "rx": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz" - }, - "string-width": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - }, - "lodash": { - "version": "4.14.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.1.tgz" - }, - "minimist": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "path-exists": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "dependencies": { - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - }, - "shelljs": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz" - }, - "strip-json-comments": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - } - } - }, - "cross-spawn": { - "version": "4.0.0", - "from": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", - "dependencies": { - "lru-cache": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz", - "dependencies": { - "pseudomap": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - }, - "yallist": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz" - } - } - }, - "which": { - "version": "1.2.10", - "from": "https://registry.npmjs.org/which/-/which-1.2.10.tgz", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.10.tgz", - "dependencies": { - "isexe": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz" - } - } - } - } - }, - "cz-conventional-changelog": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-1.1.4.tgz", - "dependencies": { - "word-wrap": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.1.0.tgz" - } - } - }, - "dgeni": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/dgeni/-/dgeni-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/dgeni/-/dgeni-0.4.2.tgz", - "dependencies": { - "dependency-graph": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.4.1.tgz" - }, - "di": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz" - }, - "lodash": { - "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - }, - "optimist": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "minimist": { - "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - } - } - }, - "q": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" - }, - "validate.js": { - "version": "0.9.0", - "from": "https://registry.npmjs.org/validate.js/-/validate.js-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/validate.js/-/validate.js-0.9.0.tgz" - }, - "winston": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/winston/-/winston-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.2.0.tgz", - "dependencies": { - "async": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz" - }, - "colors": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" - }, - "cycle": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz" - }, - "eyes": { - "version": "0.1.8", - "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" - }, - "isstream": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "pkginfo": { - "version": "0.3.1", - "from": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz" - }, - "stack-trace": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" - } - } - } - } - }, - "dgeni-packages": { - "version": "0.16.0", - "from": "dgeni-packages@latest", - "dependencies": { - "catharsis": { - "version": "0.8.8", - "from": "catharsis@>=0.8.1 <0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.8.tgz", - "dependencies": { - "underscore-contrib": { - "version": "0.3.0", - "from": "underscore-contrib@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", - "dependencies": { - "underscore": { - "version": "1.6.0", - "from": "underscore@1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" - } - } - } - } - }, - "change-case": { - "version": "3.0.0", - "from": "change-case@3.0.0", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.0.0.tgz", - "dependencies": { - "camel-case": { - "version": "3.0.0", - "from": "camel-case@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" - }, - "constant-case": { - "version": "2.0.0", - "from": "constant-case@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz" - }, - "dot-case": { - "version": "2.1.0", - "from": "dot-case@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.0.tgz" - }, - "header-case": { - "version": "1.0.0", - "from": "header-case@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.0.tgz" - }, - "is-lower-case": { - "version": "1.1.3", - "from": "is-lower-case@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz" - }, - "is-upper-case": { - "version": "1.1.2", - "from": "is-upper-case@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz" - }, - "lower-case": { - "version": "1.1.3", - "from": "lower-case@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.3.tgz" - }, - "lower-case-first": { - "version": "1.0.2", - "from": "lower-case-first@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz" - }, - "no-case": { - "version": "2.3.0", - "from": "no-case@>=2.2.0 <3.0.0", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.0.tgz" - }, - "param-case": { - "version": "2.1.0", - "from": "param-case@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.0.tgz" - }, - "pascal-case": { - "version": "2.0.0", - "from": "pascal-case@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.0.tgz" - }, - "path-case": { - "version": "2.1.0", - "from": "path-case@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.0.tgz" - }, - "sentence-case": { - "version": "2.1.0", - "from": "sentence-case@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.0.tgz" - }, - "snake-case": { - "version": "2.1.0", - "from": "snake-case@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz" - }, - "swap-case": { - "version": "1.1.2", - "from": "swap-case@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz" - }, - "title-case": { - "version": "2.1.0", - "from": "title-case@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.0.tgz" - }, - "upper-case": { - "version": "1.1.3", - "from": "upper-case@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" - }, - "upper-case-first": { - "version": "1.1.2", - "from": "upper-case-first@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz" - } - } - }, - "espree": { - "version": "2.2.5", - "from": "espree@>=2.2.3 <3.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-2.2.5.tgz" - }, - "estraverse": { - "version": "4.2.0", - "from": "estraverse@>=4.1.0 <5.0.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz" - }, - "glob": { - "version": "7.1.1", - "from": "glob@>=7.0.5 <8.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "fs.realpath@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.6", - "from": "inflight@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.3", - "from": "inherits@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - }, - "once": { - "version": "1.4.0", - "from": "once@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.1", - "from": "path-is-absolute@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - } - } - }, - "htmlparser2": { - "version": "3.9.2", - "from": "htmlparser2@>=3.7.3 <4.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "dependencies": { - "domelementtype": { - "version": "1.3.0", - "from": "domelementtype@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" - }, - "domhandler": { - "version": "2.3.0", - "from": "domhandler@>=2.3.0 <3.0.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz" - }, - "domutils": { - "version": "1.5.1", - "from": "domutils@>=1.5.1 <2.0.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "dependencies": { - "dom-serializer": { - "version": "0.1.0", - "from": "dom-serializer@>=0.0.0 <1.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "from": "domelementtype@>=1.1.1 <1.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz" - } - } - } - } - }, - "entities": { - "version": "1.1.1", - "from": "entities@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz" - }, - "inherits": { - "version": "2.0.3", - "from": "inherits@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - }, - "readable-stream": { - "version": "2.2.2", - "from": "readable-stream@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "buffer-shims@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "isarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "process-nextick-args@>=1.0.6 <1.1.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "util-deprecate@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "lodash": { - "version": "4.17.1", - "from": "lodash@>=4.13.1 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "minimatch@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "brace-expansion@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "balanced-match@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "concat-map@0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "nunjucks": { - "version": "2.5.2", - "from": "nunjucks@>=2.4.2 <3.0.0", - "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-2.5.2.tgz", - "dependencies": { - "asap": { - "version": "2.0.5", - "from": "asap@>=2.0.3 <3.0.0", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz" - }, - "chokidar": { - "version": "1.6.1", - "from": "chokidar@>=1.6.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.1.tgz", - "dependencies": { - "anymatch": { - "version": "1.3.0", - "from": "anymatch@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "dependencies": { - "arrify": { - "version": "1.0.1", - "from": "arrify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - }, - "micromatch": { - "version": "2.3.11", - "from": "micromatch@>=2.1.5 <3.0.0", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "from": "arr-diff@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "dependencies": { - "arr-flatten": { - "version": "1.0.1", - "from": "arr-flatten@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz" - } - } - }, - "array-unique": { - "version": "0.2.1", - "from": "array-unique@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" - }, - "braces": { - "version": "1.8.5", - "from": "braces@>=1.8.2 <2.0.0", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "dependencies": { - "expand-range": { - "version": "1.8.2", - "from": "expand-range@>=1.8.1 <2.0.0", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "dependencies": { - "fill-range": { - "version": "2.2.3", - "from": "fill-range@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "dependencies": { - "is-number": { - "version": "2.1.0", - "from": "is-number@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" - }, - "isobject": { - "version": "2.1.0", - "from": "isobject@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "dependencies": { - "isarray": { - "version": "1.0.0", - "from": "isarray@1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - } - } - }, - "randomatic": { - "version": "1.1.5", - "from": "randomatic@>=1.1.3 <2.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.5.tgz" - }, - "repeat-string": { - "version": "1.6.1", - "from": "repeat-string@>=1.5.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - } - } - } - } - }, - "preserve": { - "version": "0.2.0", - "from": "preserve@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" - }, - "repeat-element": { - "version": "1.1.2", - "from": "repeat-element@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "from": "expand-brackets@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "dependencies": { - "is-posix-bracket": { - "version": "0.1.1", - "from": "is-posix-bracket@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" - } - } - }, - "extglob": { - "version": "0.3.2", - "from": "extglob@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" - }, - "filename-regex": { - "version": "2.0.0", - "from": "filename-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" - }, - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - }, - "kind-of": { - "version": "3.0.4", - "from": "kind-of@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.4.tgz", - "dependencies": { - "is-buffer": { - "version": "1.1.4", - "from": "is-buffer@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz" - } - } - }, - "normalize-path": { - "version": "2.0.1", - "from": "normalize-path@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz" - }, - "object.omit": { - "version": "2.0.1", - "from": "object.omit@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "dependencies": { - "for-own": { - "version": "0.1.4", - "from": "for-own@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.4.tgz", - "dependencies": { - "for-in": { - "version": "0.1.6", - "from": "for-in@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.6.tgz" - } - } - }, - "is-extendable": { - "version": "0.1.1", - "from": "is-extendable@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - } - } - }, - "parse-glob": { - "version": "3.0.4", - "from": "parse-glob@>=3.0.4 <4.0.0", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "dependencies": { - "glob-base": { - "version": "0.3.0", - "from": "glob-base@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" - }, - "is-dotfile": { - "version": "1.0.2", - "from": "is-dotfile@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz" - } - } - }, - "regex-cache": { - "version": "0.4.3", - "from": "regex-cache@>=0.4.2 <0.5.0", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "dependencies": { - "is-equal-shallow": { - "version": "0.1.3", - "from": "is-equal-shallow@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" - }, - "is-primitive": { - "version": "2.0.0", - "from": "is-primitive@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" - } - } - } - } - } - } - }, - "async-each": { - "version": "1.0.1", - "from": "async-each@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz" - }, - "glob-parent": { - "version": "2.0.0", - "from": "glob-parent@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" - }, - "inherits": { - "version": "2.0.3", - "from": "inherits@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - }, - "is-binary-path": { - "version": "1.0.1", - "from": "is-binary-path@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "dependencies": { - "binary-extensions": { - "version": "1.7.0", - "from": "binary-extensions@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.7.0.tgz" - } - } - }, - "is-glob": { - "version": "2.0.1", - "from": "is-glob@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.1", - "from": "path-is-absolute@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - }, - "readdirp": { - "version": "2.1.0", - "from": "readdirp@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.10", - "from": "graceful-fs@>=4.1.2 <5.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.10.tgz" - }, - "readable-stream": { - "version": "2.2.2", - "from": "readable-stream@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "buffer-shims@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "isarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "process-nextick-args@>=1.0.6 <1.1.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "util-deprecate@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - }, - "set-immediate-shim": { - "version": "1.0.1", - "from": "set-immediate-shim@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" - } - } - }, - "fsevents": { - "version": "1.0.15", - "from": "fsevents@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.15.tgz", - "dependencies": { - "nan": { - "version": "2.4.0", - "from": "nan@>=2.3.0 <3.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" - }, - "node-pre-gyp": { - "version": "0.6.29", - "from": "node-pre-gyp@>=0.6.29 <0.7.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz" - }, - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "abbrev": { - "version": "1.0.9", - "from": "abbrev@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" - }, - "ansi-styles": { - "version": "2.2.1", - "from": "ansi-styles@>=2.2.1 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "aproba": { - "version": "1.0.4", - "from": "aproba@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz" - }, - "asn1": { - "version": "0.2.3", - "from": "asn1@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "0.2.0", - "from": "assert-plus@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" - }, - "are-we-there-yet": { - "version": "1.1.2", - "from": "are-we-there-yet@>=1.1.2 <1.2.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz" - }, - "async": { - "version": "1.5.2", - "from": "async@>=1.5.2 <2.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - }, - "aws4": { - "version": "1.4.1", - "from": "aws4@>=1.2.1 <2.0.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" - }, - "aws-sign2": { - "version": "0.6.0", - "from": "aws-sign2@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "balanced-match": { - "version": "0.4.2", - "from": "balanced-match@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "block-stream": { - "version": "0.0.9", - "from": "block-stream@*", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "boom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "brace-expansion": { - "version": "1.1.5", - "from": "brace-expansion@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz" - }, - "buffer-shims": { - "version": "1.0.0", - "from": "buffer-shims@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "chalk": { - "version": "1.1.3", - "from": "chalk@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - }, - "caseless": { - "version": "0.11.0", - "from": "caseless@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" - }, - "code-point-at": { - "version": "1.0.0", - "from": "code-point-at@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "combined-stream@>=1.0.5 <1.1.0", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" - }, - "commander": { - "version": "2.9.0", - "from": "commander@>=2.9.0 <3.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz" - }, - "console-control-strings": { - "version": "1.1.0", - "from": "console-control-strings@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "concat-map@0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "cryptiles@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "deep-extend": { - "version": "0.4.1", - "from": "deep-extend@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" - }, - "delayed-stream": { - "version": "1.0.0", - "from": "delayed-stream@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - }, - "delegates": { - "version": "1.0.0", - "from": "delegates@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - }, - "ecc-jsbn": { - "version": "0.1.1", - "from": "ecc-jsbn@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" - }, - "extend": { - "version": "3.0.0", - "from": "extend@>=3.0.0 <3.1.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "escape-string-regexp@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "extsprintf": { - "version": "1.0.2", - "from": "extsprintf@1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" - }, - "forever-agent": { - "version": "0.6.1", - "from": "forever-agent@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "1.0.0-rc4", - "from": "form-data@>=1.0.0-rc4 <1.1.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz" - }, - "fs.realpath": { - "version": "1.0.0", - "from": "fs.realpath@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "fstream": { - "version": "1.0.10", - "from": "fstream@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz" - }, - "fstream-ignore": { - "version": "1.0.5", - "from": "fstream-ignore@>=1.0.5 <1.1.0", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz" - }, - "gauge": { - "version": "2.6.0", - "from": "gauge@>=2.6.0 <2.7.0", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz" - }, - "generate-function": { - "version": "2.0.0", - "from": "generate-function@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "generate-object-property@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" - }, - "glob": { - "version": "7.0.5", - "from": "glob@>=7.0.5 <8.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz" - }, - "graceful-fs": { - "version": "4.1.4", - "from": "graceful-fs@>=4.1.2 <5.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz" - }, - "graceful-readlink": { - "version": "1.0.1", - "from": "graceful-readlink@>=1.0.0", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - }, - "har-validator": { - "version": "2.0.6", - "from": "har-validator@>=2.0.6 <2.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "has-color": { - "version": "0.1.7", - "from": "has-color@>=0.1.7 <0.2.0", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz" - }, - "has-unicode": { - "version": "2.0.1", - "from": "has-unicode@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - }, - "hawk": { - "version": "3.1.3", - "from": "hawk@>=3.1.3 <3.2.0", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz" - }, - "hoek": { - "version": "2.16.3", - "from": "hoek@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "http-signature": { - "version": "1.1.1", - "from": "http-signature@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "inflight@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "ini": { - "version": "1.3.4", - "from": "ini@>=1.3.0 <1.4.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "is-fullwidth-code-point@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" - }, - "is-my-json-valid": { - "version": "2.13.1", - "from": "is-my-json-valid@>=2.12.4 <3.0.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz" - }, - "is-typedarray": { - "version": "1.0.0", - "from": "is-typedarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - }, - "is-property": { - "version": "1.0.2", - "from": "is-property@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "isarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "isstream": { - "version": "0.1.2", - "from": "isstream@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "jodid25519": { - "version": "1.0.2", - "from": "jodid25519@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" - }, - "jsbn": { - "version": "0.1.0", - "from": "jsbn@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" - }, - "json-schema": { - "version": "0.2.2", - "from": "json-schema@0.2.2", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@>=5.0.1 <5.1.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "jsonpointer": { - "version": "2.0.0", - "from": "jsonpointer@2.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "jsprim": { - "version": "1.3.0", - "from": "jsprim@>=1.2.2 <2.0.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz" - }, - "mime-types": { - "version": "2.1.11", - "from": "mime-types@>=2.1.7 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz" - }, - "mime-db": { - "version": "1.23.0", - "from": "mime-db@>=1.23.0 <1.24.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - }, - "minimatch": { - "version": "3.0.2", - "from": "minimatch@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz" - }, - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "node-uuid": { - "version": "1.4.7", - "from": "node-uuid@>=1.4.7 <1.5.0", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "nopt": { - "version": "3.0.6", - "from": "nopt@>=3.0.1 <3.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" - }, - "npmlog": { - "version": "3.1.2", - "from": "npmlog@>=3.1.2 <3.2.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz" - }, - "number-is-nan": { - "version": "1.0.0", - "from": "number-is-nan@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - }, - "oauth-sign": { - "version": "0.8.2", - "from": "oauth-sign@>=0.8.1 <0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "object-assign@>=4.1.0 <5.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - }, - "once": { - "version": "1.3.3", - "from": "once@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "path-is-absolute@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - }, - "pinkie": { - "version": "2.0.4", - "from": "pinkie@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "pinkie-promise@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "process-nextick-args@>=1.0.6 <1.1.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "qs": { - "version": "6.2.0", - "from": "qs@>=6.2.0 <6.3.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" - }, - "request": { - "version": "2.73.0", - "from": "request@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.73.0.tgz" - }, - "readable-stream": { - "version": "2.1.4", - "from": "readable-stream@>=2.0.0 <3.0.0||>=1.1.13 <2.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz" - }, - "rimraf": { - "version": "2.5.3", - "from": "rimraf@>=2.5.0 <2.6.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.3.tgz" - }, - "semver": { - "version": "5.2.0", - "from": "semver@>=5.2.0 <5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz" - }, - "set-blocking": { - "version": "2.0.0", - "from": "set-blocking@>=2.0.0 <2.1.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - }, - "signal-exit": { - "version": "3.0.0", - "from": "signal-exit@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "sntp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - }, - "string-width": { - "version": "1.0.1", - "from": "string-width@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "stringstream@>=0.0.4 <0.1.0", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "strip-json-comments": { - "version": "1.0.4", - "from": "strip-json-comments@>=1.0.4 <1.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - }, - "tar": { - "version": "2.2.1", - "from": "tar@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz" - }, - "tough-cookie": { - "version": "2.2.2", - "from": "tough-cookie@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz" - }, - "tar-pack": { - "version": "3.1.4", - "from": "tar-pack@>=3.1.0 <3.2.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz" - }, - "tunnel-agent": { - "version": "0.4.3", - "from": "tunnel-agent@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - }, - "tweetnacl": { - "version": "0.13.3", - "from": "tweetnacl@>=0.13.0 <0.14.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" - }, - "uid-number": { - "version": "0.0.6", - "from": "uid-number@>=0.0.6 <0.1.0", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "util-deprecate@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - }, - "verror": { - "version": "1.3.6", - "from": "verror@1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" - }, - "wide-align": { - "version": "1.1.0", - "from": "wide-align@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" - }, - "wrappy": { - "version": "1.0.2", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "xtend@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - }, - "bl": { - "version": "1.1.2", - "from": "bl@>=1.1.2 <1.2.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "readable-stream@>=2.0.5 <2.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" - } - } - }, - "dashdash": { - "version": "1.14.0", - "from": "dashdash@>=1.12.0 <2.0.0", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "getpass": { - "version": "0.1.6", - "from": "getpass@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "rc": { - "version": "1.1.6", - "from": "rc@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "dependencies": { - "minimist": { - "version": "1.2.0", - "from": "minimist@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - } - } - }, - "sshpk": { - "version": "1.8.3", - "from": "sshpk@>=1.7.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.8.3.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - } - } - } - } - }, - "yargs": { - "version": "3.32.0", - "from": "yargs@>=3.32.0 <4.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "dependencies": { - "camelcase": { - "version": "2.1.1", - "from": "camelcase@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - }, - "cliui": { - "version": "3.2.0", - "from": "cliui@>=3.0.3 <4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "wrap-ansi": { - "version": "2.0.0", - "from": "wrap-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.0.0.tgz" - } - } - }, - "decamelize": { - "version": "1.2.0", - "from": "decamelize@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "os-locale": { - "version": "1.4.0", - "from": "os-locale@>=1.4.0 <2.0.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "dependencies": { - "lcid": { - "version": "1.0.0", - "from": "lcid@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "dependencies": { - "invert-kv": { - "version": "1.0.0", - "from": "invert-kv@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" - } - } - } - } - }, - "string-width": { - "version": "1.0.2", - "from": "string-width@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "dependencies": { - "code-point-at": { - "version": "1.1.0", - "from": "code-point-at@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "is-fullwidth-code-point@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "from": "number-is-nan@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - } - } - }, - "window-size": { - "version": "0.1.4", - "from": "window-size@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz" - }, - "y18n": { - "version": "3.2.1", - "from": "y18n@>=3.2.0 <4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz" - } - } - } - } - }, - "q": { - "version": "1.4.1", - "from": "q@>=1.4.1 <1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" - }, - "semver": { - "version": "5.3.0", - "from": "semver@>=5.2.0 <6.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" - }, - "spdx-license-list": { - "version": "2.1.0", - "from": "spdx-license-list@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-list/-/spdx-license-list-2.1.0.tgz" - }, - "typescript": { - "version": "1.8.10", - "from": "typescript@>=1.7.5 <2.0.0", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-1.8.10.tgz" - } - } - }, - "event-stream": { - "version": "3.1.7", - "from": "https://registry.npmjs.org/event-stream/-/event-stream-3.1.7.tgz", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.1.7.tgz", - "dependencies": { - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "duplexer": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz" - }, - "from": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/from/-/from-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.3.tgz" - }, - "map-stream": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz" - }, - "pause-stream": { - "version": "0.0.11", - "from": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz" - }, - "split": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/split/-/split-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz" - }, - "stream-combiner": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz" - } - } - }, - "glob": { - "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "dependencies": { - "inflight": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - }, - "grunt": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz", - "dependencies": { - "coffee-script": { - "version": "1.10.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz" - }, - "dateformat": { - "version": "1.0.12", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - }, - "meow": { - "version": "3.7.0", - "from": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "dependencies": { - "camelcase-keys": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "dependencies": { - "camelcase": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - } - } - }, - "decamelize": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "loud-rejection": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "dependencies": { - "currently-unhandled": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "dependencies": { - "array-find-index": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz" - } - } - }, - "signal-exit": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" - } - } - }, - "map-obj": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - }, - "minimist": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "normalize-package-data": { - "version": "2.3.5", - "from": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", - "dependencies": { - "hosted-git-info": { - "version": "2.1.5", - "from": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz" - }, - "is-builtin-module": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "dependencies": { - "builtin-modules": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" - } - } - }, - "validate-npm-package-license": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "dependencies": { - "spdx-correct": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "dependencies": { - "spdx-license-ids": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" - } - } - }, - "spdx-expression-parse": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz", - "dependencies": { - "spdx-exceptions": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.5.tgz" - }, - "spdx-license-ids": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" - } - } - } - } - } - } - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - }, - "read-pkg-up": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "dependencies": { - "find-up": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "dependencies": { - "path-exists": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" - }, - "parse-json": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "dependencies": { - "error-ex": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", - "dependencies": { - "is-arrayish": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - } - } - } - } - }, - "pify": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - }, - "strip-bom": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "dependencies": { - "is-utf8": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - } - } - } - } - }, - "path-type": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" - }, - "pify": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - } - } - } - } - }, - "redent": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "dependencies": { - "indent-string": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "dependencies": { - "repeating": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - } - } - }, - "strip-indent": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" - } - } - }, - "trim-newlines": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" - } - } - } - } - }, - "eventemitter2": { - "version": "0.4.14", - "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" - }, - "exit": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - }, - "findup-sync": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "dependencies": { - "glob": { - "version": "5.0.15", - "from": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "dependencies": { - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - } - } - } - } - }, - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - } - } - }, - "grunt-known-options": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz" - }, - "grunt-legacy-log": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz", - "dependencies": { - "colors": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" - }, - "grunt-legacy-log-utils": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", - "dependencies": { - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "lodash": { - "version": "4.3.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz" - } - } - }, - "hooker": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" - }, - "lodash": { - "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - }, - "underscore.string": { - "version": "3.2.3", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz" - } - } - }, - "grunt-legacy-util": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", - "dependencies": { - "async": { - "version": "1.5.2", - "from": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - }, - "getobject": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz" - }, - "hooker": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" - }, - "lodash": { - "version": "4.3.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz" - }, - "underscore.string": { - "version": "3.2.3", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz" - }, - "which": { - "version": "1.2.10", - "from": "https://registry.npmjs.org/which/-/which-1.2.10.tgz", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.10.tgz", - "dependencies": { - "isexe": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz" - } - } - } - } - }, - "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" - }, - "js-yaml": { - "version": "3.5.5", - "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", - "dependencies": { - "argparse": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/argparse/-/argparse-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.7.tgz", - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - } - } - }, - "esprima": { - "version": "2.7.2", - "from": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz" - } - } - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "nopt": { - "version": "3.0.6", - "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - }, - "rimraf": { - "version": "2.2.8", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" - } - } - }, - "grunt-bump": { - "version": "0.8.0", - "from": "https://registry.npmjs.org/grunt-bump/-/grunt-bump-0.8.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-bump/-/grunt-bump-0.8.0.tgz", - "dependencies": { - "semver": { - "version": "5.3.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" - } - } - }, - "grunt-cli": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", - "dependencies": { - "findup-sync": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "dependencies": { - "glob": { - "version": "5.0.15", - "from": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "dependencies": { - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - }, - "grunt-known-options": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz" - }, - "nopt": { - "version": "3.0.6", - "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" - } - } - }, - "resolve": { - "version": "1.1.7", - "from": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" - } - } - }, - "grunt-contrib-clean": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.0.0.tgz", - "dependencies": { - "async": { - "version": "1.5.2", - "from": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - }, - "rimraf": { - "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "dependencies": { - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - } - } - }, - "grunt-contrib-compress": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-1.3.0.tgz", - "dependencies": { - "archiver": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/archiver/-/archiver-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.0.1.tgz", - "dependencies": { - "archiver-utils": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.2.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" - }, - "lazystream": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz" - }, - "normalize-path": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz" - } - } - }, - "async": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/async/-/async-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-2.0.1.tgz" - }, - "buffer-crc32": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz" - }, - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - }, - "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - }, - "tar-stream": { - "version": "1.5.2", - "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.2.tgz", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.2.tgz", - "dependencies": { - "bl": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "end-of-stream": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", - "dependencies": { - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - } - } - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "zip-stream": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.0.0.tgz", - "dependencies": { - "compress-commons": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.0.0.tgz", - "dependencies": { - "crc32-stream": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-1.0.0.tgz" - }, - "node-int64": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - }, - "normalize-path": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz" - } - } - } - } - } - } - }, - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "lodash": { - "version": "4.14.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.1.tgz" - }, - "pretty-bytes": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "stream-buffers": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz" - } - } - }, - "grunt-contrib-connect": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz", - "dependencies": { - "async": { - "version": "1.5.2", - "from": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - }, - "connect": { - "version": "3.4.1", - "from": "https://registry.npmjs.org/connect/-/connect-3.4.1.tgz", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.4.1.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "finalhandler": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", - "dependencies": { - "escape-html": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } - }, - "unpipe": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - } - } - }, - "parseurl": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - }, - "utils-merge": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" - } - } - }, - "connect-livereload": { - "version": "0.5.4", - "from": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", - "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz" - }, - "http2": { - "version": "3.3.4", - "from": "https://registry.npmjs.org/http2/-/http2-3.3.4.tgz", - "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.4.tgz" - }, - "morgan": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/morgan/-/morgan-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.7.0.tgz", - "dependencies": { - "basic-auth": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "depd": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } - }, - "on-headers": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz" - } - } - }, - "opn": { - "version": "4.0.2", - "from": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "dependencies": { - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - }, - "portscanner": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/portscanner/-/portscanner-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.0.0.tgz", - "dependencies": { - "async": { - "version": "0.1.15", - "from": "https://registry.npmjs.org/async/-/async-0.1.15.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.15.tgz" - } - } - } - } - }, - "grunt-contrib-copy": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", - "dependencies": { - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "file-sync-cmp": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz" - } - } - }, - "grunt-ddescribe-iit": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/grunt-ddescribe-iit/-/grunt-ddescribe-iit-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/grunt-ddescribe-iit/-/grunt-ddescribe-iit-0.0.6.tgz", - "dependencies": { - "bluebird": { - "version": "2.10.2", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz" - }, - "win-spawn": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/win-spawn/-/win-spawn-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/win-spawn/-/win-spawn-2.0.0.tgz" - } - } - }, - "grunt-eslint": { - "version": "19.0.0", - "from": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-19.0.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-19.0.0.tgz", - "dependencies": { - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "eslint": { - "version": "3.2.2", - "from": "https://registry.npmjs.org/eslint/-/eslint-3.2.2.tgz", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.2.2.tgz", - "dependencies": { - "concat-stream": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "typedarray": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - }, - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "doctrine": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/doctrine/-/doctrine-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.2.2.tgz", - "dependencies": { - "esutils": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - } - } - }, - "escope": { - "version": "3.6.0", - "from": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "dependencies": { - "es6-map": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.4.tgz", - "dependencies": { - "d": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz" - }, - "es5-ext": { - "version": "0.10.12", - "from": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz" - }, - "es6-iterator": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz" - }, - "es6-set": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.4.tgz" - }, - "es6-symbol": { - "version": "3.1.0", - "from": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz" - }, - "event-emitter": { - "version": "0.3.4", - "from": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz" - } - } - }, - "es6-weak-map": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.1.tgz", - "dependencies": { - "d": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz" - }, - "es5-ext": { - "version": "0.10.12", - "from": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz" - }, - "es6-iterator": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz" - }, - "es6-symbol": { - "version": "3.1.0", - "from": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz" - } - } - }, - "esrecurse": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", - "dependencies": { - "estraverse": { - "version": "4.1.1", - "from": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - } - } - }, - "espree": { - "version": "3.1.7", - "from": "https://registry.npmjs.org/espree/-/espree-3.1.7.tgz", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.1.7.tgz", - "dependencies": { - "acorn": { - "version": "3.3.0", - "from": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" - }, - "acorn-jsx": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz" - } - } - }, - "estraverse": { - "version": "4.2.0", - "from": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz" - }, - "esutils": { - "version": "2.0.2", - "from": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" - }, - "file-entry-cache": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", - "dependencies": { - "flat-cache": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.1.tgz", - "dependencies": { - "circular-json": { - "version": "0.3.1", - "from": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz" - }, - "del": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/del/-/del-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.1.tgz", - "dependencies": { - "globby": { - "version": "5.0.0", - "from": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "dependencies": { - "array-union": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "dependencies": { - "array-uniq": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - } - } - }, - "arrify": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz" - }, - "is-path-in-cwd": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "dependencies": { - "is-path-inside": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz" - } - } - }, - "pify": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - }, - "rimraf": { - "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz" - } - } - }, - "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" - }, - "write": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz" - } - } - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - }, - "globals": { - "version": "9.9.0", - "from": "https://registry.npmjs.org/globals/-/globals-9.9.0.tgz", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.9.0.tgz" - }, - "ignore": { - "version": "3.1.3", - "from": "https://registry.npmjs.org/ignore/-/ignore-3.1.3.tgz", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.1.3.tgz" - }, - "imurmurhash": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - }, - "inquirer": { - "version": "0.12.0", - "from": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz" - }, - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "cli-cursor": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "dependencies": { - "restore-cursor": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "dependencies": { - "exit-hook": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz" - }, - "onetime": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz" - } - } - } - } - }, - "cli-width": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz" - }, - "figures": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "readline2": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "mute-stream": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz" - } - } - }, - "run-async": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "dependencies": { - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - } - } - }, - "rx-lite": { - "version": "3.1.2", - "from": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz" - }, - "string-width": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - }, - "is-my-json-valid": { - "version": "2.13.1", - "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "dependencies": { - "generate-function": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "dependencies": { - "is-property": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - } - } - }, - "jsonpointer": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "is-resolvable": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "dependencies": { - "tryit": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/tryit/-/tryit-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.2.tgz" - } - } - }, - "js-yaml": { - "version": "3.6.1", - "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", - "dependencies": { - "argparse": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/argparse/-/argparse-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.7.tgz", - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - } - } - }, - "esprima": { - "version": "2.7.2", - "from": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz" - } - } - }, - "json-stable-stringify": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "dependencies": { - "jsonify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" - } - } - }, - "levn": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "dependencies": { - "prelude-ls": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - }, - "type-check": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - } - } - }, - "lodash": { - "version": "4.14.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.1.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "optionator": { - "version": "0.8.1", - "from": "https://registry.npmjs.org/optionator/-/optionator-0.8.1.tgz", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.1.tgz", - "dependencies": { - "prelude-ls": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - }, - "deep-is": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" - }, - "wordwrap": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" - }, - "type-check": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - }, - "fast-levenshtein": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz" - } - } - }, - "path-is-inside": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.1.tgz" - }, - "pluralize": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz" - }, - "progress": { - "version": "1.1.8", - "from": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz" - }, - "require-uncached": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.2.tgz", - "dependencies": { - "caller-path": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "dependencies": { - "callsites": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz" - } - } - }, - "resolve-from": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz" - } - } - }, - "shelljs": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.0.tgz" - }, - "strip-bom": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - }, - "strip-json-comments": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" - }, - "table": { - "version": "3.7.8", - "from": "https://registry.npmjs.org/table/-/table-3.7.8.tgz", - "resolved": "https://registry.npmjs.org/table/-/table-3.7.8.tgz", - "dependencies": { - "bluebird": { - "version": "3.4.1", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz" - }, - "slice-ansi": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz" - }, - "string-width": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "tv4": { - "version": "1.2.7", - "from": "https://registry.npmjs.org/tv4/-/tv4-1.2.7.tgz", - "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.2.7.tgz" - }, - "xregexp": { - "version": "3.1.1", - "from": "https://registry.npmjs.org/xregexp/-/xregexp-3.1.1.tgz", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-3.1.1.tgz" - } - } - }, - "text-table": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - }, - "user-home": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "dependencies": { - "os-homedir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz" - } - } - } - } - } - } - }, - "grunt-merge-conflict": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/grunt-merge-conflict/-/grunt-merge-conflict-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/grunt-merge-conflict/-/grunt-merge-conflict-0.0.2.tgz" - }, - "grunt-shell": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-1.3.0.tgz", - "dependencies": { - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "npm-run-path": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz", - "dependencies": { - "path-key": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz" - } - } - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "gulp": { - "version": "3.8.11", - "from": "https://registry.npmjs.org/gulp/-/gulp-3.8.11.tgz", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.8.11.tgz", - "dependencies": { - "archy": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz" - }, - "chalk": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "dependencies": { - "ansi-styles": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "supports-color": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" - } - } - }, - "deprecated": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz" - }, - "interpret": { - "version": "0.3.10", - "from": "https://registry.npmjs.org/interpret/-/interpret-0.3.10.tgz", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.3.10.tgz" - }, - "liftoff": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/liftoff/-/liftoff-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.2.1.tgz", - "dependencies": { - "extend": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/extend/-/extend-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-2.0.1.tgz" - }, - "findup-sync": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "dependencies": { - "glob": { - "version": "5.0.15", - "from": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "dependencies": { - "inflight": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - }, - "flagged-respawn": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz" - }, - "rechoir": { - "version": "0.6.2", - "from": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - }, - "resolve": { - "version": "1.1.7", - "from": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" - } - } - }, - "minimist": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "orchestrator": { - "version": "0.3.7", - "from": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.7.tgz", - "dependencies": { - "end-of-stream": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "dependencies": { - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - } - } - }, - "sequencify": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz" - }, - "stream-consume": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" - } - } - }, - "pretty-hrtime": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-0.2.2.tgz" - }, - "semver": { - "version": "4.3.6", - "from": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" - }, - "tildify": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", - "dependencies": { - "os-homedir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz" - } - } - }, - "v8flags": { - "version": "2.0.11", - "from": "https://registry.npmjs.org/v8flags/-/v8flags-2.0.11.tgz", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.0.11.tgz", - "dependencies": { - "user-home": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" - } - } - }, - "vinyl-fs": { - "version": "0.3.14", - "from": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "dependencies": { - "defaults": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "dependencies": { - "clone": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" - } - } - }, - "glob-stream": { - "version": "3.1.18", - "from": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "dependencies": { - "glob": { - "version": "4.5.3", - "from": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "dependencies": { - "inflight": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - } - } - }, - "minimatch": { - "version": "2.0.10", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "ordered-read-streams": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz" - }, - "glob2base": { - "version": "0.0.12", - "from": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "dependencies": { - "find-index": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz" - } - } - }, - "unique-stream": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz" - } - } - }, - "glob-watcher": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "dependencies": { - "gaze": { - "version": "0.5.2", - "from": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "dependencies": { - "globule": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "dependencies": { - "lodash": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz" - }, - "glob": { - "version": "3.1.21", - "from": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "dependencies": { - "graceful-fs": { - "version": "1.2.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" - }, - "inherits": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" - } - } - }, - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - } - } - } - } - } - } - }, - "graceful-fs": { - "version": "3.0.8", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "strip-bom": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "dependencies": { - "first-chunk-stream": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz" - }, - "is-utf8": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - } - } - }, - "through2": { - "version": "0.6.5", - "from": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "vinyl": { - "version": "0.4.6", - "from": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "dependencies": { - "clone": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" - }, - "clone-stats": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" - } - } - } - } - } - } - }, - "gulp-concat": { - "version": "2.6.0", - "from": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.0.tgz", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.0.tgz", - "dependencies": { - "concat-with-sourcemaps": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz", - "dependencies": { - "source-map": { - "version": "0.5.6", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" - } - } - }, - "through2": { - "version": "0.6.5", - "from": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - } - } - }, - "gulp-eslint": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/gulp-eslint/-/gulp-eslint-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/gulp-eslint/-/gulp-eslint-3.0.1.tgz", - "dependencies": { - "bufferstreams": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.1.tgz", - "dependencies": { - "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "eslint": { - "version": "3.2.2", - "from": "https://registry.npmjs.org/eslint/-/eslint-3.2.2.tgz", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.2.2.tgz", - "dependencies": { - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "concat-stream": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "typedarray": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - }, - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "doctrine": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/doctrine/-/doctrine-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.2.2.tgz", - "dependencies": { - "esutils": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - } - } - }, - "escope": { - "version": "3.6.0", - "from": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "dependencies": { - "es6-map": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.4.tgz", - "dependencies": { - "d": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz" - }, - "es5-ext": { - "version": "0.10.12", - "from": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz" - }, - "es6-iterator": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz" - }, - "es6-set": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.4.tgz" - }, - "es6-symbol": { - "version": "3.1.0", - "from": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz" - }, - "event-emitter": { - "version": "0.3.4", - "from": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz" - } - } - }, - "es6-weak-map": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.1.tgz", - "dependencies": { - "d": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz" - }, - "es5-ext": { - "version": "0.10.12", - "from": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz" - }, - "es6-iterator": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz" - }, - "es6-symbol": { - "version": "3.1.0", - "from": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz" - } - } - }, - "esrecurse": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", - "dependencies": { - "estraverse": { - "version": "4.1.1", - "from": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - } - } - }, - "espree": { - "version": "3.1.7", - "from": "https://registry.npmjs.org/espree/-/espree-3.1.7.tgz", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.1.7.tgz", - "dependencies": { - "acorn": { - "version": "3.3.0", - "from": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" - }, - "acorn-jsx": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz" - } - } - }, - "estraverse": { - "version": "4.2.0", - "from": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz" - }, - "esutils": { - "version": "2.0.2", - "from": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" - }, - "file-entry-cache": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", - "dependencies": { - "flat-cache": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.1.tgz", - "dependencies": { - "circular-json": { - "version": "0.3.1", - "from": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz" - }, - "del": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/del/-/del-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.1.tgz", - "dependencies": { - "globby": { - "version": "5.0.0", - "from": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "dependencies": { - "array-union": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "dependencies": { - "array-uniq": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - } - } - }, - "arrify": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz" - }, - "is-path-in-cwd": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "dependencies": { - "is-path-inside": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz" - } - } - }, - "pify": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - }, - "rimraf": { - "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz" - } - } - }, - "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" - }, - "write": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz" - } - } - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - }, - "globals": { - "version": "9.9.0", - "from": "https://registry.npmjs.org/globals/-/globals-9.9.0.tgz", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.9.0.tgz" - }, - "ignore": { - "version": "3.1.3", - "from": "https://registry.npmjs.org/ignore/-/ignore-3.1.3.tgz", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.1.3.tgz" - }, - "imurmurhash": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - }, - "inquirer": { - "version": "0.12.0", - "from": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz" - }, - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "cli-cursor": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "dependencies": { - "restore-cursor": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "dependencies": { - "exit-hook": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz" - }, - "onetime": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz" - } - } - } - } - }, - "cli-width": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz" - }, - "figures": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "readline2": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "mute-stream": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz" - } - } - }, - "run-async": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "dependencies": { - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - } - } - }, - "rx-lite": { - "version": "3.1.2", - "from": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz" - }, - "string-width": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - }, - "is-my-json-valid": { - "version": "2.13.1", - "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "dependencies": { - "generate-function": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "dependencies": { - "is-property": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - } - } - }, - "jsonpointer": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "is-resolvable": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "dependencies": { - "tryit": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/tryit/-/tryit-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.2.tgz" - } - } - }, - "js-yaml": { - "version": "3.6.1", - "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", - "dependencies": { - "argparse": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/argparse/-/argparse-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.7.tgz", - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - } - } - }, - "esprima": { - "version": "2.7.2", - "from": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz" - } - } - }, - "json-stable-stringify": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "dependencies": { - "jsonify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" - } - } - }, - "levn": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "dependencies": { - "prelude-ls": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - }, - "type-check": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - } - } - }, - "lodash": { - "version": "4.14.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.1.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "optionator": { - "version": "0.8.1", - "from": "https://registry.npmjs.org/optionator/-/optionator-0.8.1.tgz", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.1.tgz", - "dependencies": { - "prelude-ls": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - }, - "deep-is": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" - }, - "wordwrap": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" - }, - "type-check": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - }, - "fast-levenshtein": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz" - } - } - }, - "path-is-inside": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.1.tgz" - }, - "pluralize": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz" - }, - "progress": { - "version": "1.1.8", - "from": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz" - }, - "require-uncached": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.2.tgz", - "dependencies": { - "caller-path": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "dependencies": { - "callsites": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz" - } - } - }, - "resolve-from": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz" - } - } - }, - "shelljs": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.0.tgz" - }, - "strip-bom": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - }, - "strip-json-comments": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" - }, - "table": { - "version": "3.7.8", - "from": "https://registry.npmjs.org/table/-/table-3.7.8.tgz", - "resolved": "https://registry.npmjs.org/table/-/table-3.7.8.tgz", - "dependencies": { - "bluebird": { - "version": "3.4.1", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz" - }, - "slice-ansi": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz" - }, - "string-width": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "tv4": { - "version": "1.2.7", - "from": "https://registry.npmjs.org/tv4/-/tv4-1.2.7.tgz", - "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.2.7.tgz" - }, - "xregexp": { - "version": "3.1.1", - "from": "https://registry.npmjs.org/xregexp/-/xregexp-3.1.1.tgz", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-3.1.1.tgz" - } - } - }, - "text-table": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - }, - "user-home": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "dependencies": { - "os-homedir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz" - } - } - } - } - } - } - }, - "gulp-foreach": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/gulp-foreach/-/gulp-foreach-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/gulp-foreach/-/gulp-foreach-0.0.1.tgz", - "dependencies": { - "gulp-util": { - "version": "2.2.20", - "from": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", - "dependencies": { - "chalk": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "dependencies": { - "ansi-styles": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "supports-color": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" - } - } - }, - "dateformat": { - "version": "1.0.12", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - }, - "meow": { - "version": "3.7.0", - "from": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "dependencies": { - "camelcase-keys": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "dependencies": { - "camelcase": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - } - } - }, - "decamelize": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "loud-rejection": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.3.0.tgz", - "dependencies": { - "array-find-index": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz" - }, - "signal-exit": { - "version": "2.1.2", - "from": "https://registry.npmjs.org/signal-exit/-/signal-exit-2.1.2.tgz", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-2.1.2.tgz" - } - } - }, - "map-obj": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - }, - "minimist": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "normalize-package-data": { - "version": "2.3.5", - "from": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", - "dependencies": { - "hosted-git-info": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.4.tgz" - }, - "is-builtin-module": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "dependencies": { - "builtin-modules": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" - } - } - }, - "validate-npm-package-license": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "dependencies": { - "spdx-correct": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "dependencies": { - "spdx-license-ids": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz" - } - } - }, - "spdx-expression-parse": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz", - "dependencies": { - "spdx-exceptions": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.4.tgz" - }, - "spdx-license-ids": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz" - } - } - } - } - } - } - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - }, - "read-pkg-up": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "dependencies": { - "find-up": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "dependencies": { - "path-exists": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.4", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz" - }, - "parse-json": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "dependencies": { - "error-ex": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", - "dependencies": { - "is-arrayish": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - } - } - } - } - }, - "pify": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - }, - "strip-bom": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "dependencies": { - "is-utf8": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - } - } - } - } - }, - "path-type": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.4", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz" - }, - "pify": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - } - } - } - } - }, - "redent": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "dependencies": { - "indent-string": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "dependencies": { - "repeating": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - } - } - }, - "strip-indent": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" - } - } - }, - "trim-newlines": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" - } - } - } - } - }, - "lodash._reinterpolate": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz" - }, - "lodash.template": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", - "dependencies": { - "lodash.defaults": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz", - "dependencies": { - "lodash._objecttypes": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz" - } - } - }, - "lodash.escape": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", - "dependencies": { - "lodash._escapehtmlchar": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz", - "dependencies": { - "lodash._htmlescapes": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz" - } - } - }, - "lodash._reunescapedhtml": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz", - "dependencies": { - "lodash._htmlescapes": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz" - } - } - } - } - }, - "lodash._escapestringchar": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz" - }, - "lodash.keys": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", - "dependencies": { - "lodash._isnative": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz" - }, - "lodash.isobject": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", - "dependencies": { - "lodash._objecttypes": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz" - } - } - }, - "lodash._shimkeys": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", - "dependencies": { - "lodash._objecttypes": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz" - } - } - } - } - }, - "lodash.templatesettings": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz" - }, - "lodash.values": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz" - } - } - }, - "minimist": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz" - }, - "multipipe": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - } - } - }, - "through2": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "xtend": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz" - } - } - }, - "vinyl": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", - "dependencies": { - "clone-stats": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" - } - } - } - } - }, - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - }, - "gulp-rename": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz" - }, - "gulp-sourcemaps": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", - "dependencies": { - "convert-source-map": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.2.0.tgz" - }, - "graceful-fs": { - "version": "4.1.4", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz" - }, - "strip-bom": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "dependencies": { - "is-utf8": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - } - } - }, - "through2": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "vinyl": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/vinyl/-/vinyl-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.1.1.tgz", - "dependencies": { - "clone": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" - }, - "clone-stats": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" - }, - "replace-ext": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz" - } - } - } - } - }, - "gulp-uglify": { - "version": "1.5.3", - "from": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-1.5.3.tgz", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-1.5.3.tgz", - "dependencies": { - "deap": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/deap/-/deap-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/deap/-/deap-1.0.0.tgz" - }, - "fancy-log": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.2.0.tgz", - "dependencies": { - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "time-stamp": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.0.1.tgz" - } - } - }, - "isobject": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "dependencies": { - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - } - } - }, - "through2": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "uglify-js": { - "version": "2.6.2", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.2.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "source-map": { - "version": "0.5.6", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" - }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" - }, - "yargs": { - "version": "3.10.0", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "dependencies": { - "camelcase": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" - }, - "cliui": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "dependencies": { - "center-align": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "dependencies": { - "align-text": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "dependencies": { - "kind-of": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.3.tgz", - "dependencies": { - "is-buffer": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz" - } - } - }, - "longest": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" - }, - "repeat-string": { - "version": "1.5.4", - "from": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz" - } - } - }, - "lazy-cache": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" - } - } - }, - "right-align": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "dependencies": { - "align-text": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "dependencies": { - "kind-of": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.3.tgz", - "dependencies": { - "is-buffer": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz" - } - } - }, - "longest": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" - }, - "repeat-string": { - "version": "1.5.4", - "from": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz" - } - } - } - } - }, - "wordwrap": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" - } - } - }, - "decamelize": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "window-size": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" - } - } - } - } - }, - "uglify-save-license": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/uglify-save-license/-/uglify-save-license-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/uglify-save-license/-/uglify-save-license-0.4.1.tgz" - }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "dependencies": { - "source-map": { - "version": "0.5.6", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" - } - } - } - } - }, - "gulp-util": { - "version": "3.0.7", - "from": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz", - "dependencies": { - "array-differ": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz" - }, - "array-uniq": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz" - }, - "beeper": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/beeper/-/beeper-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.0.tgz" - }, - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "dateformat": { - "version": "1.0.12", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - }, - "meow": { - "version": "3.7.0", - "from": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "dependencies": { - "camelcase-keys": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "dependencies": { - "camelcase": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - } - } - }, - "decamelize": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "loud-rejection": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.3.0.tgz", - "dependencies": { - "array-find-index": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz" - }, - "signal-exit": { - "version": "2.1.2", - "from": "https://registry.npmjs.org/signal-exit/-/signal-exit-2.1.2.tgz", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-2.1.2.tgz" - } - } - }, - "map-obj": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - }, - "normalize-package-data": { - "version": "2.3.5", - "from": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", - "dependencies": { - "hosted-git-info": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.4.tgz" - }, - "is-builtin-module": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "dependencies": { - "builtin-modules": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" - } - } - }, - "validate-npm-package-license": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "dependencies": { - "spdx-correct": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "dependencies": { - "spdx-license-ids": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz" - } - } - }, - "spdx-expression-parse": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz", - "dependencies": { - "spdx-exceptions": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.4.tgz" - }, - "spdx-license-ids": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz" - } - } - } - } - } - } - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - }, - "read-pkg-up": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "dependencies": { - "find-up": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "dependencies": { - "path-exists": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.4", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz" - }, - "parse-json": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "dependencies": { - "error-ex": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", - "dependencies": { - "is-arrayish": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - } - } - } - } - }, - "pify": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - }, - "strip-bom": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "dependencies": { - "is-utf8": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - } - } - } - } - }, - "path-type": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.4", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz" - }, - "pify": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - } - } - } - } - }, - "redent": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "dependencies": { - "indent-string": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "dependencies": { - "repeating": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - } - } - }, - "strip-indent": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" - } - } - }, - "trim-newlines": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" - } - } - } - } - }, - "fancy-log": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.2.0.tgz", - "dependencies": { - "time-stamp": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.0.1.tgz" - } - } - }, - "gulplog": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "dependencies": { - "glogg": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", - "dependencies": { - "sparkles": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz" - } - } - } - } - }, - "has-gulplog": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "dependencies": { - "sparkles": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz" - } - } - }, - "lodash._reescape": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz" - }, - "lodash._reevaluate": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" - }, - "lodash.template": { - "version": "3.6.2", - "from": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "dependencies": { - "lodash._basecopy": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz" - }, - "lodash._basetostring": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" - }, - "lodash._basevalues": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz" - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "from": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz" - }, - "lodash.escape": { - "version": "3.2.0", - "from": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "dependencies": { - "lodash._root": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz" - } - } - }, - "lodash.keys": { - "version": "3.1.2", - "from": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "dependencies": { - "lodash._getnative": { - "version": "3.9.1", - "from": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz" - }, - "lodash.isarguments": { - "version": "3.0.8", - "from": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.8.tgz", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.8.tgz" - }, - "lodash.isarray": { - "version": "3.0.4", - "from": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" - } - } - }, - "lodash.restparam": { - "version": "3.6.1", - "from": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz" - }, - "lodash.templatesettings": { - "version": "3.1.1", - "from": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz" - } - } - }, - "minimist": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "multipipe": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - } - } - }, - "object-assign": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" - }, - "replace-ext": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz" - }, - "through2": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "vinyl": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "dependencies": { - "clone": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" - }, - "clone-stats": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" - } - } - } - } - }, - "jasmine-core": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.4.1.tgz" - }, - "jasmine-node": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/jasmine-node/-/jasmine-node-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/jasmine-node/-/jasmine-node-2.0.0.tgz", - "dependencies": { - "coffee-script": { - "version": "1.7.1", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz" - }, - "walkdir": { - "version": "0.0.11", - "from": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", - "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz" - }, - "underscore": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" - }, - "gaze": { - "version": "0.5.2", - "from": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "dependencies": { - "globule": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "dependencies": { - "lodash": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz" - }, - "glob": { - "version": "3.1.21", - "from": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "dependencies": { - "graceful-fs": { - "version": "1.2.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" - }, - "inherits": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" - } - } - }, - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - } - } - } - } - }, - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - }, - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "jasmine-growl-reporter": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/jasmine-growl-reporter/-/jasmine-growl-reporter-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/jasmine-growl-reporter/-/jasmine-growl-reporter-0.2.1.tgz", - "dependencies": { - "growl": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz" - } - } - } - } - }, - "jasmine-reporters": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-2.2.0.tgz", - "dependencies": { - "jasmine": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/jasmine/-/jasmine-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.4.1.tgz", - "dependencies": { - "exit": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - }, - "glob": { - "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - } - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "xmldom": { - "version": "0.1.22", - "from": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.22.tgz", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.22.tgz" - } - } - }, - "karma": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/karma/-/karma-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/karma/-/karma-1.1.2.tgz", - "dependencies": { - "bluebird": { - "version": "3.4.1", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz" - }, - "body-parser": { - "version": "1.15.2", - "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", - "dependencies": { - "bytes": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" - }, - "content-type": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "depd": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" - }, - "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" - } - } - }, - "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } - }, - "qs": { - "version": "6.2.0", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" - }, - "raw-body": { - "version": "2.1.7", - "from": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", - "dependencies": { - "unpipe": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - } - } - }, - "type-is": { - "version": "1.6.13", - "from": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", - "dependencies": { - "media-typer": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - } - } - } - } - }, - "chokidar": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.0.tgz", - "dependencies": { - "anymatch": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "dependencies": { - "arrify": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - }, - "micromatch": { - "version": "2.3.11", - "from": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "dependencies": { - "arr-flatten": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz" - } - } - }, - "array-unique": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" - }, - "braces": { - "version": "1.8.5", - "from": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "dependencies": { - "expand-range": { - "version": "1.8.2", - "from": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "dependencies": { - "fill-range": { - "version": "2.2.3", - "from": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "dependencies": { - "is-number": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" - }, - "isobject": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "dependencies": { - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - } - } - }, - "randomatic": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.5.tgz" - }, - "repeat-string": { - "version": "1.5.4", - "from": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz" - } - } - } - } - }, - "preserve": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" - }, - "repeat-element": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "dependencies": { - "is-posix-bracket": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" - } - } - }, - "extglob": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" - }, - "filename-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" - }, - "is-extglob": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - }, - "kind-of": { - "version": "3.0.4", - "from": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.4.tgz", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.4.tgz", - "dependencies": { - "is-buffer": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz" - } - } - }, - "normalize-path": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz" - }, - "object.omit": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.0.tgz", - "dependencies": { - "for-own": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/for-own/-/for-own-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.4.tgz", - "dependencies": { - "for-in": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/for-in/-/for-in-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.5.tgz" - } - } - }, - "is-extendable": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - } - } - }, - "parse-glob": { - "version": "3.0.4", - "from": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "dependencies": { - "glob-base": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" - }, - "is-dotfile": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz" - } - } - }, - "regex-cache": { - "version": "0.4.3", - "from": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "dependencies": { - "is-equal-shallow": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" - }, - "is-primitive": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" - } - } - } - } - } - } - }, - "async-each": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/async-each/-/async-each-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.0.tgz" - }, - "glob-parent": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "is-binary-path": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "dependencies": { - "binary-extensions": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.5.0.tgz" - } - } - }, - "is-glob": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - }, - "readdirp": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "dependencies": { - "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - }, - "set-immediate-shim": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" - } - } - } - } - }, - "colors": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" - }, - "combine-lists": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.0.tgz", - "dependencies": { - "lodash": { - "version": "4.14.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.1.tgz" - } - } - }, - "connect": { - "version": "3.4.1", - "from": "https://registry.npmjs.org/connect/-/connect-3.4.1.tgz", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.4.1.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "finalhandler": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", - "dependencies": { - "escape-html": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } - }, - "unpipe": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - } - } - }, - "parseurl": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - }, - "utils-merge": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" - } - } - }, - "core-js": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" - }, - "di": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz" - }, - "dom-serialize": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "dependencies": { - "custom-event": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.0.tgz" - }, - "ent": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz" - }, - "extend": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "void-elements": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz" - } - } - }, - "expand-braces": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", - "dependencies": { - "array-slice": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz" - }, - "array-unique": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" - }, - "braces": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", - "dependencies": { - "expand-range": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", - "dependencies": { - "is-number": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz" - }, - "repeat-string": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz" - } - } - } - } - } - } - }, - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - }, - "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" - }, - "http-proxy": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", - "dependencies": { - "eventemitter3": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" - }, - "requires-port": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - } - } - }, - "isbinaryfile": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.0.tgz" - }, - "lodash": { - "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - }, - "mime": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "optimist": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "minimist": { - "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - } - } - }, - "qjobs": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.4.tgz" - }, - "rimraf": { - "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz" - }, - "socket.io": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/socket.io/-/socket.io-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.4.7.tgz", - "dependencies": { - "engine.io": { - "version": "1.6.10", - "from": "https://registry.npmjs.org/engine.io/-/engine.io-1.6.10.tgz", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.6.10.tgz", - "dependencies": { - "base64id": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz" - }, - "ws": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/ws/-/ws-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.0.1.tgz", - "dependencies": { - "options": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz" - }, - "ultron": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz" - } - } - }, - "engine.io-parser": { - "version": "1.2.4", - "from": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz", - "dependencies": { - "after": { - "version": "0.8.1", - "from": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz" - }, - "arraybuffer.slice": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz" - }, - "base64-arraybuffer": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz" - }, - "blob": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz" - }, - "has-binary": { - "version": "0.1.6", - "from": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } - }, - "utf8": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz" - } - } - }, - "accepts": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz", - "dependencies": { - "mime-types": { - "version": "2.0.14", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "dependencies": { - "mime-db": { - "version": "1.12.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" - } - } - }, - "negotiator": { - "version": "0.4.9", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz" - } - } - } - } - }, - "socket.io-parser": { - "version": "2.2.6", - "from": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.6.tgz", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.6.tgz", - "dependencies": { - "json3": { - "version": "3.3.2", - "from": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz" - }, - "component-emitter": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } - }, - "socket.io-client": { - "version": "1.4.6", - "from": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.4.6.tgz", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.4.6.tgz", - "dependencies": { - "engine.io-client": { - "version": "1.6.9", - "from": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.6.9.tgz", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.6.9.tgz", - "dependencies": { - "has-cors": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz" - }, - "ws": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/ws/-/ws-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.0.1.tgz", - "dependencies": { - "options": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz" - }, - "ultron": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz" - } - } - }, - "xmlhttprequest-ssl": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz" - }, - "component-emitter": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz" - }, - "engine.io-parser": { - "version": "1.2.4", - "from": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz", - "dependencies": { - "after": { - "version": "0.8.1", - "from": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz" - }, - "arraybuffer.slice": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz" - }, - "base64-arraybuffer": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz" - }, - "blob": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz" - }, - "has-binary": { - "version": "0.1.6", - "from": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } - }, - "utf8": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz" - } - } - }, - "parsejson": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz", - "dependencies": { - "better-assert": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "dependencies": { - "callsite": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" - } - } - } - } - }, - "parseqs": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz", - "dependencies": { - "better-assert": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "dependencies": { - "callsite": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" - } - } - } - } - }, - "component-inherit": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz" - }, - "yeast": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz" - } - } - }, - "component-bind": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz" - }, - "component-emitter": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.0.tgz" - }, - "object-component": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz" - }, - "indexof": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - }, - "parseuri": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.4.tgz", - "dependencies": { - "better-assert": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "dependencies": { - "callsite": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" - } - } - } - } - }, - "to-array": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz" - }, - "backo2": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz" - } - } - }, - "socket.io-adapter": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.4.0.tgz", - "dependencies": { - "socket.io-parser": { - "version": "2.2.2", - "from": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.2.tgz", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.2.tgz", - "dependencies": { - "debug": { - "version": "0.7.4", - "from": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" - }, - "json3": { - "version": "3.2.6", - "from": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz" - }, - "component-emitter": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } - } - } - }, - "has-binary": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - } - } - }, - "source-map": { - "version": "0.5.6", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" - }, - "tmp": { - "version": "0.0.28", - "from": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", - "dependencies": { - "os-tmpdir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" - } - } - }, - "useragent": { - "version": "2.1.9", - "from": "https://registry.npmjs.org/useragent/-/useragent-2.1.9.tgz", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.1.9.tgz", - "dependencies": { - "lru-cache": { - "version": "2.2.4", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz" - } - } - } - } - }, - "karma-browserstack-launcher": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/karma-browserstack-launcher/-/karma-browserstack-launcher-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/karma-browserstack-launcher/-/karma-browserstack-launcher-1.0.1.tgz", - "dependencies": { - "browserstack": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.0.tgz", - "dependencies": { - "https-proxy-agent": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", - "dependencies": { - "agent-base": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz", - "dependencies": { - "semver": { - "version": "5.0.3", - "from": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz" - } - } - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "extend": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - } - } - } - } - }, - "q": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" - } - } - }, - "karma-chrome-launcher": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-1.0.1.tgz", - "dependencies": { - "fs-access": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.0.tgz", - "dependencies": { - "null-check": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz" - } - } - }, - "which": { - "version": "1.2.10", - "from": "https://registry.npmjs.org/which/-/which-1.2.10.tgz", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.10.tgz", - "dependencies": { - "isexe": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz" - } - } - } - } - }, - "karma-firefox-launcher": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.0.0.tgz" - }, - "karma-jasmine": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.0.2.tgz" - }, - "karma-junit-reporter": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-1.1.0.tgz", - "dependencies": { - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - }, - "xmlbuilder": { - "version": "8.2.2", - "from": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz" - } - } - }, - "karma-ng-scenario": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/karma-ng-scenario/-/karma-ng-scenario-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/karma-ng-scenario/-/karma-ng-scenario-1.0.0.tgz" - }, - "karma-sauce-launcher": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/karma-sauce-launcher/-/karma-sauce-launcher-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/karma-sauce-launcher/-/karma-sauce-launcher-1.0.0.tgz", - "dependencies": { - "q": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" - }, - "sauce-connect-launcher": { - "version": "0.13.0", - "from": "https://registry.npmjs.org/sauce-connect-launcher/-/sauce-connect-launcher-0.13.0.tgz", - "resolved": "https://registry.npmjs.org/sauce-connect-launcher/-/sauce-connect-launcher-0.13.0.tgz", - "dependencies": { - "lodash": { - "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - }, - "async": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/async/-/async-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.4.0.tgz" - }, - "adm-zip": { - "version": "0.4.7", - "from": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz" - }, - "rimraf": { - "version": "2.4.3", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz", - "dependencies": { - "glob": { - "version": "5.0.15", - "from": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "dependencies": { - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - } - } - }, - "saucelabs": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.2.0.tgz", - "dependencies": { - "https-proxy-agent": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", - "dependencies": { - "agent-base": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz", - "dependencies": { - "semver": { - "version": "5.0.3", - "from": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz" - } - } - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "extend": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - } - } - } - } - }, - "wd": { - "version": "0.3.12", - "from": "https://registry.npmjs.org/wd/-/wd-0.3.12.tgz", - "resolved": "https://registry.npmjs.org/wd/-/wd-0.3.12.tgz", - "dependencies": { - "archiver": { - "version": "0.14.4", - "from": "https://registry.npmjs.org/archiver/-/archiver-0.14.4.tgz", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.14.4.tgz", - "dependencies": { - "async": { - "version": "0.9.2", - "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" - }, - "buffer-crc32": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz" - }, - "glob": { - "version": "4.3.5", - "from": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz", - "dependencies": { - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "2.0.10", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - } - } - }, - "lazystream": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz" - }, - "lodash": { - "version": "3.2.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.2.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.2.0.tgz" - }, - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "tar-stream": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.1.5.tgz", - "dependencies": { - "bl": { - "version": "0.9.5", - "from": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz" - }, - "end-of-stream": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", - "dependencies": { - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - } - } - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "zip-stream": { - "version": "0.5.2", - "from": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.5.2.tgz", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.5.2.tgz", - "dependencies": { - "compress-commons": { - "version": "0.2.9", - "from": "https://registry.npmjs.org/compress-commons/-/compress-commons-0.2.9.tgz", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-0.2.9.tgz", - "dependencies": { - "crc32-stream": { - "version": "0.3.4", - "from": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.3.4.tgz", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.3.4.tgz" - }, - "node-int64": { - "version": "0.3.3", - "from": "https://registry.npmjs.org/node-int64/-/node-int64-0.3.3.tgz", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.3.3.tgz" - } - } - } - } - } - } - }, - "async": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz" - }, - "lodash": { - "version": "3.9.3", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.9.3.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.9.3.tgz" - }, - "request": { - "version": "2.55.0", - "from": "https://registry.npmjs.org/request/-/request-2.55.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.55.0.tgz", - "dependencies": { - "bl": { - "version": "0.9.5", - "from": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "caseless": { - "version": "0.9.0", - "from": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz" - }, - "forever-agent": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", - "dependencies": { - "async": { - "version": "0.9.2", - "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" - } - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "mime-types": { - "version": "2.0.14", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "dependencies": { - "mime-db": { - "version": "1.12.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" - } - } - }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "qs": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" - }, - "tunnel-agent": { - "version": "0.4.3", - "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - }, - "tough-cookie": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" - }, - "http-signature": { - "version": "0.10.1", - "from": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", - "dependencies": { - "assert-plus": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "asn1": { - "version": "0.1.11", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" - }, - "ctype": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" - } - } - }, - "oauth-sign": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz" - }, - "hawk": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", - "dependencies": { - "hoek": { - "version": "2.16.3", - "from": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - } - } - }, - "aws-sign2": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "combined-stream": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "dependencies": { - "delayed-stream": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" - } - } - }, - "isstream": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "har-validator": { - "version": "1.8.0", - "from": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", - "dependencies": { - "bluebird": { - "version": "2.10.2", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz" - }, - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "commander": { - "version": "2.9.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - } - } - }, - "is-my-json-valid": { - "version": "2.13.1", - "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "dependencies": { - "generate-function": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "dependencies": { - "is-property": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - } - } - }, - "jsonpointer": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - } - } - } - } - }, - "underscore.string": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.0.3.tgz" - }, - "vargs": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/vargs/-/vargs-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/vargs/-/vargs-0.1.0.tgz" - } - } - } - } - }, - "karma-script-launcher": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/karma-script-launcher/-/karma-script-launcher-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/karma-script-launcher/-/karma-script-launcher-1.0.0.tgz" - }, - "load-grunt-tasks": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.5.0.tgz", - "dependencies": { - "arrify": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - }, - "multimatch": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "dependencies": { - "array-differ": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz" - }, - "array-union": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "dependencies": { - "array-uniq": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - } - } - }, - "minimatch": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - } - } - }, - "pkg-up": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "dependencies": { - "find-up": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "dependencies": { - "path-exists": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - } - } - }, - "resolve-pkg": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-0.1.0.tgz", - "dependencies": { - "resolve-from": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz" - } - } - } - } - }, - "lodash": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - }, - "log4js": { - "version": "0.6.38", - "from": "https://registry.npmjs.com/log4js/-/log4js-0.6.38.tgz", - "resolved": "https://registry.npmjs.com/log4js/-/log4js-0.6.38.tgz", - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "semver": { - "version": "4.3.6", - "from": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" - } - } - }, - "marked": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz" - }, - "node-html-encoder": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/node-html-encoder/-/node-html-encoder-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/node-html-encoder/-/node-html-encoder-0.0.2.tgz" - }, - "promises-aplus-tests": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/promises-aplus-tests/-/promises-aplus-tests-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/promises-aplus-tests/-/promises-aplus-tests-2.1.1.tgz", - "dependencies": { - "mocha": { - "version": "1.21.5", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.21.5.tgz", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.21.5.tgz", - "dependencies": { - "commander": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz" - }, - "debug": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.0.0.tgz", - "dependencies": { - "ms": { - "version": "0.6.2", - "from": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" - } - } - }, - "diff": { - "version": "1.0.8", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.8.tgz" - }, - "escape-string-regexp": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz" - }, - "glob": { - "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "dependencies": { - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "graceful-fs": { - "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "growl": { - "version": "1.8.1", - "from": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz" - }, - "jade": { - "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "dependencies": { - "commander": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" - }, - "mkdirp": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" - } - } - }, - "mkdirp": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - } - } - }, - "sinon": { - "version": "1.17.4", - "from": "https://registry.npmjs.org/sinon/-/sinon-1.17.4.tgz", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.4.tgz", - "dependencies": { - "formatio": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz" - }, - "util": { - "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "lolex": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz" - }, - "samsam": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz" - } - } - }, - "underscore": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" - } - } - }, - "protractor": { - "version": "4.0.10", - "from": "https://registry.npmjs.org/protractor/-/protractor-4.0.10.tgz", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-4.0.10.tgz", - "dependencies": { - "@types/jasmine": { - "version": "2.5.37", - "from": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.37.tgz", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.37.tgz" - }, - "@types/node": { - "version": "6.0.46", - "from": "https://registry.npmjs.org/@types/node/-/node-6.0.46.tgz", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.46.tgz" - }, - "@types/q": { - "version": "0.0.32", - "from": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz" - }, - "@types/selenium-webdriver": { - "version": "2.53.34", - "from": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.34.tgz", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.34.tgz" - }, - "adm-zip": { - "version": "0.4.7", - "from": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz" - }, - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "glob": { - "version": "7.1.1", - "from": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.3", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - } - } - }, - "jasmine": { - "version": "2.5.2", - "from": "https://registry.npmjs.org/jasmine/-/jasmine-2.5.2.tgz", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.5.2.tgz", - "dependencies": { - "exit": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - }, - "jasmine-core": { - "version": "2.5.2", - "from": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.5.2.tgz", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.5.2.tgz" - } - } - }, - "jasminewd2": { - "version": "0.0.10", - "from": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-0.0.10.tgz" - }, - "optimist": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "minimist": { - "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - } - } - }, - "q": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" - }, - "saucelabs": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz", - "dependencies": { - "https-proxy-agent": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", - "dependencies": { - "agent-base": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz", - "dependencies": { - "semver": { - "version": "5.0.3", - "from": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz" - } - } - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "extend": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - } - } - } - } - }, - "source-map-support": { - "version": "0.4.6", - "from": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.6.tgz", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.6.tgz", - "dependencies": { - "source-map": { - "version": "0.5.6", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" - } - } - }, - "webdriver-manager": { - "version": "10.2.6", - "from": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-10.2.6.tgz", - "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-10.2.6.tgz", - "dependencies": { - "del": { - "version": "2.2.2", - "from": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "dependencies": { - "globby": { - "version": "5.0.0", - "from": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "dependencies": { - "array-union": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "dependencies": { - "array-uniq": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - } - } - }, - "arrify": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz" - }, - "is-path-in-cwd": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "dependencies": { - "is-path-inside": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "dependencies": { - "path-is-inside": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" - } - } - } - } - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - }, - "pify": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - }, - "ini": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" - }, - "minimist": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "request": { - "version": "2.78.0", - "from": "https://registry.npmjs.org/request/-/request-2.78.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.78.0.tgz", - "dependencies": { - "aws-sign2": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "aws4": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz" - }, - "caseless": { - "version": "0.11.0", - "from": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "dependencies": { - "delayed-stream": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - } - } - }, - "extend": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "forever-agent": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/form-data/-/form-data-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.1.tgz", - "dependencies": { - "asynckit": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - } - } - }, - "har-validator": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "dependencies": { - "commander": { - "version": "2.9.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - } - } - }, - "is-my-json-valid": { - "version": "2.15.0", - "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", - "dependencies": { - "generate-function": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "dependencies": { - "is-property": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - } - } - }, - "jsonpointer": { - "version": "4.0.0", - "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - }, - "hawk": { - "version": "3.1.3", - "from": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "dependencies": { - "hoek": { - "version": "2.16.3", - "from": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - } - } - }, - "http-signature": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "dependencies": { - "assert-plus": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" - }, - "jsprim": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", - "dependencies": { - "extsprintf": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" - }, - "json-schema": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" - }, - "verror": { - "version": "1.3.6", - "from": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" - } - } - }, - "sshpk": { - "version": "1.10.1", - "from": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.1.tgz", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.1.tgz", - "dependencies": { - "asn1": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - }, - "dashdash": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz" - }, - "getpass": { - "version": "0.1.6", - "from": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" - }, - "jsbn": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" - }, - "tweetnacl": { - "version": "0.14.3", - "from": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz" - }, - "jodid25519": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" - }, - "ecc-jsbn": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" - }, - "bcrypt-pbkdf": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz" - } - } - } - } - }, - "is-typedarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - }, - "isstream": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "mime-types": { - "version": "2.1.12", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz", - "dependencies": { - "mime-db": { - "version": "1.24.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz" - } - } - }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "oauth-sign": { - "version": "0.8.2", - "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" - }, - "qs": { - "version": "6.3.0", - "from": "https://registry.npmjs.org/qs/-/qs-6.3.0.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.0.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "tough-cookie": { - "version": "2.3.2", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "dependencies": { - "punycode": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - } - } - }, - "tunnel-agent": { - "version": "0.4.3", - "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - } - } - }, - "rimraf": { - "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz" - }, - "semver": { - "version": "5.3.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" - } - } - } - } - }, - "q": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/q/-/q-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-1.0.1.tgz" - }, - "q-io": { - "version": "1.13.2", - "from": "https://registry.npmjs.org/q-io/-/q-io-1.13.2.tgz", - "resolved": "https://registry.npmjs.org/q-io/-/q-io-1.13.2.tgz", - "dependencies": { - "qs": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz" - }, - "url2": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/url2/-/url2-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/url2/-/url2-0.0.0.tgz" - }, - "mime": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "mimeparse": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/mimeparse/-/mimeparse-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/mimeparse/-/mimeparse-0.1.4.tgz" - }, - "collections": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/collections/-/collections-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/collections/-/collections-0.2.2.tgz", - "dependencies": { - "weak-map": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.0.tgz" - } - } - } - } - }, - "qq": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/qq/-/qq-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/qq/-/qq-0.3.5.tgz", - "dependencies": { - "q": { - "version": "0.8.4", - "from": "https://registry.npmjs.org/q/-/q-0.8.4.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-0.8.4.tgz" - } - } - }, - "rewire": { - "version": "2.1.5", - "from": "https://registry.npmjs.org/rewire/-/rewire-2.1.5.tgz", - "resolved": "https://registry.npmjs.org/rewire/-/rewire-2.1.5.tgz" - }, - "sax": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" - }, - "selenium-webdriver": { - "version": "2.53.3", - "from": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz", - "dependencies": { - "adm-zip": { - "version": "0.4.4", - "from": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz" - }, - "rimraf": { - "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "dependencies": { - "glob": { - "version": "7.0.6", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - }, - "tmp": { - "version": "0.0.24", - "from": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz" - }, - "ws": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz", - "dependencies": { - "options": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz" - }, - "ultron": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz" - } - } - }, - "xml2js": { - "version": "0.4.4", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz", - "dependencies": { - "sax": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz" - }, - "xmlbuilder": { - "version": "8.2.2", - "from": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz" - } - } - } - } - }, - "semver": { - "version": "4.0.3", - "from": "https://registry.npmjs.org/semver/-/semver-4.0.3.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.0.3.tgz" - }, - "serve-favicon": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.0.tgz", - "dependencies": { - "etag": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" - }, - "fresh": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "parseurl": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - } - } - }, - "serve-index": { - "version": "1.8.0", - "from": "https://registry.npmjs.org/serve-index/-/serve-index-1.8.0.tgz", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.8.0.tgz", - "dependencies": { - "accepts": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "dependencies": { - "negotiator": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz" - } - } - }, - "batch": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "escape-html": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - }, - "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" - }, - "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" - } - } - }, - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - }, - "parseurl": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - } - } - }, - "serve-static": { - "version": "1.11.1", - "from": "https://registry.npmjs.org/serve-static/-/serve-static-1.11.1.tgz", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.11.1.tgz", - "dependencies": { - "encodeurl": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz" - }, - "escape-html": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - }, - "parseurl": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - }, - "send": { - "version": "0.14.1", - "from": "https://registry.npmjs.org/send/-/send-0.14.1.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.14.1.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" - }, - "depd": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "destroy": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" - }, - "etag": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" - }, - "fresh": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" - }, - "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" - } - } - }, - "mime": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } - }, - "range-parser": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" - }, - "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" - } - } - } - } - }, - "shelljs": { - "version": "0.7.5", - "from": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.5.tgz", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.5.tgz", - "dependencies": { - "glob": { - "version": "7.1.1", - "from": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.3", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - } - } - }, - "interpret": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/interpret/-/interpret-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.1.tgz" - }, - "rechoir": { - "version": "0.6.2", - "from": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "dependencies": { - "resolve": { - "version": "1.1.7", - "from": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" - } - } - } - } - }, - "sorted-object": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/sorted-object/-/sorted-object-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/sorted-object/-/sorted-object-1.0.0.tgz" - }, - "stringmap": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz" - } - } -} diff --git a/package.json b/package.json index 61a635ed7ed8..9c1257827f00 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,11 @@ "url": "https://github.com/angular/angular.js.git" }, "engines": { - "node": "<5", - "npm": "~2.5" + "node": "^6.9.1", + "yarn": "^0.17.9", + "grunt": "^1.2.0" }, "scripts": { - "preinstall": "node scripts/npm/check-node-modules.js --purge", - "postinstall": "node scripts/npm/copy-npm-shrinkwrap.js", "commit": "git-cz", "test-i18n": "jasmine-node i18n/spec", "test-i18n-ucd": "jasmine-node i18n/ucd/spec", diff --git a/scripts/bower/publish.sh b/scripts/bower/publish.sh index 766cc82ce721..1685fae2dc31 100755 --- a/scripts/bower/publish.sh +++ b/scripts/bower/publish.sh @@ -15,7 +15,7 @@ function init { BUILD_DIR=$(resolveDir ../../build) NEW_VERSION=$(cat $BUILD_DIR/version.txt) PROJECT_DIR=$(resolveDir ../..) - # get the npm dist-tag from a custom property (distTag) in package.json + # get the dist-tag for this release from a custom property (distTag) in package.json DIST_TAG=$(readJsonProp "$PROJECT_DIR/package.json" "distTag") } @@ -96,10 +96,10 @@ function publish { git push origin master git push origin v$NEW_VERSION - # don't publish every build to npm + # don't publish every build to the npm repository if [ "${NEW_VERSION/+sha}" = "$NEW_VERSION" ] ; then - echo "-- Publishing to npm as $DIST_TAG" - npm publish --tag=$DIST_TAG + echo "-- Publishing to the npm repository as $DIST_TAG" + yarn publish --tag=$DIST_TAG fi cd $SCRIPT_DIR diff --git a/scripts/jenkins/build.sh b/scripts/jenkins/build.sh index c37e4aa1e889..205bcf6246de 100755 --- a/scripts/jenkins/build.sh +++ b/scripts/jenkins/build.sh @@ -4,7 +4,7 @@ echo "#################################" echo "#### Jenkins Build ############" echo "#################################" -source scripts/jenkins/set-node-version.sh +source scripts/jenkins/init-node.sh # Enable tracing and exit on first failure set -xe @@ -21,23 +21,22 @@ rm -f angular.js.size # BUILD # -npm install -g grunt-cli -npm install --color false -grunt ci-checks package --no-color +yarn +node_modules/.bin/grunt ci-checks package --no-color mkdir -p test_out # UNIT TESTS # -grunt test:unit --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color +node_modules/.bin/grunt test:unit --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color # END TO END TESTS # -grunt test:ci-protractor +node_modules/.bin/grunt test:ci-protractor # DOCS APP TESTS # -grunt test:docs --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color +node_modules/.bin/grunt test:docs --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color # Promises/A+ TESTS # -grunt test:promises-aplus --no-color +node_modules/.bin/grunt test:promises-aplus --no-color # CHECK SIZE # diff --git a/scripts/jenkins/init-node.sh b/scripts/jenkins/init-node.sh new file mode 100755 index 000000000000..f27b84abd1d5 --- /dev/null +++ b/scripts/jenkins/init-node.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Install nvm for this shell +source ~/.nvm/nvm.sh + +# Use version of node.js found in .nvmrc +nvm install + +# clean out and install yarn +rm -rf ~/.yarn +curl -o- -L https://raw.githubusercontent.com/yarnpkg/yarn/2a0afc73210c7a82082585283e518eeb88ca19ae/scripts/install-latest.sh | bash -s -- --version 0.17.9 + +# Ensure we have the correct global grunt installed +yarn global add grunt-cli@1.2.0 --exact + +# Ensure that we have the local dependencies installed +yarn install \ No newline at end of file diff --git a/scripts/jenkins/release.sh b/scripts/jenkins/release.sh index 6d37ae99c1bd..1513a37c404f 100755 --- a/scripts/jenkins/release.sh +++ b/scripts/jenkins/release.sh @@ -35,12 +35,11 @@ function init { } function build { - source ./set-node-version.sh + source ./init-node.sh cd ../.. - npm install -g grunt-cli - npm install --color false - grunt ci-checks package --no-color + yarn + node_modules/.bin/grunt ci-checks package --no-color cd $SCRIPT_DIR } diff --git a/scripts/jenkins/set-node-version.sh b/scripts/jenkins/set-node-version.sh deleted file mode 100755 index 6869a6f0062a..000000000000 --- a/scripts/jenkins/set-node-version.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -# Install nvm for this shell -source ~/.nvm/nvm.sh - -# Use node.js at 4.2.x -nvm install 4.4 diff --git a/scripts/npm/check-node-modules.js b/scripts/npm/check-node-modules.js deleted file mode 100644 index e15d1e312acd..000000000000 --- a/scripts/npm/check-node-modules.js +++ /dev/null @@ -1,75 +0,0 @@ -// Implementation based on: -// https://github.com/angular/angular/blob/3b9c08676a4c921bbfa847802e08566fb601ba7a/tools/npm/check-node-modules.js -'use strict'; - -// Imports -var fs = require('fs'); -var path = require('path'); - -// Constants -var PROJECT_ROOT = path.join(__dirname, '../../'); -var NODE_MODULES_DIR = 'node_modules'; -var NPM_SHRINKWRAP_FILE = 'npm-shrinkwrap.json'; -var NPM_SHRINKWRAP_CACHED_FILE = NODE_MODULES_DIR + '/npm-shrinkwrap.cached.json'; - -// Run -_main(); - -// Functions - Definitions -function _main() { - var purgeIfStale = process.argv.indexOf('--purge') !== -1; - - process.chdir(PROJECT_ROOT); - checkNodeModules(purgeIfStale); -} - -function checkNodeModules(purgeIfStale) { - var nodeModulesOk = compareMarkerFiles(NPM_SHRINKWRAP_FILE, NPM_SHRINKWRAP_CACHED_FILE); - - if (nodeModulesOk) { - console.log(':-) npm dependencies are looking good!'); - } else if (purgeIfStale) { - console.log(':-( npm dependencies are stale or in an unknown state!'); - console.log(' Purging \'' + NODE_MODULES_DIR + '\'...'); - deleteDirSync(NODE_MODULES_DIR); - } else { - var separator = new Array(81).join('!'); - - console.warn(separator); - console.warn(':-( npm dependencies are stale or in an unknown state!'); - console.warn('You can rebuild the dependencies by running `npm install`.'); - console.warn(separator); - } - - return nodeModulesOk; -} - -function compareMarkerFiles(markerFilePath, cachedMarkerFilePath) { - if (!fs.existsSync(markerFilePath)) return false; - if (!fs.existsSync(cachedMarkerFilePath)) return false; - - var opts = {encoding: 'utf-8'}; - var markerContent = fs.readFileSync(markerFilePath, opts); - var cachedMarkerContent = fs.readFileSync(cachedMarkerFilePath, opts); - - return markerContent === cachedMarkerContent; -} - -// Custom implementation of `rm -rf` that works consistently across OSes -function deleteDirSync(path) { - if (fs.existsSync(path)) { - fs.readdirSync(path).forEach(deleteDirOrFileSync); - fs.rmdirSync(path); - } - - // Helpers - function deleteDirOrFileSync(subpath) { - var curPath = path + '/' + subpath; - - if (fs.lstatSync(curPath).isDirectory()) { - deleteDirSync(curPath); - } else { - fs.unlinkSync(curPath); - } - } -} diff --git a/scripts/npm/clean-shrinkwrap.js b/scripts/npm/clean-shrinkwrap.js deleted file mode 100755 index 0e05f7c73790..000000000000 --- a/scripts/npm/clean-shrinkwrap.js +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -/** - * this script is just a temporary solution to deal with the issue of npm outputting the npm - * shrinkwrap file in an unstable manner. - * - * See: https://github.com/npm/npm/issues/3581 - */ - -var _ = require('lodash'); -var sorted = require('sorted-object'); -var fs = require('fs'); -var path = require('path'); - - -function cleanModule(module, name) { - - // keep `resolve` properties for git dependencies, delete otherwise - delete module.from; - if (!(module.resolved && module.resolved.match(/^git(\+[a-z]+)?:\/\//))) { - delete module.resolved; - } - - _.forEach(module.dependencies, function(mod, name) { - cleanModule(mod, name); - }); -} - - -console.log('Reading npm-shrinkwrap.json'); -var shrinkwrap = require('../../npm-shrinkwrap.json'); - -console.log('Cleaning shrinkwrap object'); -cleanModule(shrinkwrap, shrinkwrap.name); - -var cleanShrinkwrapPath = path.join(__dirname, '..', '..', 'npm-shrinkwrap.clean.json'); -console.log('Writing cleaned to', cleanShrinkwrapPath); -fs.writeFileSync(cleanShrinkwrapPath, JSON.stringify(sorted(shrinkwrap), null, 2) + '\n'); diff --git a/scripts/npm/copy-npm-shrinkwrap.js b/scripts/npm/copy-npm-shrinkwrap.js deleted file mode 100644 index 78bfe3baaafa..000000000000 --- a/scripts/npm/copy-npm-shrinkwrap.js +++ /dev/null @@ -1,60 +0,0 @@ -'use strict'; - -// Imports -var fs = require('fs'); -var path = require('path'); - -// Constants -var PROJECT_ROOT = path.join(__dirname, '../../'); -var NODE_MODULES_DIR = 'node_modules'; -var NPM_SHRINKWRAP_FILE = 'npm-shrinkwrap.json'; -var NPM_SHRINKWRAP_CACHED_FILE = NODE_MODULES_DIR + '/npm-shrinkwrap.cached.json'; - -// Run -_main(); - -// Functions - Definitions -function _main() { - process.chdir(PROJECT_ROOT); - copyFile(NPM_SHRINKWRAP_FILE, NPM_SHRINKWRAP_CACHED_FILE, onCopied); -} - -// Implementation based on: -// https://stackoverflow.com/questions/11293857/fastest-way-to-copy-file-in-node-js#answer-21995878 -function copyFile(srcPath, dstPath, callback) { - var callbackCalled = false; - - if (!fs.existsSync(srcPath)) { - done(new Error('Missing source file: ' + srcPath)); - return; - } - - var rs = fs.createReadStream(srcPath); - rs.on('error', done); - - var ws = fs.createWriteStream(dstPath); - ws.on('error', done); - ws.on('finish', done); - - rs.pipe(ws); - - // Helpers - function done(err) { - if (callback && !callbackCalled) { - callbackCalled = true; - callback(err); - } - } -} - -function onCopied(err) { - if (err) { - var separator = new Array(81).join('!'); - - console.error(separator); - console.error( - 'Failed to copy `' + NPM_SHRINKWRAP_FILE + '` to `' + NPM_SHRINKWRAP_CACHED_FILE + '`:'); - console.error(err); - console.error(separator); - } -} diff --git a/scripts/travis/before_build.sh b/scripts/travis/before_build.sh index de67dbbcab78..0165586f68e2 100755 --- a/scripts/travis/before_build.sh +++ b/scripts/travis/before_build.sh @@ -9,10 +9,8 @@ if [ $JOB != "ci-checks" ]; then ./scripts/travis/start_browser_provider.sh fi -npm install -g grunt-cli - if [ $JOB != "ci-checks" ]; then - grunt package + node_modules/.bin/grunt package echo "wait_for_browser_provider" ./scripts/travis/wait_for_browser_provider.sh fi diff --git a/scripts/travis/build.sh b/scripts/travis/build.sh index 70dd4182f645..10438875ee13 100755 --- a/scripts/travis/build.sh +++ b/scripts/travis/build.sh @@ -6,7 +6,7 @@ export BROWSER_STACK_ACCESS_KEY=`echo $BROWSER_STACK_ACCESS_KEY | rev` export SAUCE_ACCESS_KEY=`echo $SAUCE_ACCESS_KEY | rev` if [ "$JOB" == "ci-checks" ]; then - grunt ci-checks + node_modules/.bin/grunt ci-checks elif [ "$JOB" == "unit" ]; then if [ "$BROWSER_PROVIDER" == "browserstack" ]; then BROWSERS="BS_Chrome,BS_Safari,BS_Firefox,BS_IE_9,BS_IE_10,BS_IE_11,BS_iOS" @@ -14,11 +14,11 @@ elif [ "$JOB" == "unit" ]; then BROWSERS="SL_Chrome,SL_Firefox,SL_Safari_8,SL_Safari_9,SL_IE_9,SL_IE_10,SL_IE_11,SL_iOS" fi - grunt test:promises-aplus - grunt test:unit --browsers="$BROWSERS" --reporters=dots - grunt tests:docs --browsers="$BROWSERS" --reporters=dots + node_modules/.bin/grunt test:promises-aplus + node_modules/.bin/grunt test:unit --browsers="$BROWSERS" --reporters=dots + node_modules/.bin/grunt tests:docs --browsers="$BROWSERS" --reporters=dots elif [ "$JOB" == "docs-e2e" ]; then - grunt test:travis-protractor --specs="docs/app/e2e/**/*.scenario.js" + node_modules/.bin/grunt test:travis-protractor --specs="docs/app/e2e/**/*.scenario.js" elif [ "$JOB" == "e2e" ]; then if [[ $TEST_TARGET == jquery* ]]; then export USE_JQUERY=1 @@ -30,7 +30,7 @@ elif [ "$JOB" == "e2e" ]; then fi export TARGET_SPECS="test/e2e/tests/**/*.js,$TARGET_SPECS" - grunt test:travis-protractor --specs="$TARGET_SPECS" + node_modules/.bin/grunt test:travis-protractor --specs="$TARGET_SPECS" else echo "Unknown job type. Please set JOB=ci-checks, JOB=unit or JOB=e2e-*." fi diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000000..44b71d46b906 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,6790 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/jasmine@^2.5.36": + version "2.5.38" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717" + +"@types/node@^6.0.46": + version "6.0.51" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.51.tgz#84cbf25111516ec9304d0b61469dc0fa9d12ba32" + +"@types/q@^0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" + +"@types/selenium-webdriver@~2.53.31": + version "2.53.35" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.35.tgz#a0c4b5f090bde48ba9ed16e4d43a5b99112c72fb" + +Base64@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz#ba3a4230708e186705065e66babdd4c35cf60028" + +CSSselect@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/CSSselect/-/CSSselect-0.4.1.tgz#f8ab7e1f8418ce63cda6eb7bd778a85d7ec492b2" + dependencies: + CSSwhat "0.4" + domutils "1.4" + +CSSwhat@0.4: + version "0.4.7" + resolved "https://registry.yarnpkg.com/CSSwhat/-/CSSwhat-0.4.7.tgz#867da0ff39f778613242c44cfea83f0aa4ebdf9b" + +JSONStream@^1.0.3: + version "1.2.1" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.2.1.tgz#32aa5790e799481083b49b4b7fa94e23bae69bf9" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +JSONStream@~0.8.3, JSONStream@~0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.8.4.tgz#91657dfe6ff857483066132b4618b62e8f4887bd" + dependencies: + jsonparse "0.0.5" + through ">=2.2.7 <3" + +abbrev@1, abbrev@~1.0.4: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +accepts@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.1.4.tgz#d71c96f7d41d0feda2c38cd14e8a27c04158df4a" + dependencies: + mime-types "~2.0.4" + negotiator "0.4.9" + +accepts@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" + dependencies: + mime-types "~2.1.11" + negotiator "0.6.1" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@4.X, acorn@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.3.tgz#1a3e850b428e73ba6b09d1cc527f5aaad4d03ef1" + +acorn@^1.0.3: + version "1.2.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014" + +acorn@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" + +acorn@^3.0.4, acorn@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +adm-zip@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736" + +adm-zip@0.4.7, adm-zip@^0.4.7, adm-zip@~0.4.3: + version "0.4.7" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1" + +after@0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627" + +agent-base@2: + version "2.0.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e" + dependencies: + extend "~3.0.0" + semver "~5.0.1" + +ajv-keywords@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.1.1.tgz#02550bc605a3e576041565628af972e06c549d50" + +ajv@^4.7.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.9.0.tgz#5a358085747b134eb567d6d15e015f1d7802f45c" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +angular-benchpress@0.x.x: + version "0.2.2" + resolved "https://registry.yarnpkg.com/angular-benchpress/-/angular-benchpress-0.2.2.tgz#05754d36e6248e061dbaf6a30a801c06217f1f60" + dependencies: + bootstrap "^3.2.0" + browserify "~7.0.0" + di "~2.0.0-pre-9" + express "^4.8.6" + minimist "^1.1.0" + mkdirp "^0.5.0" + rimraf "^2.2.8" + rx "~2.3.20" + underscore "^1.6.0" + +ansi-escapes@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-regex@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.1.0.tgz#55ca60db6900857c423ae9297980026f941ed903" + +ansi-regex@^0.2.0, ansi-regex@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" + +ansi-regex@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-1.1.1.tgz#41c847194646375e6a1a5d10c3ca054ef9fc980d" + +ansi-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" + +ansi-styles@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +anymatch@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + dependencies: + arrify "^1.0.0" + micromatch "^2.1.5" + +aproba@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" + +archiver-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" + dependencies: + glob "^7.0.0" + graceful-fs "^4.1.0" + lazystream "^1.0.0" + lodash "^4.8.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + +archiver@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.1.0.tgz#e1e8c4d356cf155308f351d60cc18cb6fb2344ee" + dependencies: + archiver-utils "^1.3.0" + async "^2.0.0" + buffer-crc32 "^0.2.1" + glob "^7.0.0" + lodash "^4.8.0" + readable-stream "^2.0.0" + tar-stream "^1.5.0" + zip-stream "^1.1.0" + +archiver@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.2.0.tgz#fb5c6af5443b3fa6a426344753bad2a7b444aadd" + dependencies: + archiver-utils "^1.3.0" + async "^2.0.0" + buffer-crc32 "^0.2.1" + glob "^7.0.0" + lodash "^4.8.0" + readable-stream "^2.0.0" + tar-stream "^1.5.0" + zip-stream "^1.1.0" + +archy@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/archy/-/archy-0.0.2.tgz#910f43bf66141fc335564597abc189df44b3d35e" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + +are-we-there-yet@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.0 || ^1.1.13" + +argparse@^1.0.2: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1, array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arraybuffer.slice@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" + +asn1.js@^4.0.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.0.tgz#f71a1243f3e79d46d7b07d7fbf4824ee73af054a" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@0.1.11: + version "0.1.11" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz#ee74009413002d84cec7219c6ac811812e723160" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.1.2.tgz#adaa04c46bb58c6dd1f294da3eb26e6228eb6e44" + dependencies: + util "0.10.3" + +astw@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astw/-/astw-2.0.0.tgz#08121ac8288d35611c0ceec663f6cd545604897d" + dependencies: + acorn "^1.0.3" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/async/-/async-1.4.0.tgz#35f86f83c59e0421d099cd9a91d8278fb578c00d" + +async@1.5.2, async@^1.5.2, async@~1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.0.1.tgz#b709cc0280a9c36f09f4536be823c838a9049e25" + dependencies: + lodash "^4.8.0" + +async@^0.9.0, async@~0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + +async@^2.0.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" + dependencies: + lodash "^4.14.0" + +async@~0.2.6, async@~0.2.8: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +async@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +atob@~1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" + +aws-sign2@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.5.0.tgz#c57103f7a17fc037f02d7c2e64b602ea223f7d63" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" + +babel-code-frame@^6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^2.0.0" + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + +balanced-match@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +base64-arraybuffer@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz#474df4a9f2da24e05df3158c3b1db3c3cd46a154" + +base64-js@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.7.tgz#54400dc91d696cec32a8a47902f971522fee8f48" + +base64id@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f" + +basic-auth@~1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.0.4.tgz#030935b01de7c9b94a824b29f3fccb750d3a5290" + +batch@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" + +bcrypt-pbkdf@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + +benchmark@1.0.0, benchmark@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-1.0.0.tgz#2f1e2fa4c359f11122aa183082218e957e390c73" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + dependencies: + callsite "1.0.0" + +binary-extensions@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.7.0.tgz#6c1610db163abfb34edfe42fa423343a1e01185d" + +"binary@>= 0.3.0 < 1", binary@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" + dependencies: + buffers "~0.1.1" + chainsaw "~0.1.0" + +bl@^0.9.0, bl@~0.9.0: + version "0.9.5" + resolved "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz#c06b797af085ea00bc527afc8efcf11de2232054" + dependencies: + readable-stream "~1.0.26" + +bl@^1.0.0, bl@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" + dependencies: + readable-stream "~2.0.5" + +blob@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^2.9.9: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + +bluebird@^3.3.0: + version "3.4.6" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + +body-parser@^1.12.4: + version "1.15.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.15.2.tgz#d7578cf4f1d11d5f6ea804cef35dc7a7ff6dae67" + dependencies: + bytes "2.4.0" + content-type "~1.0.2" + debug "~2.2.0" + depd "~1.1.0" + http-errors "~1.5.0" + iconv-lite "0.4.13" + on-finished "~2.3.0" + qs "6.2.0" + raw-body "~2.1.7" + type-is "~1.6.13" + +boom@0.4.x: + version "0.4.2" + resolved "https://registry.yarnpkg.com/boom/-/boom-0.4.2.tgz#7a636e9ded4efcefb19cef4947a3c67dfaee911b" + dependencies: + hoek "0.9.x" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +bootstrap@^3.2.0: + version "3.3.7" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.3.7.tgz#5a389394549f23330875a3b150656574f8a9eb71" + +bower-config@~0.5.0, bower-config@~0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/bower-config/-/bower-config-0.5.2.tgz#1f7d2e899e99b70c29a613e70d4c64590414b22e" + dependencies: + graceful-fs "~2.0.0" + mout "~0.9.0" + optimist "~0.6.0" + osenv "0.0.3" + +bower-endpoint-parser@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz#00b565adbfab6f2d35addde977e97962acbcb3f6" + +bower-json@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/bower-json/-/bower-json-0.4.0.tgz#a99c3ccf416ef0590ed0ded252c760f1c6d93766" + dependencies: + deep-extend "~0.2.5" + graceful-fs "~2.0.0" + intersect "~0.0.3" + +bower-logger@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/bower-logger/-/bower-logger-0.2.2.tgz#39be07e979b2fc8e03a94634205ed9422373d381" + +bower-registry-client@~0.2.0: + version "0.2.4" + resolved "https://registry.yarnpkg.com/bower-registry-client/-/bower-registry-client-0.2.4.tgz#269fc7e898b627fb939d1144a593254d7fbbeebc" + dependencies: + async "~0.2.8" + bower-config "~0.5.0" + graceful-fs "~2.0.0" + lru-cache "~2.3.0" + mkdirp "~0.3.5" + request "~2.51.0" + request-replay "~0.2.0" + rimraf "~2.2.0" + +bower@~1.3.9: + version "1.3.12" + resolved "https://registry.yarnpkg.com/bower/-/bower-1.3.12.tgz#37de0edb3904baf90aee13384a1a379a05ee214c" + dependencies: + abbrev "~1.0.4" + archy "0.0.2" + bower-config "~0.5.2" + bower-endpoint-parser "~0.2.2" + bower-json "~0.4.0" + bower-logger "~0.2.2" + bower-registry-client "~0.2.0" + cardinal "0.4.0" + chalk "0.5.0" + chmodr "0.1.0" + decompress-zip "0.0.8" + fstream "~1.0.2" + fstream-ignore "~1.0.1" + glob "~4.0.2" + graceful-fs "~3.0.1" + handlebars "~2.0.0" + inquirer "0.7.1" + insight "0.4.3" + is-root "~1.0.0" + junk "~1.0.0" + lockfile "~1.0.0" + lru-cache "~2.5.0" + mkdirp "0.5.0" + mout "~0.9.0" + nopt "~3.0.0" + opn "~1.0.0" + osenv "0.1.0" + p-throttler "0.1.0" + promptly "0.2.0" + q "~1.0.1" + request "~2.42.0" + request-progress "0.3.0" + retry "0.6.0" + rimraf "~2.2.0" + semver "~2.3.0" + shell-quote "~1.4.1" + stringify-object "~1.0.0" + tar-fs "0.5.2" + tmp "0.0.23" + update-notifier "0.2.0" + which "~1.0.5" + +brace-expansion@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + dependencies: + expand-range "^0.1.0" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +brorand@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.0.6.tgz#4028706b915f91f7b349a2e0bf3c376039d216e5" + +browser-pack@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-3.2.0.tgz#faa1cbc41487b1acc4747e373e1148adffd0e2d9" + dependencies: + JSONStream "~0.8.4" + combine-source-map "~0.3.0" + concat-stream "~1.4.1" + defined "~0.0.0" + through2 "~0.5.1" + umd "^2.1.0" + +browser-resolve@^1.3.0, browser-resolve@^1.7.0: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" + dependencies: + buffer-xor "^1.0.2" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + inherits "^2.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@~0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +browserify@~7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-7.0.3.tgz#b839f84ed22c24b67f79af68002e5684c73d534e" + dependencies: + JSONStream "~0.8.3" + assert "~1.1.0" + browser-pack "^3.2.0" + browser-resolve "^1.3.0" + browserify-zlib "~0.1.2" + buffer "^2.3.0" + builtins "~0.0.3" + commondir "0.0.1" + concat-stream "~1.4.1" + console-browserify "^1.1.0" + constants-browserify "~0.0.1" + crypto-browserify "^3.0.0" + deep-equal "~0.2.1" + defined "~0.0.0" + deps-sort "^1.3.5" + domain-browser "~1.1.0" + duplexer2 "~0.0.2" + events "~1.0.0" + glob "^4.0.5" + http-browserify "^1.4.0" + https-browserify "~0.0.0" + inherits "~2.0.1" + insert-module-globals "^6.1.0" + isarray "0.0.1" + labeled-stream-splicer "^1.0.0" + module-deps "^3.6.3" + os-browserify "~0.1.1" + parents "~0.0.1" + path-browserify "~0.0.0" + process "^0.8.0" + punycode "~1.2.3" + querystring-es3 "~0.2.0" + readable-stream "^1.0.33-1" + resolve "~0.7.1" + shallow-copy "0.0.1" + shasum "^1.0.0" + shell-quote "~0.0.1" + stream-browserify "^1.0.0" + string_decoder "~0.10.0" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^1.0.0" + timers-browserify "^1.0.1" + tty-browserify "~0.0.0" + umd "~2.1.0" + url "~0.10.1" + util "~0.10.1" + vm-browserify "~0.0.1" + xtend "^3.0.0" + +browserstack@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/browserstack/-/browserstack-1.5.0.tgz#b565425ad62ed72c1082a1eb979d5313c7d4754f" + dependencies: + https-proxy-agent "1.0.0" + +browserstacktunnel-wrapper@^1.4.2, browserstacktunnel-wrapper@~1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/browserstacktunnel-wrapper/-/browserstacktunnel-wrapper-1.4.2.tgz#6598fb7d784b6ff348e3df7c104b0d9c27ea5275" + dependencies: + unzip "~0.1.9" + +buffer-crc32@^0.2.1: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + +buffer-shims@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +buffer-xor@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^2.3.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-2.8.2.tgz#d73c214c0334384dc29b04ee0ff5f5527c7974e7" + dependencies: + base64-js "0.0.7" + ieee754 "^1.1.4" + is-array "^1.0.1" + +buffers@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" + +bufferstreams@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/bufferstreams/-/bufferstreams-1.1.1.tgz#0161373060ac5988eff99058731114f6e195d51e" + dependencies: + readable-stream "^2.0.2" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtins@~0.0.3: + version "0.0.7" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-0.0.7.tgz#355219cd6cf18dbe7c01cc7fd2dce765cfdc549a" + +bytes@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsite@1.0.0, callsite@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.0.0, camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +canonical-path@0.0.2, canonical-path@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-0.0.2.tgz#e31eb937a8c93ee2a01df1839794721902874574" + +cardinal@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-0.4.0.tgz#7d10aafb20837bde043c45e43a0c8c28cdaae45e" + dependencies: + redeyed "~0.4.0" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +caseless@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.6.0.tgz#8167c1ab8397fb5bb95f96d28e5a81c50f247ac4" + +caseless@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.8.0.tgz#5bca2881d41437f54b2407ebe34888c7b9ad4f7d" + +catharsis@^0.8.1: + version "0.8.8" + resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.8.tgz#693479f43aac549d806bd73e924cd0d944951a06" + dependencies: + underscore-contrib "~0.3.0" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chainsaw@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" + dependencies: + traverse ">=0.3.0 <0.4" + +chalk@0.5.0, chalk@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.0.tgz#375dfccbc21c0a60a8b61bc5b78f3dc2a55c212f" + dependencies: + ansi-styles "^1.1.0" + escape-string-regexp "^1.0.0" + has-ansi "^0.1.0" + strip-ansi "^0.3.0" + supports-color "^0.2.0" + +chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3, chalk@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" + dependencies: + ansi-styles "^1.1.0" + escape-string-regexp "^1.0.0" + has-ansi "^0.1.0" + strip-ansi "^0.3.0" + supports-color "^0.2.0" + +change-case@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.0.tgz#6c9c8e35f8790870a82b6b0745be8c3cbef9b081" + dependencies: + camel-case "^3.0.0" + constant-case "^2.0.0" + dot-case "^2.1.0" + header-case "^1.0.0" + is-lower-case "^1.1.0" + is-upper-case "^1.1.0" + lower-case "^1.1.1" + lower-case-first "^1.0.0" + no-case "^2.2.0" + param-case "^2.1.0" + pascal-case "^2.0.0" + path-case "^2.1.0" + sentence-case "^2.1.0" + snake-case "^2.1.0" + swap-case "^1.1.0" + title-case "^2.1.0" + upper-case "^1.1.1" + upper-case-first "^1.1.0" + +changez-angular@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/changez-angular/-/changez-angular-2.1.0.tgz#927f7f5b7227eadabed79e1b2c0924c83984f7a3" + dependencies: + changez "^2.1.0" + nunjucks-date "^1.2.0" + +changez@^2.1.0, changez@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/changez/-/changez-2.1.1.tgz#11dd75baf3105666e761b49e33036f6273994587" + dependencies: + commander "^2.9.0" + find-package "^1.0.0" + nunjucks "^2.5.2" + shelljs "^0.7.4" + simple-node-logger "^0.93.12" + +cheerio@^0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.17.0.tgz#fa5ae42cc60121133d296d0b46d983215f7268ea" + dependencies: + CSSselect "~0.4.0" + dom-serializer "~0.0.0" + entities "~1.1.1" + htmlparser2 "~3.7.2" + lodash "~2.4.1" + +chmodr@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/chmodr/-/chmodr-0.1.0.tgz#e09215a1d51542db2a2576969765bcf6125583eb" + +chokidar@^1.4.1, chokidar@^1.6.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +cipher-base@^1.0.0, cipher-base@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" + dependencies: + inherits "^2.0.1" + +circular-json@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" + +cli-color@~0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-0.3.3.tgz#12d5bdd158ff8a0b0db401198913c03df069f6f5" + dependencies: + d "~0.1.1" + es5-ext "~0.10.6" + memoizee "~0.3.8" + timers-ext "0.1" + +cli-cursor@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-width@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + +clone-stats@^0.0.1, clone-stats@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + +clone@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + +clone@^1.0.0, clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +cloneable-readable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" + dependencies: + inherits "^2.0.1" + process-nextick-args "^1.0.6" + through2 "^2.0.1" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +coffee-script@~1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.10.0.tgz#12938bcf9be1948fa006f92e0c4c9e81705108c0" + +coffee-script@~1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.7.1.tgz#62996a861780c75e6d5069d13822723b73404bfc" + dependencies: + mkdirp "~0.3.5" + +collections@^0.2.0, collections@~0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/collections/-/collections-0.2.2.tgz#1f23026b2ef36f927eecc901e99c5f0d48fa334e" + dependencies: + weak-map "1.0.0" + +colors@1.0.x: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + +colors@^1.1.0, colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combine-lists@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + dependencies: + lodash "^4.5.0" + +combine-source-map@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.3.0.tgz#d9e74f593d9cd43807312cb5d846d451efaa9eb7" + dependencies: + convert-source-map "~0.3.0" + inline-source-map "~0.3.0" + source-map "~0.1.31" + +combine-source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.6.1.tgz#9b4a09c316033d768e0f11e029fa2730e079ad96" + dependencies: + convert-source-map "~1.1.0" + inline-source-map "~0.5.0" + lodash.memoize "~3.0.3" + source-map "~0.4.2" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +combined-stream@~0.0.4, combined-stream@~0.0.5: + version "0.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz#0137e657baa5a7541c57ac37ac5fc07d73b4dc1f" + dependencies: + delayed-stream "0.0.5" + +commander@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" + +commander@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" + +commander@>=1.1, commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commitizen@^2.3.0: + version "2.8.6" + resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-2.8.6.tgz#578483abbf5b67368d1ccdb9d9d978c74972011b" + dependencies: + chalk "1.1.3" + cz-conventional-changelog "1.2.0" + dedent "0.6.0" + detect-indent "4.0.0" + find-node-modules "1.0.3" + find-root "1.0.0" + glob "7.0.5" + home-or-tmp "2.0.0" + inquirer "1.1.2" + lodash "4.15.0" + minimist "1.2.0" + path-exists "2.1.0" + shelljs "0.5.3" + strip-json-comments "2.0.1" + +commondir@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-0.0.1.tgz#89f00fdcd51b519c578733fec563e6a6da7f5be2" + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + +component-emitter@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" + +component-emitter@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.0.tgz#ccd113a86388d06482d03de3fc7df98526ba8efe" + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + +compress-commons@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.1.0.tgz#9f4460bb1288564c7473916e0298aa3c320dcadb" + dependencies: + buffer-crc32 "^0.2.1" + crc32-stream "^1.0.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@~1.4.1, concat-stream@~1.4.5: + version "1.4.10" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.10.tgz#acc3bbf5602cb8cc980c6ac840fa7d8603e3ef36" + dependencies: + inherits "~2.0.1" + readable-stream "~1.1.9" + typedarray "~0.0.5" + +concat-with-sourcemaps@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz#f55b3be2aeb47601b10a2d5259ccfb70fd2f1dd6" + dependencies: + source-map "^0.5.1" + +config-chain@~1.1.8: + version "1.1.11" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^0.3.0, configstore@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-0.3.2.tgz#25e4c16c3768abf75c5a65bc61761f495055b459" + dependencies: + graceful-fs "^3.0.1" + js-yaml "^3.1.0" + mkdirp "^0.5.0" + object-assign "^2.0.0" + osenv "^0.1.0" + user-home "^1.0.0" + uuid "^2.0.1" + xdg-basedir "^1.0.0" + +connect-livereload@^0.5.0: + version "0.5.4" + resolved "https://registry.yarnpkg.com/connect-livereload/-/connect-livereload-0.5.4.tgz#80157d1371c9f37cc14039ab1895970d119dc3bc" + +connect@^3.3.5, connect@^3.4.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" + dependencies: + debug "~2.2.0" + finalhandler "0.5.0" + parseurl "~1.3.1" + utils-merge "1.0.0" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constant-case@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" + dependencies: + snake-case "^2.1.0" + upper-case "^1.1.1" + +constants-browserify@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-0.0.1.tgz#92577db527ba6c4cf0a4568d84bc031f441e21f2" + +content-disposition@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b" + +content-type@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" + +conventional-commit-types@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.1.0.tgz#45d860386c9a2e6537ee91d8a1b61bd0411b3d04" + +convert-source-map@1.X: + version "1.3.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" + +convert-source-map@~0.3.0: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + +convert-source-map@~1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +core-js@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +crc32-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-1.0.0.tgz#ea155e5e1d738ed3778438ffe92ffe2a141aeb3f" + dependencies: + buffer-crc32 "^0.2.1" + readable-stream "^2.0.0" + +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^1.0.0" + sha.js "^2.3.6" + +create-hmac@^1.1.0, create-hmac@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170" + dependencies: + create-hash "^1.1.0" + inherits "^2.0.1" + +cross-spawn@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cryptiles@0.2.x: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-0.2.2.tgz#ed91ff1f17ad13d3748288594f8a48a0d26f325c" + dependencies: + boom "0.4.x" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +crypto-browserify@^3.0.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + +css@2.X: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" + dependencies: + inherits "^2.0.1" + source-map "^0.1.38" + source-map-resolve "^0.3.0" + urix "^0.1.0" + +ctype@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz#82c18c2461f74114ef16c135224ad0b9144ca12f" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + +cycle@1.0.x: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" + +cz-conventional-changelog@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-1.1.4.tgz#c0e643d419113601c4ebd9b173db9d751fcfdd41" + dependencies: + word-wrap "^1.0.3" + +cz-conventional-changelog@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-1.2.0.tgz#2bca04964c8919b23f3fd6a89ef5e6008b31b3f8" + dependencies: + conventional-commit-types "^2.0.0" + lodash.map "^4.5.1" + longest "^1.0.1" + pad-right "^0.2.2" + right-pad "^1.0.1" + word-wrap "^1.0.3" + +d@^0.1.1, d@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309" + dependencies: + es5-ext "~0.10.2" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +dateformat@^1.0.11, dateformat@^1.0.7-1.2.3, dateformat@~1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + dependencies: + get-stdin "^4.0.1" + meow "^3.3.0" + +deap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/deap/-/deap-1.0.0.tgz#b148bf82430a27699b7483a03eb6b67585bfc888" + +debug-fabulous@0.0.X: + version "0.0.4" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.0.4.tgz#fa071c5d87484685424807421ca4b16b0b1a0763" + dependencies: + debug "2.X" + lazy-debug-legacy "0.0.X" + object-assign "4.1.0" + +debug@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" + +debug@2, debug@2.2.0, debug@2.X, debug@^2.1.1, debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decompress-zip@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/decompress-zip/-/decompress-zip-0.0.8.tgz#4a265b22c7b209d7b24fa66f2b2dfbced59044f3" + dependencies: + binary "~0.3.0" + graceful-fs "~3.0.0" + mkpath "~0.1.0" + nopt "~2.2.0" + q "~1.0.0" + readable-stream "~1.1.8" + touch "0.0.2" + +dedent@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.6.0.tgz#0e6da8f0ce52838ef5cec5c8f9396b0c1b64a3cb" + +deep-equal@~0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.2.2.tgz#84b745896f34c684e98f2ce0e42abaf43bba017d" + +deep-extend@~0.2.5: + version "0.2.11" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.2.11.tgz#7a16ba69729132340506170494bc83f7076fe08f" + +deep-extend@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +defaults@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +defined@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-0.0.0.tgz#f35eea7d705e933baf13b2f03b3f83d921403b3e" + +del@^2.0.2, del@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" + +dependency-graph@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.4.1.tgz#302e58218d85c51a97638730dbf9b7d852a19693" + +deprecated@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" + +deps-sort@^1.3.5: + version "1.3.9" + resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-1.3.9.tgz#29dfff53e17b36aecae7530adbbbf622c2ed1a71" + dependencies: + JSONStream "^1.0.3" + shasum "^1.0.0" + subarg "^1.0.0" + through2 "^1.0.0" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-file@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" + dependencies: + fs-exists-sync "^0.1.0" + +detect-indent@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detect-newline@2.X: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + +detective@^4.0.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.3.2.tgz#77697e2e7947ac3fe7c8e26a6d6f115235afa91c" + dependencies: + acorn "^3.1.0" + defined "^1.0.0" + +dgeni-packages@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/dgeni-packages/-/dgeni-packages-0.16.0.tgz#f48f5e8785eb0ca0e95b3250a8df020c30717c68" + dependencies: + canonical-path "0.0.2" + catharsis "^0.8.1" + change-case "3.0.0" + dgeni "^0.4.0" + espree "^2.2.3" + estraverse "^4.1.0" + glob "^7.0.5" + htmlparser2 "^3.7.3" + lodash "^4.13.1" + marked "^0.3.2" + minimatch "^3.0.2" + node-html-encoder "0.0.2" + nunjucks "^2.4.2" + q "~1.4.1" + q-io "~1.13.2" + semver "^5.2.0" + shelljs "^0.7.0" + spdx-license-list "^2.1.0" + stringmap "^0.2.2" + typescript "^1.7.5" + +dgeni@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/dgeni/-/dgeni-0.4.2.tgz#c5f7297922444e9e149368f7d3c3fdb17cc96d28" + dependencies: + canonical-path "~0.0.2" + dependency-graph "~0.4.1" + di "0.0.1" + lodash "^3.10.1" + optimist "~0.6.1" + q "~1.4.1" + validate.js "^0.9.0" + winston "^2.1.1" + +di@0.0.1, di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + +di@~2.0.0-pre-9: + version "2.0.0-pre-9" + resolved "https://registry.yarnpkg.com/di/-/di-2.0.0-pre-9.tgz#b51fb4c3a7a1cb231396e1abce4f0ecfe187b6df" + dependencies: + es6-shim "~0.9.2" + traceur vojtajina/traceur-compiler#add-es6-pure-transformer-dist + +diff@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" + +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +doctrine@^1.2.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@0, dom-serializer@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.0.1.tgz#9589827f1e32d22c37c829adabd59b3247af8eaf" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domain-browser@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + +domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.2.1.tgz#59df9dcd227e808b365ae73e1f6684ac3d946fc2" + dependencies: + domelementtype "1" + +domutils@1.4: + version "1.4.3" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.4.3.tgz#0865513796c6b306031850e175516baf80b72a6f" + dependencies: + domelementtype "1" + +domutils@1.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.0.tgz#4b43dd0d7403c34cb645424add397e80bfe85ca6" + dependencies: + no-case "^2.2.0" + +duplexer2@0.0.2, duplexer2@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +elliptic@^6.0.0: + version "6.3.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.2.tgz#e4c81e0829cf0a65ab70e998b8232723b5c1bc48" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + inherits "^2.0.1" + +encodeurl@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" + +end-of-stream@^1.0.0, end-of-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" + dependencies: + once "~1.3.0" + +end-of-stream@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" + dependencies: + once "~1.3.0" + +engine.io-client@1.6.9: + version "1.6.9" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.6.9.tgz#1d6ad48048a5083c95096943b29d36efdb212401" + dependencies: + component-emitter "1.1.2" + component-inherit "0.0.3" + debug "2.2.0" + engine.io-parser "1.2.4" + has-cors "1.1.0" + indexof "0.0.1" + parsejson "0.0.1" + parseqs "0.0.2" + parseuri "0.0.4" + ws "1.0.1" + xmlhttprequest-ssl "1.5.1" + yeast "0.1.2" + +engine.io-parser@1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.2.4.tgz#e0897b0bf14e792d4cd2a5950553919c56948c42" + dependencies: + after "0.8.1" + arraybuffer.slice "0.0.6" + base64-arraybuffer "0.1.2" + blob "0.0.4" + has-binary "0.1.6" + utf8 "2.1.0" + +engine.io@1.6.10: + version "1.6.10" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.6.10.tgz#f87d84e1bd21d1a2ec7f8deef0c62054acdfb27a" + dependencies: + accepts "1.1.4" + base64id "0.1.0" + debug "2.2.0" + engine.io-parser "1.2.4" + ws "1.0.1" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + +entities@1.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" + +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +error-ex@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" + dependencies: + is-arrayish "^0.2.1" + +es5-ext@^0.10.7, es5-ext@^0.10.8, es5-ext@~0.10.11, es5-ext@~0.10.2, es5-ext@~0.10.5, es5-ext@~0.10.6, es5-ext@~0.10.7: + version "0.10.12" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-iterator@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac" + dependencies: + d "^0.1.1" + es5-ext "^0.10.7" + es6-symbol "3" + +es6-iterator@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-0.1.3.tgz#d6f58b8c4fc413c249b4baa19768f8e4d7c8944e" + dependencies: + d "~0.1.1" + es5-ext "~0.10.5" + es6-symbol "~2.0.1" + +es6-map@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.4.tgz#a34b147be224773a4d7da8072794cefa3632b897" + dependencies: + d "~0.1.1" + es5-ext "~0.10.11" + es6-iterator "2" + es6-set "~0.1.3" + es6-symbol "~3.1.0" + event-emitter "~0.3.4" + +es6-set@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.4.tgz#9516b6761c2964b92ff479456233a247dc707ce8" + dependencies: + d "~0.1.1" + es5-ext "~0.10.11" + es6-iterator "2" + es6-symbol "3" + event-emitter "~0.3.4" + +es6-shim@~0.9.2: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.9.3.tgz#00c725e75b0ae4d322e6ccbd87484a800237f03a" + +es6-symbol@3, es6-symbol@~3.1, es6-symbol@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" + dependencies: + d "~0.1.1" + es5-ext "~0.10.11" + +es6-symbol@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-2.0.1.tgz#761b5c67cfd4f1d18afb234f691d678682cb3bf3" + dependencies: + d "~0.1.1" + es5-ext "~0.10.5" + +es6-weak-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.1.tgz#0d2bbd8827eb5fb4ba8f97fbfea50d43db21ea81" + dependencies: + d "^0.1.1" + es5-ext "^0.10.8" + es6-iterator "2" + es6-symbol "3" + +es6-weak-map@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-0.1.4.tgz#706cef9e99aa236ba7766c239c8b9e286ea7d228" + dependencies: + d "~0.1.1" + es5-ext "~0.10.6" + es6-iterator "~0.1.3" + es6-symbol "~2.0.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" + +escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint@^3.0.0: + version "3.11.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.11.1.tgz#408be581041385cba947cd8d1cd2227782b55dbf" + dependencies: + babel-code-frame "^6.16.0" + chalk "^1.1.3" + concat-stream "^1.4.6" + debug "^2.1.1" + doctrine "^1.2.2" + escope "^3.6.0" + espree "^3.3.1" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + glob "^7.0.3" + globals "^9.2.0" + ignore "^3.2.0" + imurmurhash "^0.1.4" + inquirer "^0.12.0" + is-my-json-valid "^2.10.0" + is-resolvable "^1.0.0" + js-yaml "^3.5.1" + json-stable-stringify "^1.0.0" + levn "^0.3.0" + lodash "^4.0.0" + mkdirp "^0.5.0" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.1" + pluralize "^1.2.1" + progress "^1.1.8" + require-uncached "^1.0.2" + shelljs "^0.7.5" + strip-bom "^3.0.0" + strip-json-comments "~1.0.1" + table "^3.7.8" + text-table "~0.2.0" + user-home "^2.0.0" + +espree@^2.2.3: + version "2.2.5" + resolved "https://registry.yarnpkg.com/espree/-/espree-2.2.5.tgz#df691b9310889402aeb29cc066708c56690b854b" + +espree@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.3.2.tgz#dbf3fadeb4ecb4d4778303e50103b3d36c88b89c" + dependencies: + acorn "^4.0.1" + acorn-jsx "^3.0.0" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" + +esrecurse@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" + dependencies: + estraverse "~4.1.0" + object-assign "^4.0.1" + +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +estraverse@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" + +event-emitter@~0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.4.tgz#8d63ddfb4cfe1fae3b32ca265c4c720222080bb5" + dependencies: + d "~0.1.1" + es5-ext "~0.10.7" + +event-stream@~3.1.0: + version "3.1.7" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.1.7.tgz#b4c540012d0fe1498420f3d8946008db6393c37a" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.2" + stream-combiner "~0.0.4" + through "~2.3.1" + +eventemitter2@~0.4.13: + version "0.4.14" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + +events@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/events/-/events-1.0.2.tgz#75849dcfe93d10fb057c30055afdbd51d06a8e24" + +evp_bytestokey@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" + dependencies: + create-hash "^1.1.1" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +exit@^0.1.2, exit@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + +expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +expand-tilde@^1.2.1, expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + dependencies: + os-homedir "^1.0.1" + +express@^4.8.6: + version "4.14.0" + resolved "https://registry.yarnpkg.com/express/-/express-4.14.0.tgz#c1ee3f42cdc891fb3dc650a8922d51ec847d0d66" + dependencies: + accepts "~1.3.3" + array-flatten "1.1.1" + content-disposition "0.5.1" + content-type "~1.0.2" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "~2.2.0" + depd "~1.1.0" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.7.0" + finalhandler "0.5.0" + fresh "0.3.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.1" + path-to-regexp "0.1.7" + proxy-addr "~1.1.2" + qs "6.2.0" + range-parser "~1.2.0" + send "0.14.1" + serve-static "~1.11.1" + type-is "~1.6.13" + utils-merge "1.0.0" + vary "~1.1.0" + +extend@3, extend@^3.0.0, extend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" + +external-editor@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-1.1.1.tgz#12d7b0db850f7ff7e7081baf4005700060c4600b" + dependencies: + extend "^3.0.0" + spawn-sync "^1.0.15" + tmp "^0.0.29" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +eyes@0.1.x: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + +fancy-log@^1.0.0, fancy-log@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.2.0.tgz#d5a51b53e9ab22ca07d558f2b67ae55fdb5fcbd8" + dependencies: + chalk "^1.1.1" + time-stamp "^1.0.0" + +fast-levenshtein@~2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz#bd33145744519ab1c36c3ee9f31f08e9079b67f2" + +figures@^1.3.2, figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-sync-cmp@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz#a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b" + +filename-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +finalhandler@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7" + dependencies: + debug "~2.2.0" + escape-html "~1.0.3" + on-finished "~2.3.0" + statuses "~1.3.0" + unpipe "~1.0.0" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + +find-node-modules@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-1.0.3.tgz#36117ea45c13d5d8352f82ba791c2b835d730a14" + dependencies: + findup-sync "^0.2.1" + merge "^1.2.0" + +find-package@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-package/-/find-package-1.0.0.tgz#d7738da67e3c5f055c24d3e19aa1aeed063c3e83" + dependencies: + parents "^1.0.1" + +find-root@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.0.0.tgz#962ff211aab25c6520feeeb8d6287f8f6e95807a" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +findup-sync@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.2.1.tgz#e0a90a450075c49466ee513732057514b81e878c" + dependencies: + glob "~4.3.0" + +findup-sync@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" + dependencies: + detect-file "^0.1.0" + is-glob "^2.0.1" + micromatch "^2.3.7" + resolve-dir "^0.1.0" + +findup-sync@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" + dependencies: + glob "~5.0.0" + +fined@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.0.2.tgz#5b28424b760d7598960b7ef8480dff8ad3660e97" + dependencies: + expand-tilde "^1.2.1" + lodash.assignwith "^4.0.7" + lodash.isempty "^4.2.1" + lodash.isplainobject "^4.0.4" + lodash.isstring "^4.0.1" + lodash.pick "^4.2.1" + parse-filepath "^1.0.1" + +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + +flagged-respawn@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" + +flat-cache@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.1.tgz#6c837d6225a7de5659323740b36d5361f71691ff" + dependencies: + circular-json "^0.3.0" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +for-in@^0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" + +for-own@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" + dependencies: + for-in "^0.1.5" + +forever-agent@~0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.5.2.tgz#6d0e09c4921f94a27f63d3b49c5feff1ea4c5130" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.1.4.tgz#91abd788aba9702b1aabfa8bc01031a2ac9e3b12" + dependencies: + async "~0.9.0" + combined-stream "~0.0.4" + mime "~1.2.11" + +form-data@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.2.0.tgz#26f8bc26da6440e299cbdcfb69035c4f77a6e466" + dependencies: + async "~0.9.0" + combined-stream "~0.0.4" + mime-types "~2.0.3" + +form-data@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.11" + +form-data@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +formatio@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.1.1.tgz#5ed3ccd636551097383465d996199100e86161e9" + dependencies: + samsam "~1.1" + +forwarded@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" + +fresh@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" + +from@~0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.3.tgz#ef63ac2062ac32acf7862e0d40b44b896f22f3bc" + +fs-access@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + dependencies: + null-check "^1.0.0" + +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.0.15" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.15.tgz#fa63f590f3c2ad91275e4972a6cea545fb0aae44" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.29" + +fstream-ignore@~1.0.1, fstream-ignore@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +"fstream@>= 0.1.30 < 1": + version "0.1.31" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-0.1.31.tgz#7337f058fbbbbefa8c9f561a28cab0849202c988" + dependencies: + graceful-fs "~3.0.2" + inherits "~2.0.0" + mkdirp "0.5" + rimraf "2" + +fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10, fstream@~1.0.2: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +gauge@~2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.1.tgz#388473894fe8be5e13ffcdb8b93e4ed0616428c7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-color "^0.1.7" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^0.5.1, gaze@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" + dependencies: + globule "~0.1.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +getobject@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" + +getpass@^0.1.1: + version "0.1.6" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob-stream@^3.1.5: + version "3.1.18" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" + dependencies: + glob "^4.3.1" + glob2base "^0.0.12" + minimatch "^2.0.1" + ordered-read-streams "^0.1.0" + through2 "^0.6.1" + unique-stream "^1.0.0" + +glob-watcher@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" + dependencies: + gaze "^0.5.1" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + +glob@3.2.11, glob@^3.2.11: + version "3.2.11" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" + dependencies: + inherits "2" + minimatch "0.3" + +glob@7.0.5, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@~7.0.0: + version "7.0.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.5.tgz#b4202a69099bbb4d292a7c1b95b6682b67ebdc95" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^4.0.5, glob@~4.0.2: + version "4.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.0.6.tgz#695c50bdd4e2fb5c5d370b091f388d3707e291a7" + dependencies: + graceful-fs "^3.0.2" + inherits "2" + minimatch "^1.0.0" + once "^1.3.0" + +glob@^4.3.1, glob@~4.3.0: + version "4.3.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.3.5.tgz#80fbb08ca540f238acce5d11d1e9bc41e75173d3" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@^5.0.14, glob@~5.0.0: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.6: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" + dependencies: + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" + +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + +global-prefix@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.4.tgz#05158db1cde2dd491b455e290eb3ab8bfc45c6e1" + dependencies: + ini "^1.3.4" + is-windows "^0.2.0" + osenv "^0.1.3" + which "^1.2.10" + +globals@^9.2.0: + version "9.14.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globule@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" + dependencies: + glob "~3.1.21" + lodash "~1.0.1" + minimatch "~0.2.11" + +glogg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" + dependencies: + sparkles "^1.0.0" + +got@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/got/-/got-0.3.0.tgz#888ec66ca4bc735ab089dbe959496d0f79485493" + dependencies: + object-assign "^0.3.0" + +graceful-fs@4.X, graceful-fs@^4.1.0, graceful-fs@^4.1.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +graceful-fs@^3.0.0, graceful-fs@^3.0.1, graceful-fs@^3.0.2, graceful-fs@~3.0.0, graceful-fs@~3.0.1, graceful-fs@~3.0.2: + version "3.0.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" + dependencies: + natives "^1.1.0" + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + +graceful-fs@~2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-2.0.3.tgz#7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + +growl@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.7.0.tgz#de2d66136d002e112ba70f3f10c31cf7c350b2da" + +grunt-bump@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/grunt-bump/-/grunt-bump-0.8.0.tgz#d3ffe0cf3cf0b38e09607b78538f42a531eafe55" + dependencies: + semver "^5.1.0" + +grunt-cli@^1.2.0, grunt-cli@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.2.0.tgz#562b119ebb069ddb464ace2845501be97b35b6a8" + dependencies: + findup-sync "~0.3.0" + grunt-known-options "~1.1.0" + nopt "~3.0.6" + resolve "~1.1.0" + +grunt-contrib-clean@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/grunt-contrib-clean/-/grunt-contrib-clean-1.0.0.tgz#6b2ed94117e2c7ffe32ee04578c96fe4625a9b6d" + dependencies: + async "^1.5.2" + rimraf "^2.5.1" + +grunt-contrib-compress@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/grunt-contrib-compress/-/grunt-contrib-compress-1.3.0.tgz#5e5c26a200490823c7f77288afd2d7350d95c63d" + dependencies: + archiver "^1.0.0" + chalk "^1.1.1" + lodash "^4.7.0" + pretty-bytes "^3.0.1" + stream-buffers "^2.1.0" + +grunt-contrib-connect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz#5cf933b91a67386044273c0b2444603cd98879ba" + dependencies: + async "^1.5.2" + connect "^3.4.0" + connect-livereload "^0.5.0" + http2 "^3.3.4" + morgan "^1.6.1" + opn "^4.0.0" + portscanner "^1.0.0" + serve-index "^1.7.1" + serve-static "^1.10.0" + +grunt-contrib-copy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz#7060c6581e904b8ab0d00f076e0a8f6e3e7c3573" + dependencies: + chalk "^1.1.1" + file-sync-cmp "^0.1.0" + +grunt-ddescribe-iit@~0.0.1: + version "0.0.6" + resolved "https://registry.yarnpkg.com/grunt-ddescribe-iit/-/grunt-ddescribe-iit-0.0.6.tgz#af9234448054f52c57410f41a664d63c4fb7ace5" + dependencies: + bluebird "^2.9.9" + win-spawn "^2.0.0" + +grunt-eslint@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/grunt-eslint/-/grunt-eslint-19.0.0.tgz#bb74c379061599cec1f66169def2a89d862d861b" + dependencies: + chalk "^1.0.0" + eslint "^3.0.0" + +grunt-known-options@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.0.tgz#a4274eeb32fa765da5a7a3b1712617ce3b144149" + +grunt-legacy-log-utils@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz#a7b8e2d0fb35b5a50f4af986fc112749ebc96f3d" + dependencies: + chalk "~1.1.1" + lodash "~4.3.0" + +grunt-legacy-log@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz#fb86f1809847bc07dc47843f9ecd6cacb62df2d5" + dependencies: + colors "~1.1.2" + grunt-legacy-log-utils "~1.0.0" + hooker "~0.2.3" + lodash "~3.10.1" + underscore.string "~3.2.3" + +grunt-legacy-util@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz#386aa78dc6ed50986c2b18957265b1b48abb9b86" + dependencies: + async "~1.5.2" + exit "~0.1.1" + getobject "~0.1.0" + hooker "~0.2.3" + lodash "~4.3.0" + underscore.string "~3.2.3" + which "~1.2.1" + +grunt-merge-conflict@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/grunt-merge-conflict/-/grunt-merge-conflict-0.0.2.tgz#7b4f83c810865ece5dca0f3cd474d0208a7d7acc" + +grunt-shell@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/grunt-shell/-/grunt-shell-1.3.1.tgz#5e2beecd05d5d3787fa401028d5733d5d43b9bd1" + dependencies: + chalk "^1.0.0" + npm-run-path "^1.0.0" + object-assign "^4.0.0" + +grunt@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.0.1.tgz#e8778764e944b18f32bb0f10b9078475c9dfb56b" + dependencies: + coffee-script "~1.10.0" + dateformat "~1.0.12" + eventemitter2 "~0.4.13" + exit "~0.1.1" + findup-sync "~0.3.0" + glob "~7.0.0" + grunt-cli "~1.2.0" + grunt-known-options "~1.1.0" + grunt-legacy-log "~1.0.0" + grunt-legacy-util "~1.0.0" + iconv-lite "~0.4.13" + js-yaml "~3.5.2" + minimatch "~3.0.0" + nopt "~3.0.6" + path-is-absolute "~1.0.0" + rimraf "~2.2.8" + +gulp-concat@^2.4.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353" + dependencies: + concat-with-sourcemaps "^1.0.0" + through2 "^2.0.0" + vinyl "^2.0.0" + +gulp-eslint@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/gulp-eslint/-/gulp-eslint-3.0.1.tgz#04e57e3e18c6974267c12cf6855dc717d4a313bd" + dependencies: + bufferstreams "^1.1.1" + eslint "^3.0.0" + gulp-util "^3.0.6" + +gulp-foreach@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/gulp-foreach/-/gulp-foreach-0.0.1.tgz#d3ff554fcdcdbbebdc4aa4fc5a41441d3c6f7567" + dependencies: + gulp-util "~2.2.14" + through "~2.3.4" + +gulp-rename@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" + +gulp-sourcemaps@^1.2.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.9.1.tgz#80ac2d3845d13e68dd962524d8a967a440b0b753" + dependencies: + acorn "4.X" + convert-source-map "1.X" + css "2.X" + debug-fabulous "0.0.X" + detect-newline "2.X" + graceful-fs "4.X" + source-map "0.X" + strip-bom "2.X" + through2 "2.X" + vinyl "1.X" + +gulp-uglify@^1.0.1: + version "1.5.4" + resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-1.5.4.tgz#524788d87666d09f9d0c21fb2177f90039a658c9" + dependencies: + deap "^1.0.0" + fancy-log "^1.0.0" + gulp-util "^3.0.0" + isobject "^2.0.0" + through2 "^2.0.0" + uglify-js "2.6.4" + uglify-save-license "^0.4.1" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-util@^3.0.0, gulp-util@^3.0.1, gulp-util@^3.0.6: + version "3.0.7" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz#78925c4b8f8b49005ac01a011c557e6218941cbb" + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^1.0.11" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulp-util@~2.2.14: + version "2.2.20" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-2.2.20.tgz#d7146e5728910bd8f047a6b0b1e549bc22dbd64c" + dependencies: + chalk "^0.5.0" + dateformat "^1.0.7-1.2.3" + lodash._reinterpolate "^2.4.1" + lodash.template "^2.4.1" + minimist "^0.2.0" + multipipe "^0.1.0" + through2 "^0.5.0" + vinyl "^0.2.1" + +gulp@~3.8.0: + version "3.8.11" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.8.11.tgz#d557e0a7283eb4136491969b0497767972f1d28a" + dependencies: + archy "^1.0.0" + chalk "^0.5.0" + deprecated "^0.0.1" + gulp-util "^3.0.0" + interpret "^0.3.2" + liftoff "^2.0.1" + minimist "^1.1.0" + orchestrator "^0.3.0" + pretty-hrtime "^0.2.0" + semver "^4.1.0" + tildify "^1.0.0" + v8flags "^2.0.2" + vinyl-fs "^0.3.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + +handlebars@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-2.0.0.tgz#6e9d7f8514a3467fa5e9f82cc158ecfc1d5ac76f" + dependencies: + optimist "~0.3" + optionalDependencies: + uglify-js "~2.3" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +has-ansi@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" + dependencies: + ansi-regex "^0.2.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-binary@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.6.tgz#25326f39cfa4f616ad8787894e3af2cfbc7b6e10" + dependencies: + isarray "0.0.1" + +has-binary@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" + dependencies: + isarray "0.0.1" + +has-color@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + dependencies: + sparkles "^1.0.0" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +hash.js@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" + dependencies: + inherits "^2.0.1" + +hawk@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz#87cd491f9b46e4e2aeaca335416766885d2d1ed9" + dependencies: + boom "0.4.x" + cryptiles "0.2.x" + hoek "0.9.x" + sntp "0.2.x" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +header-case@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.0.tgz#d9e335909505d56051ec16a0106821889e910781" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.3" + +hoek@0.9.x: + version "0.9.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-0.9.1.tgz#3d322462badf07716ea7eb85baf88079cddce505" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hooker@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" + +hosted-git-info@^2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" + +htmlparser2@^3.7.3, htmlparser2@~3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.7.3.tgz#6a64c77637c08c6f30ec2a8157a53333be7cb05e" + dependencies: + domelementtype "1" + domhandler "2.2" + domutils "1.5" + entities "1.0" + readable-stream "1.1" + +http-browserify@^1.4.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.7.0.tgz#33795ade72df88acfbfd36773cefeda764735b20" + dependencies: + Base64 "~0.2.0" + inherits "~2.0.1" + +http-errors@~1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" + dependencies: + inherits "2.0.3" + setprototypeof "1.0.2" + statuses ">= 1.3.1 < 2" + +http-proxy@^1.13.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + +http-signature@~0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-0.10.1.tgz#4fbdac132559aa8323121e540779c0a012b27e66" + dependencies: + asn1 "0.1.11" + assert-plus "^0.1.5" + ctype "0.5.3" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http2@^3.3.4: + version "3.3.6" + resolved "https://registry.yarnpkg.com/http2/-/http2-3.3.6.tgz#7df06227e02b5b5a5841deea08239b3198d04bec" + +https-browserify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" + +https-proxy-agent@1.0.0, https-proxy-agent@^1.0.0, https-proxy-agent@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" + dependencies: + agent-base "2" + debug "2" + extend "3" + +iconv-lite@0.4.13: + version "0.4.13" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" + +iconv-lite@~0.4.13: + version "0.4.15" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" + +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +ignore@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.0.tgz#8d88f03c3002a0ac52114db25d2c673b0bf1e435" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@^1.2.0, ini@^1.3.4, ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +inline-source-map@~0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.3.1.tgz#a528b514e689fce90db3089e870d92f527acb5eb" + dependencies: + source-map "~0.3.0" + +inline-source-map@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.5.0.tgz#4a4c5dd8e4fb5e9b3cda60c822dfadcaee66e0af" + dependencies: + source-map "~0.4.0" + +inquirer@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.7.1.tgz#b8acf140165bd581862ed1198fb6d26430091fac" + dependencies: + chalk "^0.5.0" + cli-color "~0.3.2" + figures "^1.3.2" + lodash "~2.4.1" + mute-stream "0.0.4" + readline2 "~0.1.0" + rx "^2.2.27" + through "~2.3.4" + +inquirer@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.1.2.tgz#ac3ba5f06b8e7291abd9f22912c03f09cfe2dd1f" + dependencies: + ansi-escapes "^1.1.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + external-editor "^1.0.1" + figures "^1.3.5" + lodash "^4.3.0" + mute-stream "0.0.6" + pinkie-promise "^2.0.0" + run-async "^2.2.0" + rx "^4.1.0" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +inquirer@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" + dependencies: + ansi-escapes "^1.1.0" + ansi-regex "^2.0.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + figures "^1.3.5" + lodash "^4.3.0" + readline2 "^1.0.1" + run-async "^0.1.0" + rx-lite "^3.1.2" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +inquirer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.6.0.tgz#614d7bb3e48f9e6a8028e94a0c38f23ef29823d3" + dependencies: + chalk "^0.5.0" + cli-color "~0.3.2" + lodash "~2.4.1" + mute-stream "0.0.4" + readline2 "~0.1.0" + rx "^2.2.27" + through "~2.3.4" + +insert-module-globals@^6.1.0: + version "6.6.3" + resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-6.6.3.tgz#20638e29a30f9ed1ca2e3a825fbc2cba5246ddfc" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.6.1" + concat-stream "~1.4.1" + is-buffer "^1.1.0" + lexical-scope "^1.2.0" + process "~0.11.0" + through2 "^1.0.0" + xtend "^4.0.0" + +insight@0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/insight/-/insight-0.4.3.tgz#76d653c5c0d8048b03cdba6385a6948f74614af0" + dependencies: + async "^0.9.0" + chalk "^0.5.1" + configstore "^0.3.1" + inquirer "^0.6.0" + lodash.debounce "^2.4.1" + object-assign "^1.0.0" + os-name "^1.0.0" + request "^2.40.0" + tough-cookie "^0.12.1" + +interpret@^0.3.2: + version "0.3.10" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.3.10.tgz#088c25de731c6c5b112a90f0071cfaf459e5a7bb" + +interpret@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" + +intersect@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/intersect/-/intersect-0.0.3.tgz#c1a4a5e5eac6ede4af7504cc07e0ada7bc9f4920" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +ipaddr.js@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.1.1.tgz#c791d95f52b29c1247d5df80ada39b8a73647230" + +is-absolute@^0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" + dependencies: + is-relative "^0.2.1" + is-windows "^0.2.0" + +is-array@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-array/-/is-array-1.0.1.tgz#e9850cc2cc860c3bc0977e84ccf0dd464584279a" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.0.2, is-buffer@^1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-lower-case@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" + dependencies: + lower-case "^1.1.0" + +is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-relative@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" + dependencies: + is-unc-path "^0.1.1" + +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + +is-root@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-1.0.0.tgz#07b6c233bc394cd9d02ba15c966bd6660d6342d5" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-unc-path@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.1.tgz#ab2533d77ad733561124c3dc0f5cd8b90054c86b" + dependencies: + unc-path-regex "^0.1.0" + +is-upper-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" + dependencies: + upper-case "^1.1.0" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + +isarray@0.0.1, isarray@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isbinaryfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.1.tgz#6e99573675372e841a0520c036b41513d783e79e" + +isexe@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@0.1.x, isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jade@0.26.3: + version "0.26.3" + resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" + dependencies: + commander "0.6.1" + mkdirp "0.3.0" + +jasmine-core@^2.4.0, jasmine-core@~2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297" + +jasmine-core@~2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.4.1.tgz#6f83ab3a0f16951722ce07d206c773d57cc838be" + +jasmine-growl-reporter@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/jasmine-growl-reporter/-/jasmine-growl-reporter-0.2.1.tgz#d5f0a37b92f6a83fd5c6482b809495c90a8b55fe" + dependencies: + growl "~1.7.0" + +jasmine-node@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/jasmine-node/-/jasmine-node-2.0.0.tgz#81751a72325f5497490b14181a55087f1b0371ff" + dependencies: + coffee-script "~1.7.1" + gaze "~0.5.1" + jasmine-growl-reporter "~0.2.0" + minimist "0.0.8" + mkdirp "~0.3.5" + underscore "~1.6.0" + walkdir "~0.0.7" + +jasmine-reporters@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jasmine-reporters/-/jasmine-reporters-2.2.0.tgz#e8c7916df3e4283bc8829a3fc21140eb322f8a5b" + dependencies: + jasmine "^2.4.1" + mkdirp "^0.5.1" + xmldom "^0.1.22" + +jasmine@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.4.1.tgz#9016dda453213d27ac6d43dc4ea97315a189085e" + dependencies: + exit "^0.1.2" + glob "^3.2.11" + jasmine-core "~2.4.0" + +jasmine@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.5.2.tgz#6283cef7085c095cc25d651e954df004f7e3e421" + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.5.2" + +jasminewd2@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-0.0.10.tgz#94f48ae2bc946cad643035467b4bb7ea9c1075ef" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +js-tokens@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" + +js-yaml@^3.1.0, js-yaml@^3.5.1, js-yaml@~3.5.2: + version "3.5.5" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.5.5.tgz#0377c38017cabc7322b0d1fbcd25a491641f2fbe" + dependencies: + argparse "^1.0.2" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stable-stringify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.0, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.2.6.tgz#f6efc93c06a04de9aec53053df2559bb19e2038b" + +json3@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonparse@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz#330542ad3f0a654665b778f3eb2d9a9fa507ac64" + +jsonparse@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.2.0.tgz#5c0c5685107160e72fe7489bddea0b44c2bc67bd" + +jsonpointer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5" + +jsprim@^1.2.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" + dependencies: + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +junk@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/junk/-/junk-1.0.3.tgz#87be63488649cbdca6f53ab39bec9ccd2347f592" + +karma-browserstack-launcher@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/karma-browserstack-launcher/-/karma-browserstack-launcher-1.1.1.tgz#e15d2fa28636c0ae93fe720583eb19e8648c11fc" + dependencies: + browserstack "1.5.0" + browserstacktunnel-wrapper "~1.4.2" + q "~1.4.1" + +karma-chrome-launcher@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-1.0.1.tgz#be5ae7c4264f9a0a2e22e3d984beb325ad92c8cb" + dependencies: + fs-access "^1.0.0" + which "^1.2.1" + +karma-firefox-launcher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.0.0.tgz#e08af3ce42e39860c2952ea7b7eaa64d63508bdc" + +karma-jasmine@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.0.2.tgz#c0b3ab327bf207db60e17fa27db37cfdef5d8e6c" + +karma-junit-reporter@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-junit-reporter/-/karma-junit-reporter-1.1.0.tgz#12f8ff82050607a1d4f1192f0211efde4b59ca3e" + dependencies: + path-is-absolute "^1.0.0" + xmlbuilder "8.2.2" + +karma-ng-scenario@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/karma-ng-scenario/-/karma-ng-scenario-1.0.0.tgz#03315b27ee866f40443cf88bfebf7963f86543e1" + +karma-sauce-launcher@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-1.1.0.tgz#3d083cf5659d6736ab97bcee5d8acd86ad522212" + dependencies: + q "^1.4.1" + sauce-connect-launcher "^0.17.0" + saucelabs "^1.3.0" + wd "^1.0.0" + +karma-script-launcher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/karma-script-launcher/-/karma-script-launcher-1.0.0.tgz#cd017c4de5ef09e5a9da793276176108dd4b542d" + +karma@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.3.0.tgz#b2b94e8f499fadd0069d54f9aef4a4d48ec5cc1f" + dependencies: + bluebird "^3.3.0" + body-parser "^1.12.4" + chokidar "^1.4.1" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.3.5" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + glob "^7.0.3" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^3.8.0" + log4js "^0.6.31" + mime "^1.3.4" + minimatch "^3.0.0" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.3.3" + socket.io "1.4.7" + source-map "^0.5.3" + tmp "0.0.28" + useragent "^2.1.9" + +kind-of@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74" + dependencies: + is-buffer "^1.0.2" + +labeled-stream-splicer@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-1.0.2.tgz#4615331537784981e8fd264e1f3a434c4e0ddd65" + dependencies: + inherits "^2.0.1" + isarray "~0.0.1" + stream-splicer "^1.1.0" + +latest-version@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-0.2.0.tgz#adaf898d5f22380d3f9c45386efdff0a1b5b7501" + dependencies: + package-json "^0.2.0" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lazy-debug-legacy@0.0.X: + version "0.0.1" + resolved "https://registry.yarnpkg.com/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz#537716c0776e4cf79e3ed1b621f7658c2911b1b1" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lexical-scope@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4" + dependencies: + astw "^2.0.0" + +liftoff@^2.0.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" + dependencies: + extend "^3.0.0" + findup-sync "^0.4.2" + fined "^1.0.1" + flagged-respawn "^0.3.2" + lodash.isplainobject "^4.0.4" + lodash.isstring "^4.0.1" + lodash.mapvalues "^4.4.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +load-grunt-tasks@^3.5.0: + version "3.5.2" + resolved "https://registry.yarnpkg.com/load-grunt-tasks/-/load-grunt-tasks-3.5.2.tgz#0728561180fd20ff8a6927505852fc58aaea0c88" + dependencies: + arrify "^1.0.0" + multimatch "^2.0.0" + pkg-up "^1.0.0" + resolve-pkg "^0.1.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +lockfile@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.2.tgz#97e1990174f696cbe0a3acd58a43b84aa30c7c83" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + +lodash._escapehtmlchar@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz#df67c3bb6b7e8e1e831ab48bfa0795b92afe899d" + dependencies: + lodash._htmlescapes "~2.4.1" + +lodash._escapestringchar@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz#ecfe22618a2ade50bfeea43937e51df66f0edb72" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._htmlescapes@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz#32d14bf0844b6de6f8b62a051b4f67c228b624cb" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._isnative@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz#3ea6404b784a7be836c7b57580e1cdf79b14832c" + +lodash._objecttypes@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + +lodash._reinterpolate@^2.4.1, lodash._reinterpolate@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz#4f1227aa5a8711fc632f5b07a1f4607aab8b3222" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._reunescapedhtml@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz#747c4fc40103eb3bb8a0976e571f7a2659e93ba7" + dependencies: + lodash._htmlescapes "~2.4.1" + lodash.keys "~2.4.1" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash._shimkeys@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" + dependencies: + lodash._objecttypes "~2.4.1" + +lodash.assignwith@^4.0.7: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz#127a97f02adc41751a954d24b0de17e100e038eb" + +lodash.debounce@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-2.4.1.tgz#d8cead246ec4b926e8b85678fc396bfeba8cc6fc" + dependencies: + lodash.isfunction "~2.4.1" + lodash.isobject "~2.4.1" + lodash.now "~2.4.1" + +lodash.defaults@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.4.1.tgz#a7e8885f05e68851144b6e12a8f3678026bc4c54" + dependencies: + lodash._objecttypes "~2.4.1" + lodash.keys "~2.4.1" + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + dependencies: + lodash._root "^3.0.0" + +lodash.escape@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-2.4.1.tgz#2ce12c5e084db0a57dda5e5d1eeeb9f5d175a3b4" + dependencies: + lodash._escapehtmlchar "~2.4.1" + lodash._reunescapedhtml "~2.4.1" + lodash.keys "~2.4.1" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.isempty@^4.2.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" + +lodash.isfunction@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz#2cfd575c73e498ab57e319b77fa02adef13a94d1" + +lodash.isobject@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz#5a2e47fe69953f1ee631a7eba1fe64d2d06558f5" + dependencies: + lodash._objecttypes "~2.4.1" + +lodash.isplainobject@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.keys@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz#48dea46df8ff7632b10d706b8acb26591e2b3727" + dependencies: + lodash._isnative "~2.4.1" + lodash._shimkeys "~2.4.1" + lodash.isobject "~2.4.1" + +lodash.map@^4.5.1: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + +lodash.mapvalues@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + +lodash.memoize@~3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" + +lodash.now@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.now/-/lodash.now-2.4.1.tgz#6872156500525185faf96785bb7fe7fe15b562c6" + dependencies: + lodash._isnative "~2.4.1" + +lodash.pick@^4.2.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.template@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-2.4.1.tgz#9e611007edf629129a974ab3c48b817b3e1cf20d" + dependencies: + lodash._escapestringchar "~2.4.1" + lodash._reinterpolate "~2.4.1" + lodash.defaults "~2.4.1" + lodash.escape "~2.4.1" + lodash.keys "~2.4.1" + lodash.templatesettings "~2.4.1" + lodash.values "~2.4.1" + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash.templatesettings@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz#ea76c75d11eb86d4dbe89a83893bb861929ac699" + dependencies: + lodash._reinterpolate "~2.4.1" + lodash.escape "~2.4.1" + +lodash.values@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz#abf514436b3cb705001627978cbcf30b1280eea4" + dependencies: + lodash.keys "~2.4.1" + +lodash@3.10.1, lodash@^3.10.1, lodash@^3.8.0, lodash@~3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@4.15.0, lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.7.0, lodash@^4.8.0: + version "4.15.0" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.15.0.tgz#3162391d8f0140aa22cf8f6b3c34d6b7f63d3aa9" + +lodash@4.16.2: + version "4.16.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.2.tgz#3e626db827048a699281a8a125226326cfc0e652" + +lodash@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" + +lodash@~2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" + +lodash@~4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.3.0.tgz#efd9c4a6ec53f3b05412429915c3e4824e4d25a4" + +log4js@^0.6.27, log4js@^0.6.31: + version "0.6.38" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" + dependencies: + readable-stream "~1.0.2" + semver "~4.3.3" + +lolex@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case-first@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" + dependencies: + lower-case "^1.1.2" + +lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.3.tgz#c92393d976793eee5ba4edb583cf8eae35bd9bfb" + +lru-cache@2, lru-cache@~2.5.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.5.2.tgz#1fddad938aae1263ce138680be1b3f591c0ab41c" + +lru-cache@2.2.x: + version "2.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" + +lru-cache@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +lru-cache@~2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.3.1.tgz#b3adf6b3d856e954e2c390e6cef22081245a53d6" + +lru-queue@0.1: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + dependencies: + es5-ext "~0.10.2" + +map-cache@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + +marked@^0.3.2, marked@~0.3.0: + version "0.3.6" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" + +"match-stream@>= 0.0.2 < 1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/match-stream/-/match-stream-0.0.2.tgz#99eb050093b34dffade421b9ac0b410a9cfa17cf" + dependencies: + buffers "~0.1.1" + readable-stream "~1.0.0" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +memoizee@~0.3.8: + version "0.3.10" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.3.10.tgz#4eca0d8aed39ec9d017f4c5c2f2f6432f42e5c8f" + dependencies: + d "~0.1.1" + es5-ext "~0.10.11" + es6-weak-map "~0.1.4" + event-emitter "~0.3.4" + lru-queue "0.1" + next-tick "~0.2.2" + timers-ext "0.1" + +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +merge@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.1.5, micromatch@^2.3.7: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +miller-rabin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@~1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz#3d0c63180f458eb10d325aaa37d7c58ae312e9d7" + +mime-db@~1.25.0: + version "1.25.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392" + +mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7: + version "2.1.13" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88" + dependencies: + mime-db "~1.25.0" + +mime-types@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz#995ae1392ab8affcbfcb2641dd054e943c0d5dce" + +mime-types@~2.0.3, mime-types@~2.0.4: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz#310e159db23e077f8bb22b748dabfa4957140aa6" + dependencies: + mime-db "~1.12.0" + +mime@1.3.4, mime@^1.2.11, mime@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + +mime@~1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" + +mimeparse@^0.1.4, mimeparse@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/mimeparse/-/mimeparse-0.1.4.tgz#dafb02752370fd226093ae3152c271af01ac254a" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimatch@0.3: + version "0.3.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@~3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimatch@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-1.0.0.tgz#e0dd2120b49e1b724ce8d714c520822a9438576d" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimatch@~0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@0.0.8, minimist@~0.0.1: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minimist@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.0.tgz#4dffe525dae2b864c66c2e23c6271d7afdecefce" + +mkdirp@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" + +mkdirp@0.5, mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mkdirp@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" + dependencies: + minimist "0.0.8" + +mkdirp@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" + +mkpath@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz#7554a6f8d871834cc97b5462b122c4c124d6de91" + +mocha@^2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" + dependencies: + commander "2.3.0" + debug "2.2.0" + diff "1.4.0" + escape-string-regexp "1.0.2" + glob "3.2.11" + growl "1.9.2" + jade "0.26.3" + mkdirp "0.5.1" + supports-color "1.2.0" + to-iso-string "0.0.2" + +module-deps@^3.6.3: + version "3.9.1" + resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-3.9.1.tgz#ea75caf9199090d25b0d5512b5acacb96e7f87f3" + dependencies: + JSONStream "^1.0.3" + browser-resolve "^1.7.0" + concat-stream "~1.4.5" + defined "^1.0.0" + detective "^4.0.0" + duplexer2 "0.0.2" + inherits "^2.0.1" + parents "^1.0.0" + readable-stream "^1.1.13" + resolve "^1.1.3" + stream-combiner2 "~1.0.0" + subarg "^1.0.0" + through2 "^1.0.0" + xtend "^4.0.0" + +moment@^2.11.2, moment@^2.8.4: + version "2.17.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.17.0.tgz#a4c292e02aac5ddefb29a6eed24f51938dd3b74f" + +morgan@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.7.0.tgz#eb10ca8e50d1abe0f8d3dad5c0201d052d981c62" + dependencies: + basic-auth "~1.0.3" + debug "~2.2.0" + depd "~1.1.0" + on-finished "~2.3.0" + on-headers "~1.0.1" + +mout@~0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/mout/-/mout-0.9.1.tgz#84f0f3fd6acc7317f63de2affdcc0cee009b0477" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +multimatch@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +multipipe@^0.1.0, multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" + +mute-stream@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.4.tgz#a9219960a6d5d5d046597aee51252c6655f7177e" + +mute-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" + +mute-stream@0.0.6, mute-stream@~0.0.4: + version "0.0.6" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" + +nan@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" + +natives@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +negotiator@0.4.9: + version "0.4.9" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.4.9.tgz#92e46b6db53c7e421ed64a2bc94f08be7630df3f" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +next-tick@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz#75da4a927ee5887e39065880065b7336413b310d" + +no-case@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.0.tgz#ca2825ccb76b18e6f79d573dcfbf1eace33dd164" + dependencies: + lower-case "^1.1.1" + +node-html-encoder@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/node-html-encoder/-/node-html-encoder-0.0.2.tgz#8973618d727da5526a830b47d07c0d803e0a15c6" + +node-pre-gyp@^0.6.29: + version "0.6.32" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5" + dependencies: + mkdirp "~0.5.1" + nopt "~3.0.6" + npmlog "^4.0.1" + rc "~1.1.6" + request "^2.79.0" + rimraf "~2.5.4" + semver "~5.3.0" + tar "~2.2.1" + tar-pack "~3.3.0" + +node-uuid@~1.4.0, node-uuid@~1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" + +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + dependencies: + abbrev "1" + +nopt@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-2.2.1.tgz#2aa09b7d1768487b3b89a9c5aa52335bff0baea7" + dependencies: + abbrev "1" + +nopt@~3.0.0, nopt@~3.0.1, nopt@~3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" + +npm-path@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.2.tgz#6462f098bb38e21e335a8c6f42d21d7b57f098c8" + dependencies: + which "^1.2.10" + +npm-run-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-1.0.0.tgz#f5c32bf595fe81ae927daec52e82f8b000ac3c8f" + dependencies: + path-key "^1.0.0" + +npm-run@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/npm-run/-/npm-run-4.1.0.tgz#a14e0ec854d8e837cc871495eb3644dde8a2f46b" + dependencies: + cross-spawn "^4.0.0" + minimist "^1.2.0" + npm-path "^2.0.2" + npm-which "^3.0.1" + serializerr "^1.0.2" + sync-exec "^0.6.2" + +npm-which@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" + dependencies: + commander "^2.9.0" + npm-path "^2.0.2" + which "^1.2.10" + +npmconf@^2.0.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/npmconf/-/npmconf-2.1.2.tgz#66606a4a736f1e77a059aa071a79c94ab781853a" + dependencies: + config-chain "~1.1.8" + inherits "~2.0.0" + ini "^1.2.0" + mkdirp "^0.5.0" + nopt "~3.0.1" + once "~1.3.0" + osenv "^0.1.0" + semver "2 || 3 || 4" + uid-number "0.0.5" + +npmlog@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.1.tgz#d14f503b4cd79710375553004ba96e6662fbc0b8" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.1" + set-blocking "~2.0.0" + +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +nunjucks-date@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/nunjucks-date/-/nunjucks-date-1.2.0.tgz#187a2821984cfa7c2fba5ad3ed81d2249691a9ff" + dependencies: + moment "^2.8.4" + +nunjucks@^2.4.2, nunjucks@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/nunjucks/-/nunjucks-2.5.2.tgz#ea7d346e785b8a4874666c3cca9e18c577fba22c" + dependencies: + asap "^2.0.3" + chokidar "^1.6.0" + yargs "^3.32.0" + +oauth-sign@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.4.0.tgz#f22956f31ea7151a821e5f2fb32c113cad8b9f69" + +oauth-sign@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.5.0.tgz#d767f5169325620eab2e087ef0c472e773db6461" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@4.1.0, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object-assign@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-0.3.1.tgz#060e2a2a27d7c0d77ec77b78f11aa47fd88008d2" + +object-assign@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-1.0.0.tgz#e65dc8766d3b47b4b8307465c8311da030b070a6" + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +once@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.2.0.tgz#de1905c636af874a8fba862d9aabddd1f920461c" + +once@~1.3.0, once@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +opn@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +opn@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/opn/-/opn-1.0.2.tgz#b909643346d00a1abc977a8b96f3ce3c53d5cf5f" + +optimist@^0.6.1, optimist@~0.6.0, optimist@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optimist@~0.3, optimist@~0.3.5: + version "0.3.7" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" + dependencies: + wordwrap "~0.0.2" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + +orchestrator@^0.3.0: + version "0.3.8" + resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" + dependencies: + end-of-stream "~0.1.5" + sequencify "~0.0.7" + stream-consume "~0.1.0" + +ordered-read-streams@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" + +os-browserify@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-name@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-1.0.3.tgz#1b379f64835af7c5a7f498b357cb95215c159edf" + dependencies: + osx-release "^1.0.0" + win-release "^1.0.0" + +os-shim@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.0.3.tgz#cd6ad8ddb290915ad9e22765576025d411f29cb6" + +osenv@0.1.0, osenv@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.0.tgz#61668121eec584955030b9f470b1d2309504bfcb" + +osenv@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.3.tgz#83cf05c6d6458fc4d5ac6362ea325d92f2754217" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +osx-release@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/osx-release/-/osx-release-1.1.0.tgz#f217911a28136949af1bf9308b241e2737d3cd6c" + dependencies: + minimist "^1.1.0" + +"over@>= 0.0.5 < 1": + version "0.0.5" + resolved "https://registry.yarnpkg.com/over/-/over-0.0.5.tgz#f29852e70fd7e25f360e013a8ec44c82aedb5708" + +p-throttler@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/p-throttler/-/p-throttler-0.1.0.tgz#1b16907942c333e6f1ddeabcb3479204b8c417c4" + dependencies: + q "~0.9.2" + +package-json@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-0.2.0.tgz#0316e177b8eb149985d34f706b4a5543b274bec5" + dependencies: + got "^0.3.0" + registry-url "^0.1.0" + +pad-right@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/pad-right/-/pad-right-0.2.2.tgz#6fbc924045d244f2a2a244503060d3bfc6009774" + dependencies: + repeat-string "^1.5.2" + +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +param-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a" + dependencies: + no-case "^2.2.0" + +parents@^1.0.0, parents@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" + dependencies: + path-platform "~0.11.15" + +parents@~0.0.1: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parents/-/parents-0.0.3.tgz#fa212f024d9fa6318dbb6b4ce676c8be493b9c43" + dependencies: + path-platform "^0.0.1" + +parse-asn1@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-filepath@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" + dependencies: + is-absolute "^0.2.3" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parsejson@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.1.tgz#9b10c6c0d825ab589e685153826de0a3ba278bcc" + dependencies: + better-assert "~1.0.0" + +parseqs@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.2.tgz#9dfe70b2cddac388bde4f35b1f240fa58adbe6c7" + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.4.tgz#806582a39887e1ea18dd5e2fe0e01902268e9350" + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" + +pascal-case@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.0.tgz#39c248bde5a8dc02d5160696bdb01e044d016ee1" + dependencies: + camel-case "^3.0.0" + upper-case-first "^1.1.0" + +path-browserify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.0.tgz#5ac491de642936e5dfe0e18d16c461b8be8cf073" + dependencies: + no-case "^2.2.0" + +path-exists@2.1.0, path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0, path-is-absolute@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af" + +path-platform@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.0.1.tgz#b5585d7c3c463d89aa0060d86611cf1afd617e2a" + +path-platform@~0.11.15: + version "0.11.15" + resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + dependencies: + path-root-regex "^0.1.0" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path@^0.12.7: + version "0.12.7" + resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" + dependencies: + process "^0.11.1" + util "^0.10.3" + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + dependencies: + through "~2.3" + +pbkdf2@^3.0.3: + version "3.0.9" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" + dependencies: + create-hmac "^1.1.2" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-up@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26" + dependencies: + find-up "^1.0.0" + +pluralize@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" + +portscanner@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-1.2.0.tgz#b14bbda257d14c310fa9cc09682af02d40961802" + dependencies: + async "1.5.2" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-bytes@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" + dependencies: + number-is-nan "^1.0.0" + +pretty-hrtime@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-0.2.2.tgz#d4fd88351e3a4741f8173af7d6a4b846f9895c00" + +process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process@^0.11.1, process@~0.11.0: + version "0.11.9" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" + +process@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/process/-/process-0.8.0.tgz#7bbaf7187fe6ded3fd5be0cb6103fba9cacb9798" + +progress@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +promises-aplus-tests@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/promises-aplus-tests/-/promises-aplus-tests-2.1.2.tgz#76b7c5638968720861969cfbcd8795afd274885c" + dependencies: + mocha "^2.5.3" + sinon "^1.10.3" + underscore "~1.8.3" + +promptly@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/promptly/-/promptly-0.2.0.tgz#73ef200fa8329d5d3a8df41798950b8646ca46d9" + dependencies: + read "~1.0.4" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + +protochain@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/protochain/-/protochain-1.0.5.tgz#991c407e99de264aadf8f81504b5e7faf7bfa260" + +protractor@^4.0.10: + version "4.0.11" + resolved "https://registry.yarnpkg.com/protractor/-/protractor-4.0.11.tgz#fc4bf8d75deec8516b600f87ea5b95ecf537d059" + dependencies: + "@types/jasmine" "^2.5.36" + "@types/node" "^6.0.46" + "@types/q" "^0.0.32" + "@types/selenium-webdriver" "~2.53.31" + adm-zip "0.4.7" + chalk "^1.1.3" + glob "^7.0.3" + jasmine "2.4.1" + jasminewd2 "0.0.10" + optimist "~0.6.0" + q "1.4.1" + saucelabs "~1.3.0" + selenium-webdriver "2.53.3" + source-map-support "~0.4.0" + webdriver-manager "^10.2.8" + +proxy-addr@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.2.tgz#b4cc5f22610d9535824c123aef9d3cf73c40ba37" + dependencies: + forwarded "~0.1.0" + ipaddr.js "1.1.1" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +"pullstream@>= 0.4.1 < 1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/pullstream/-/pullstream-0.4.1.tgz#d6fb3bf5aed697e831150eb1002c25a3f8ae1314" + dependencies: + over ">= 0.0.5 < 1" + readable-stream "~1.0.31" + setimmediate ">= 1.0.2 < 2" + slice-stream ">= 1.0.0 < 2" + +pump@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/pump/-/pump-0.3.5.tgz#ae5ff8c1f93ed87adc6530a97565b126f585454b" + dependencies: + end-of-stream "~1.0.0" + once "~1.2.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@>=0.2.0, punycode@~1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.2.4.tgz#54008ac972aec74175def9cba6df7fa9d3918740" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q-io@^1.10.9, q-io@~1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/q-io/-/q-io-1.13.2.tgz#eea130d481ddb5e1aa1bc5a66855f7391d06f003" + dependencies: + collections "^0.2.0" + mime "^1.2.11" + mimeparse "^0.1.4" + q "^1.0.1" + qs "^1.2.1" + url2 "^0.0.0" + +q-io@~1.10.6: + version "1.10.9" + resolved "https://registry.yarnpkg.com/q-io/-/q-io-1.10.9.tgz#90473f797398eb1208b7edd468ed1785ad7baacd" + dependencies: + collections "~0.2.0" + mime "~1.2.11" + mimeparse "~0.1.4" + q "~0.9.7" + qs "~0.1.0" + url2 "~0.0.0" + +q@0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/q/-/q-0.8.4.tgz#662b6d97db73e141c96529ce2f10670b65ef01b0" + +q@1.4.1, q@^1.0.1, q@^1.4.1, q@~1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + +q@~0.9.2, q@~0.9.7: + version "0.9.7" + resolved "https://registry.yarnpkg.com/q/-/q-0.9.7.tgz#4de2e6cb3b29088c9e4cbc03bf9d42fb96ce2f75" + +q@~1.0.0, q@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.0.1.tgz#11872aeedee89268110b10a718448ffb10112a14" + +qjobs@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" + +qq@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/qq/-/qq-0.3.5.tgz#80a3018ce9b2969d7c44eb80cc5bc9eb2b04c7cc" + dependencies: + q "0.8.4" + +qs@6.2.0, qs@~6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b" + +qs@^1.2.1, qs@~1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-1.2.2.tgz#19b57ff24dc2a99ce1f8bdf6afcda59f8ef61f88" + +qs@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-0.1.0.tgz#9a0d2d70d01f63d3401ea4b050822601b462ee6b" + +qs@~2.3.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" + +qs@~6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" + +querystring-es3@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +randomatic@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +randombytes@^2.0.0, randombytes@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" + +range-parser@^1.2.0, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@~2.1.7: + version "2.1.7" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz#adfeace2e4fb3098058014d08c072dcc59758774" + dependencies: + bytes "2.4.0" + iconv-lite "0.4.13" + unpipe "1.0.0" + +rc@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~1.0.4" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read@~1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + dependencies: + mute-stream "~0.0.4" + +readable-stream@1.1, "readable-stream@>=1.1.13-1 <1.2.0-0", readable-stream@^1.0.27-1, readable-stream@^1.0.33-1, readable-stream@^1.1.13, readable-stream@^1.1.13-1, readable-stream@~1.1.8, readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.0, readable-stream@~1.0.17, readable-stream@~1.0.2, readable-stream@~1.0.26, readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5: + version "2.2.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readable-stream@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readable-stream@~2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readable-wrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/readable-wrap/-/readable-wrap-1.0.0.tgz#3b5a211c631e12303a54991c806c17e7ae206bff" + dependencies: + readable-stream "^1.1.13-1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +readline2@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + mute-stream "0.0.5" + +readline2@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/readline2/-/readline2-0.1.1.tgz#99443ba6e83b830ef3051bfd7dc241a82728d568" + dependencies: + mute-stream "0.0.4" + strip-ansi "^2.0.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +redeyed@~0.4.0: + version "0.4.4" + resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-0.4.4.tgz#37e990a6f2b21b2a11c2e6a48fd4135698cba97f" + dependencies: + esprima "~1.0.4" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +registry-url@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-0.1.1.tgz#1739427b81b110b302482a1c7cd727ffcc82d5be" + dependencies: + npmconf "^2.0.1" + +remove-trailing-separator@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + +request-progress@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-0.3.0.tgz#bdf2062bfc197c5d492500d44cb3aff7865b492e" + dependencies: + throttleit "~0.0.2" + +request-replay@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/request-replay/-/request-replay-0.2.0.tgz#9b693a5d118b39f5c596ead5ed91a26444057f60" + dependencies: + retry "~0.6.0" + +request@2.75.0: + version "2.75.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + bl "~1.1.2" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.0.0" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.7" + oauth-sign "~0.8.1" + qs "~6.2.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + +request@^2.40.0, request@~2.51.0: + version "2.51.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.51.0.tgz#35d00bbecc012e55f907b1bd9e0dbd577bfef26e" + dependencies: + aws-sign2 "~0.5.0" + bl "~0.9.0" + caseless "~0.8.0" + combined-stream "~0.0.5" + forever-agent "~0.5.0" + form-data "~0.2.0" + hawk "1.1.1" + http-signature "~0.10.0" + json-stringify-safe "~5.0.0" + mime-types "~1.0.1" + node-uuid "~1.4.0" + oauth-sign "~0.5.0" + qs "~2.3.1" + stringstream "~0.0.4" + tough-cookie ">=0.12.0" + tunnel-agent "~0.4.0" + +request@^2.78.0, request@^2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + +request@~2.42.0: + version "2.42.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.42.0.tgz#572bd0148938564040ac7ab148b96423a063304a" + dependencies: + bl "~0.9.0" + caseless "~0.6.0" + forever-agent "~0.5.0" + json-stringify-safe "~5.0.0" + mime-types "~1.0.1" + node-uuid "~1.4.0" + qs "~1.2.0" + tunnel-agent "~0.4.0" + optionalDependencies: + aws-sign2 "~0.5.0" + form-data "~0.1.0" + hawk "1.1.1" + http-signature "~0.10.0" + oauth-sign "~0.4.0" + stringstream "~0.0.4" + tough-cookie ">=0.12.0" + +require-uncached@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requires-port@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + +resolve-pkg@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-0.1.0.tgz#02cc993410e2936962bd97166a1b077da9725531" + dependencies: + resolve-from "^2.0.0" + +resolve-url@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@1.1.7, resolve@^1.1.3, resolve@^1.1.6, resolve@^1.1.7, resolve@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +resolve@~0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.3.1.tgz#34c63447c664c70598d1c9b126fc43b2a24310a4" + +resolve@~0.7.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.7.4.tgz#395a9ef9e873fbfe12bd14408bd91bb936003d69" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +retry@0.6.0, retry@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.6.0.tgz#1c010713279a6fd1e8def28af0c3ff1871caa537" + +rewire@~2.1.0: + version "2.1.5" + resolved "https://registry.yarnpkg.com/rewire/-/rewire-2.1.5.tgz#764599179cae5e393839bf3ad6e0be371ee49d81" + +rfile@~1.0, rfile@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rfile/-/rfile-1.0.0.tgz#59708cf90ca1e74c54c3cfc5c36fdb9810435261" + dependencies: + callsite "~1.0.0" + resolve "~0.3.0" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +right-pad@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/right-pad/-/right-pad-1.0.1.tgz#8ca08c2cbb5b55e74dafa96bf7fd1a27d568c8d0" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@~2.5.1, rimraf@~2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + dependencies: + glob "^7.0.5" + +rimraf@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.3.tgz#e5b51c9437a4c582adb955e9f28cf8d945e272af" + dependencies: + glob "^5.0.14" + +rimraf@~2.2.0, rimraf@~2.2.8: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + +ripemd160@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" + +ruglify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ruglify/-/ruglify-1.0.0.tgz#dc8930e2a9544a274301cc9972574c0d0986b675" + dependencies: + rfile "~1.0" + uglify-js "~2.2" + +run-async@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" + dependencies: + once "^1.3.0" + +run-async@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.2.0.tgz#8783abd83c7bb86f41ee0602fc82404b3bd6e8b9" + dependencies: + is-promise "^2.1.0" + pinkie-promise "^2.0.0" + +rx-lite@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" + +rx@^2.2.27, rx@~2.3.20: + version "2.3.25" + resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.25.tgz#2f7c0550532777b41fa692bb790a7886eaff9731" + +rx@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + +samsam@1.1.2, samsam@~1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" + +sauce-connect-launcher@^0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-0.17.0.tgz#908d9311ecaf17dd9b4647a1435fd4a2072e80ce" + dependencies: + adm-zip "~0.4.3" + async "1.4.0" + https-proxy-agent "~1.0.0" + lodash "3.10.1" + rimraf "2.4.3" + +saucelabs@^1.3.0, saucelabs@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee" + dependencies: + https-proxy-agent "^1.0.0" + +sax@0.6.x: + version "0.6.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9" + +sax@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + +selenium-webdriver@2.53.3, selenium-webdriver@^2.53.1: + version "2.53.3" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085" + dependencies: + adm-zip "0.4.4" + rimraf "^2.2.8" + tmp "0.0.24" + ws "^1.0.1" + xml2js "0.4.4" + +semver-diff@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-0.1.0.tgz#4f6057ca3eba23cc484b51f64aaf88b131a3855d" + dependencies: + semver "^2.2.1" + +semver@*, "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.1.0, semver@^5.2.0, semver@^5.3.0, semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +"semver@2 || 3 || 4", semver@^4.1.0, semver@~4.3.3: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +semver@^2.2.1, semver@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" + +semver@~4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.0.3.tgz#f79c9ba670efccc029d98a5017def64b0ce1644e" + +semver@~5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" + +send@0.14.1: + version "0.14.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.14.1.tgz#a954984325392f51532a7760760e459598c89f7a" + dependencies: + debug "~2.2.0" + depd "~1.1.0" + destroy "~1.0.4" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.7.0" + fresh "0.3.0" + http-errors "~1.5.0" + mime "1.3.4" + ms "0.7.1" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.3.0" + +sentence-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.0.tgz#d592fbed457fd1a59e3af0ee17e99f6fd70d7efd" + dependencies: + no-case "^2.2.0" + upper-case-first "^1.1.2" + +sequencify@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" + +serializerr@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/serializerr/-/serializerr-1.0.3.tgz#12d4c5aa1c3ffb8f6d1dc5f395aa9455569c3f91" + dependencies: + protochain "^1.0.5" + +serve-favicon@^2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.3.2.tgz#dd419e268de012ab72b319d337f2105013f9381f" + dependencies: + etag "~1.7.0" + fresh "0.3.0" + ms "0.7.2" + parseurl "~1.3.1" + +serve-index@^1.7.1, serve-index@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" + dependencies: + accepts "~1.3.3" + batch "0.5.3" + debug "~2.2.0" + escape-html "~1.0.3" + http-errors "~1.5.0" + mime-types "~2.1.11" + parseurl "~1.3.1" + +serve-static@^1.10.0, serve-static@^1.11.1, serve-static@~1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805" + dependencies: + encodeurl "~1.0.1" + escape-html "~1.0.3" + parseurl "~1.3.1" + send "0.14.1" + +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +"setimmediate@>= 1.0.1 < 2", "setimmediate@>= 1.0.2 < 2": + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" + +sha.js@^2.3.6, sha.js@~2.4.4: + version "2.4.8" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" + dependencies: + inherits "^2.0.1" + +shallow-copy@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" + +shasum@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" + dependencies: + json-stable-stringify "~0.0.0" + sha.js "~2.4.4" + +shell-quote@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-0.0.1.tgz#1a41196f3c0333c482323593d6886ecf153dd986" + +shell-quote@~1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.4.3.tgz#952c44e0b1ed9013ef53958179cc643e8777466b" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +shelljs@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.5.3.tgz#c54982b996c76ef0c1e6b59fbdc5825f5b713113" + +shelljs@^0.7.0, shelljs@^0.7.4, shelljs@^0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.5.tgz#2eef7a50a21e1ccf37da00df767ec69e30ad0675" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +signal-exit@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.1.tgz#5a4c884992b63a7acd9badb7894c3ee9cfccad81" + +simple-node-logger@^0.93.12: + version "0.93.12" + resolved "https://registry.yarnpkg.com/simple-node-logger/-/simple-node-logger-0.93.12.tgz#5fe0de11e057d62a04555356c5fb5f73c35a873b" + dependencies: + lodash "^4.5.0" + moment "^2.11.2" + path "^0.12.7" + util "^0.10.3" + +sinon@^1.10.3: + version "1.17.6" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-1.17.6.tgz#a43116db59577c8296356afee13fafc2332e58e1" + dependencies: + formatio "1.1.1" + lolex "1.3.2" + samsam "1.1.2" + util ">=0.10.3 <1" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +"slice-stream@>= 1.0.0 < 2": + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-stream/-/slice-stream-1.0.0.tgz#5b33bd66f013b1a7f86460b03d463dec39ad3ea0" + dependencies: + readable-stream "~1.0.31" + +snake-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" + dependencies: + no-case "^2.2.0" + +sntp@0.2.x: + version "0.2.4" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-0.2.4.tgz#fb885f18b0f3aad189f824862536bceeec750900" + dependencies: + hoek "0.9.x" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +socket.io-adapter@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.4.0.tgz#fb9f82ab1aa65290bf72c3657955b930a991a24f" + dependencies: + debug "2.2.0" + socket.io-parser "2.2.2" + +socket.io-client@1.4.6: + version "1.4.6" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.4.6.tgz#49b0ba537efd15b8297c84016e642e1c7c752c3d" + dependencies: + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "1.2.0" + debug "2.2.0" + engine.io-client "1.6.9" + has-binary "0.1.7" + indexof "0.0.1" + object-component "0.0.3" + parseuri "0.0.4" + socket.io-parser "2.2.6" + to-array "0.1.4" + +socket.io-parser@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.2.tgz#3d7af6b64497e956b7d9fe775f999716027f9417" + dependencies: + benchmark "1.0.0" + component-emitter "1.1.2" + debug "0.7.4" + isarray "0.0.1" + json3 "3.2.6" + +socket.io-parser@2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.6.tgz#38dfd61df50dcf8ab1d9e2091322bf902ba28b99" + dependencies: + benchmark "1.0.0" + component-emitter "1.1.2" + debug "2.2.0" + isarray "0.0.1" + json3 "3.3.2" + +socket.io@1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.4.7.tgz#92b7f7cb88c5797d4daee279fe8075dbe6d3fa1c" + dependencies: + debug "2.2.0" + engine.io "1.6.10" + has-binary "0.1.7" + socket.io-adapter "0.4.0" + socket.io-client "1.4.6" + socket.io-parser "2.2.6" + +sorted-object@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-1.0.0.tgz#5d1f4f9c1fb2cd48965967304e212eb44cfb6d05" + +source-map-resolve@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" + dependencies: + atob "~1.1.0" + resolve-url "~0.2.1" + source-map-url "~0.3.0" + urix "~0.1.0" + +source-map-support@~0.4.0: + version "0.4.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.6.tgz#32552aa64b458392a85eab3b0b5ee61527167aeb" + dependencies: + source-map "^0.5.3" + +source-map-url@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" + +source-map@0.1.34: + version "0.1.34" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz#a7cfe89aec7b1682c3b198d0acfb47d7d090566b" + dependencies: + amdefine ">=0.0.4" + +source-map@0.X, source-map@^0.5.1, source-map@^0.5.3, source-map@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +source-map@^0.1.38, source-map@~0.1.31, source-map@~0.1.7: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.3.0.tgz#8586fb9a5a005e5b501e21cd18b6f21b457ad1f9" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.4.0, source-map@~0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +sparkles@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + +spawn-sync@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" + dependencies: + concat-stream "^1.4.7" + os-shim "^0.1.2" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +spdx-license-list@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdx-license-list/-/spdx-license-list-2.1.0.tgz#3788ffb5c80b24afbe8283934e9e6684ea6a218d" + +split@0.2: + version "0.2.10" + resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57" + dependencies: + through "2" + +sprintf-js@^1.0.3, sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stack-trace@0.0.x: + version "0.0.9" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.9.tgz#a8f6eaeca90674c333e7c43953f275b451510695" + +"statuses@>= 1.3.1 < 2", statuses@~1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +stream-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-1.0.0.tgz#bf9b4abfb42b274d751479e44e0ff2656b6f1193" + dependencies: + inherits "~2.0.1" + readable-stream "^1.0.27-1" + +stream-buffers@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" + +stream-combiner2@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.0.2.tgz#ba72a6b50cbfabfa950fc8bc87604bd01eb60671" + dependencies: + duplexer2 "~0.0.2" + through2 "~0.5.1" + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + +stream-consume@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" + +stream-splicer@^1.1.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-1.3.2.tgz#3c0441be15b9bf4e226275e6dc83964745546661" + dependencies: + indexof "0.0.1" + inherits "^2.0.1" + isarray "~0.0.1" + readable-stream "^1.1.13-1" + readable-wrap "^1.0.0" + through2 "^1.0.0" + +string-length@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-0.1.2.tgz#ab04bb33867ee74beed7fb89bb7f089d392780f2" + dependencies: + strip-ansi "^0.2.1" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^3.0.0" + +string_decoder@~0.10.0, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +stringify-object@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-1.0.1.tgz#86d35e7dbfbce9aa45637d7ecdd7847e159db8a2" + +stringmap@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.2.2.tgz#854d290c981525fc8c397a910b025ae2d54ffc08" + dependencies: + ansi-regex "^0.1.0" + +strip-ansi@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" + dependencies: + ansi-regex "^0.2.1" + +strip-ansi@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-2.0.1.tgz#df62c1aa94ed2f114e1d0f21fd1d50482b79a60e" + dependencies: + ansi-regex "^1.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-bom@2.X, strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" + dependencies: + first-chunk-stream "^1.0.0" + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +strip-json-comments@~1.0.1, strip-json-comments@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" + +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + +supports-color@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" + +supports-color@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +swap-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" + dependencies: + lower-case "^1.1.1" + upper-case "^1.1.1" + +sync-exec@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/sync-exec/-/sync-exec-0.6.2.tgz#717d22cc53f0ce1def5594362f3a89a2ebb91105" + +syntax-error@^1.1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.1.6.tgz#b4549706d386cc1c1dc7c2423f18579b6cade710" + dependencies: + acorn "^2.7.0" + +table@^3.7.8: + version "3.8.3" + resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" + dependencies: + ajv "^4.7.0" + ajv-keywords "^1.0.0" + chalk "^1.1.1" + lodash "^4.0.0" + slice-ansi "0.0.4" + string-width "^2.0.0" + +tar-fs@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-0.5.2.tgz#0f59424be7eeee45232316e302f66d3f6ea6db3e" + dependencies: + mkdirp "^0.5.0" + pump "^0.3.5" + tar-stream "^0.4.6" + +tar-pack@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" + dependencies: + debug "~2.2.0" + fstream "~1.0.10" + fstream-ignore "~1.0.5" + once "~1.3.3" + readable-stream "~2.1.4" + rimraf "~2.5.1" + tar "~2.2.1" + uid-number "~0.0.6" + +tar-stream@^0.4.6: + version "0.4.7" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-0.4.7.tgz#1f1d2ce9ebc7b42765243ca0e8f1b7bfda0aadcd" + dependencies: + bl "^0.9.0" + end-of-stream "^1.0.0" + readable-stream "^1.0.27-1" + xtend "^4.0.0" + +tar-stream@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf" + dependencies: + bl "^1.0.0" + end-of-stream "^1.0.0" + readable-stream "^2.0.0" + xtend "^4.0.0" + +tar@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +throttleit@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" + +through2@2.X, through2@^2.0.0, through2@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through2@^0.5.0, through2@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7" + dependencies: + readable-stream "~1.0.17" + xtend "~3.0.0" + +through2@^0.6.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through2@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-1.1.1.tgz#0847cbc4449f3405574dbdccd9bb841b83ac3545" + dependencies: + readable-stream ">=1.1.13-1 <1.2.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +tildify@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" + dependencies: + os-homedir "^1.0.0" + +time-stamp@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151" + +timers-browserify@^1.0.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" + dependencies: + process "~0.11.0" + +timers-ext@0.1: + version "0.1.0" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.0.tgz#00345a2ca93089d1251322054389d263e27b77e2" + dependencies: + es5-ext "~0.10.2" + next-tick "~0.2.2" + +title-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.0.tgz#c68ccb4232079ded64f94b91b4941ade91391979" + dependencies: + no-case "^2.2.0" + upper-case "^1.0.3" + +tmp@0.0.23: + version "0.0.23" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.23.tgz#de874aa5e974a85f0a32cdfdbd74663cb3bd9c74" + +tmp@0.0.24: + version "0.0.24" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12" + +tmp@0.0.28: + version "0.0.28" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120" + dependencies: + os-tmpdir "~1.0.1" + +tmp@^0.0.29: + version "0.0.29" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" + dependencies: + os-tmpdir "~1.0.1" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + +to-iso-string@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1" + +touch@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/touch/-/touch-0.0.2.tgz#a65a777795e5cbbe1299499bdc42281ffb21b5f4" + dependencies: + nopt "~1.0.10" + +tough-cookie@>=0.12.0, tough-cookie@^0.12.1: + version "0.12.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-0.12.1.tgz#8220c7e21abd5b13d96804254bd5a81ebf2c7d62" + dependencies: + punycode ">=0.2.0" + +tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +traceur@vojtajina/traceur-compiler#add-es6-pure-transformer-dist: + version "0.0.33" + resolved "https://codeload.github.com/vojtajina/traceur-compiler/tar.gz/d90b1e34c799bf61cd1aafdc33db0a554fa9e617" + dependencies: + commander ">=1.1" + q-io "~1.10.6" + semver "*" + +"traverse@>=0.3.0 <0.4": + version "0.3.9" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + +tty-browserify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@~0.4.0, tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.13: + version "1.6.14" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.13" + +typedarray@~0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +typescript@^1.7.5: + version "1.8.10" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-1.8.10.tgz#b475d6e0dff0bf50f296e5ca6ef9fbb5c7320f1e" + +uglify-js@2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.6.4.tgz#65ea2fb3059c9394692f15fed87c2b36c16b9adf" + dependencies: + async "~0.2.6" + source-map "~0.5.1" + uglify-to-browserify "~1.0.0" + yargs "~3.10.0" + +uglify-js@~2.2: + version "2.2.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.2.5.tgz#a6e02a70d839792b9780488b7b8b184c095c99c7" + dependencies: + optimist "~0.3.5" + source-map "~0.1.7" + +uglify-js@~2.3: + version "2.3.6" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a" + dependencies: + async "~0.2.6" + optimist "~0.3.5" + source-map "~0.1.7" + +uglify-js@~2.4.0: + version "2.4.24" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.4.24.tgz#fad5755c1e1577658bb06ff9ab6e548c95bebd6e" + dependencies: + async "~0.2.6" + source-map "0.1.34" + uglify-to-browserify "~1.0.0" + yargs "~3.5.4" + +uglify-save-license@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/uglify-save-license/-/uglify-save-license-0.4.1.tgz#95726c17cc6fd171c3617e3bf4d8d82aa8c4cce1" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.5.tgz#5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e" + +uid-number@~0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + +umd@^2.1.0, umd@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/umd/-/umd-2.1.0.tgz#4a6307b762f17f02d201b5fa154e673396c263cf" + dependencies: + rfile "~1.0.0" + ruglify "~1.0.0" + through "~2.3.4" + uglify-js "~2.4.0" + +unc-path-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + +underscore-contrib@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/underscore-contrib/-/underscore-contrib-0.3.0.tgz#665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7" + dependencies: + underscore "1.6.0" + +underscore.string@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" + dependencies: + sprintf-js "^1.0.3" + util-deprecate "^1.0.2" + +underscore.string@~3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.2.3.tgz#806992633665d5e5fcb4db1fb3a862eb68e9e6da" + +underscore@1.6.0, underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + +underscore@^1.6.0, underscore@~1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" + +unique-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unzip@~0.1.9: + version "0.1.11" + resolved "https://registry.yarnpkg.com/unzip/-/unzip-0.1.11.tgz#89749c63b058d7d90d619f86b98aa1535d3b97f0" + dependencies: + binary ">= 0.3.0 < 1" + fstream ">= 0.1.30 < 1" + match-stream ">= 0.0.2 < 1" + pullstream ">= 0.4.1 < 1" + readable-stream "~1.0.31" + setimmediate ">= 1.0.1 < 2" + +update-notifier@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-0.2.0.tgz#a010c928adcf02090b8e0ce7fef6fb0a7cacc34a" + dependencies: + chalk "^0.5.0" + configstore "^0.3.0" + latest-version "^0.2.0" + semver-diff "^0.1.0" + string-length "^0.1.2" + +upper-case-first@^1.1.0, upper-case-first@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" + dependencies: + upper-case "^1.1.1" + +upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +urix@^0.1.0, urix@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +url2@^0.0.0, url2@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/url2/-/url2-0.0.0.tgz#4eaabd1d5c3ac90d62ab4485c998422865a04b1a" + +url@~0.10.1: + version "0.10.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +user-home@^1.0.0, user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +user-home@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" + dependencies: + os-homedir "^1.0.0" + +useragent@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.9.tgz#4dba2bc4dad1875777ab15de3ff8098b475000b7" + dependencies: + lru-cache "2.2.x" + +utf8@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.0.tgz#0cfec5c8052d44a23e3aaa908104e8075f95dfd5" + +util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, "util@>=0.10.3 <1", util@^0.10.3, util@~0.10.1: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +utils-merge@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" + +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" + +v8flags@^2.0.2: + version "2.0.11" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881" + dependencies: + user-home "^1.1.1" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +validate.js@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/validate.js/-/validate.js-0.9.0.tgz#8acf0144f1520a19835c6cc663f45e0836aa56c8" + +vargs@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/vargs/-/vargs-0.1.0.tgz#6b6184da6520cc3204ce1b407cac26d92609ebff" + +vary@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +vinyl-fs@^0.3.0: + version "0.3.14" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" + dependencies: + defaults "^1.0.0" + glob-stream "^3.1.5" + glob-watcher "^0.0.6" + graceful-fs "^3.0.0" + mkdirp "^0.5.0" + strip-bom "^1.0.0" + through2 "^0.6.1" + vinyl "^0.4.0" + +vinyl-sourcemaps-apply@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + dependencies: + source-map "^0.5.1" + +vinyl@1.X: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.2.3.tgz#bca938209582ec5a49ad538a00fa1f125e513252" + dependencies: + clone-stats "~0.0.1" + +vinyl@^0.4.0: + version "0.4.6" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + dependencies: + clone "^0.2.0" + clone-stats "^0.0.1" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.1.tgz#1c3b4931e7ac4c1efee743f3b91a74c094407bb6" + dependencies: + clone "^1.0.0" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + is-stream "^1.1.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +vm-browserify@~0.0.1: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + +walkdir@~0.0.7: + version "0.0.11" + resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" + +wd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wd/-/wd-1.0.0.tgz#2e509105dee8c9ad20b06d085fd9baf2b5acaf86" + dependencies: + archiver "1.1.0" + async "2.0.1" + lodash "4.16.2" + q "1.4.1" + request "2.75.0" + underscore.string "3.3.4" + vargs "0.1.0" + +weak-map@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.0.tgz#b66e56a9df0bd25a76bbf1b514db129080614a37" + +webdriver-manager@^10.2.8: + version "10.2.8" + resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-10.2.8.tgz#b3b4ef7983271a97b9432c4211c39ff5caecd9dc" + dependencies: + adm-zip "^0.4.7" + chalk "^1.1.1" + del "^2.2.0" + glob "^7.0.3" + ini "^1.3.4" + minimist "^1.2.0" + q "^1.4.1" + request "^2.78.0" + rimraf "^2.5.2" + semver "^5.3.0" + +which@^1.2.1, which@^1.2.10, which@^1.2.9, which@~1.2.1: + version "1.2.12" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" + dependencies: + isexe "^1.1.1" + +which@~1.0.5: + version "1.0.9" + resolved "https://registry.yarnpkg.com/which/-/which-1.0.9.tgz#460c1da0f810103d0321a9b633af9e575e64486f" + +wide-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + dependencies: + string-width "^1.0.1" + +win-release@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" + dependencies: + semver "^5.0.1" + +win-spawn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/win-spawn/-/win-spawn-2.0.0.tgz#397a29130ec98d0aa0bc86baa4621393effd0b07" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + +winston@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/winston/-/winston-2.3.0.tgz#207faaab6fccf3fe493743dd2b03dbafc7ceb78c" + dependencies: + async "~1.0.0" + colors "1.0.x" + cycle "1.0.x" + eyes "0.1.x" + isstream "0.1.x" + stack-trace "0.0.x" + +word-wrap@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.1.0.tgz#356153d61d10610d600785c5d701288e0ae764a6" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrap-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.0.0.tgz#7d30f8f873f9a5bbc3a64dabc8d177e071ae426f" + dependencies: + string-width "^1.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +ws@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.0.1.tgz#7d0b2a2e58cddd819039c29c9de65045e1b310e9" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +ws@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +xdg-basedir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-1.0.1.tgz#14ff8f63a4fdbcb05d5b6eea22b36f3033b9f04e" + dependencies: + user-home "^1.0.0" + +xml2js@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d" + dependencies: + sax "0.6.x" + xmlbuilder ">=1.0.0" + +xmlbuilder@8.2.2, xmlbuilder@>=1.0.0: + version "8.2.2" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773" + +xmldom@^0.1.22: + version "0.1.27" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" + +xmlhttprequest-ssl@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz#3b7741fea4a86675976e908d296d4445961faa67" + +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +xtend@^3.0.0, xtend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4" + +yargs@^3.32.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yargs@~3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.5.4.tgz#d8aff8f665e94c34bd259bdebd1bfaf0ddd35361" + dependencies: + camelcase "^1.0.2" + decamelize "^1.0.0" + window-size "0.1.0" + wordwrap "0.0.2" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + +zip-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.1.0.tgz#2ad479fffc168e05a888e8c348ff6813b3f13733" + dependencies: + archiver-utils "^1.3.0" + compress-commons "^1.1.0" + lodash "^4.8.0" + readable-stream "^2.0.0" From 1dedcdf2bc7f6adaa3977d12d68de1ba0a87150c Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Sat, 26 Nov 2016 21:59:42 +0000 Subject: [PATCH 014/849] docs(*): switch from npm to yarn --- CONTRIBUTING.md | 10 +++-- TRIAGING.md | 2 +- docs/config/index.js | 2 +- docs/config/services/getVersion.js | 2 +- .../templates/ngdoc/api/module.template.html | 4 +- docs/content/guide/component-router.ngdoc | 11 +++--- docs/content/guide/unit-testing.ngdoc | 4 +- docs/content/misc/contribute.ngdoc | 38 ++++++++++--------- src/ngComponentRouter/Router.js | 4 +- src/ngMock/angular-mocks.js | 1 + 10 files changed, 44 insertions(+), 34 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f9fd91be7ca9..83def1e87ae7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -209,7 +209,9 @@ We have very precise rules over how our git commit messages can be formatted. T readable messages** that are easy to follow when looking through the **project history**. But also, we use the git commit messages to **generate the AngularJS change log**. -The commit message formatting can be added using a typical git workflow or through the use of a CLI wizard ([Commitizen](https://github.com/commitizen/cz-cli)). To use the wizard, run `npm run commit` in your terminal after staging your changes in git. +The commit message formatting can be added using a typical git workflow or through the use of a CLI +wizard ([Commitizen](https://github.com/commitizen/cz-cli)). To use the wizard, run `yarn run commit` +in your terminal after staging your changes in git. ### Commit Message Format Each commit message consists of a **header**, a **body** and a **footer**. The header has a special @@ -229,7 +231,8 @@ Any line of the commit message cannot be longer 100 characters! This allows the to read on GitHub as well as in various git tools. ### Revert -If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body it should say: `This reverts commit .`, where the hash is the SHA of the commit being reverted. +If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. +In the body it should say: `This reverts commit .`, where the hash is the SHA of the commit being reverted. ### Type Must be one of the following: @@ -266,7 +269,8 @@ The body should include the motivation for the change and contrast this with pre The footer should contain any information about **Breaking Changes** and is also the place to [reference GitHub issues that this commit closes][closing-issues]. -**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this. +**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. +The rest of the commit message is then used for this. A detailed explanation can be found in this [document][commit-message-format]. diff --git a/TRIAGING.md b/TRIAGING.md index c347e0b9f3ae..99621915b8e4 100644 --- a/TRIAGING.md +++ b/TRIAGING.md @@ -95,7 +95,7 @@ You can mention him in the relevant thread like this: `@btford`. > Thanks for submitting this issue! > Unfortunately, we don't think this functionality belongs in core. -> The good news is that you could easily implement this as a third-party module and publish it on Bower and/or npm. +> The good news is that you could easily implement this as a third-party module and publish it on Bower and/or to the npm repository. ## Assigning Work diff --git a/docs/config/index.js b/docs/config/index.js index 03d02d702e33..ab5e45a3f8dc 100644 --- a/docs/config/index.js +++ b/docs/config/index.js @@ -6,7 +6,7 @@ var packagePath = __dirname; var Package = require('dgeni').Package; // Create and export a new Dgeni package called angularjs. This package depends upon -// the ngdoc, nunjucks, and examples packages defined in the dgeni-packages npm module. +// the ngdoc, nunjucks, and examples packages defined in the dgeni-packages node module. module.exports = new Package('angularjs', [ require('dgeni-packages/ngdoc'), require('dgeni-packages/nunjucks'), diff --git a/docs/config/services/getVersion.js b/docs/config/services/getVersion.js index 473a6fd9349b..3471d716d245 100644 --- a/docs/config/services/getVersion.js +++ b/docs/config/services/getVersion.js @@ -4,7 +4,7 @@ var path = require('canonical-path'); /** * dgService getVersion * @description - * Find the current version of the bower component (or npm module) + * Find the current version of the bower component (or node module) */ module.exports = function getVersion(readFilesProcessor) { var basePath = readFilesProcessor.basePath; diff --git a/docs/config/templates/ngdoc/api/module.template.html b/docs/config/templates/ngdoc/api/module.template.html index f126f1d2f47c..2d4903c6fd86 100644 --- a/docs/config/templates/ngdoc/api/module.template.html +++ b/docs/config/templates/ngdoc/api/module.template.html @@ -21,7 +21,9 @@

Installation

  • NPM e.g. - {% code %}npm install {$ doc.packageName $}@X.Y.Z{% endcode %} + {% code %}npm install --save {$ doc.packageName $}@X.Y.Z{% endcode %} + or + {% code %}yarn add {$ doc.packageName $}@X.Y.Z{% endcode %}
  • Bower e.g. diff --git a/docs/content/guide/component-router.ngdoc b/docs/content/guide/component-router.ngdoc index b11a7fecbc57..8319c81a4abe 100644 --- a/docs/content/guide/component-router.ngdoc +++ b/docs/content/guide/component-router.ngdoc @@ -149,7 +149,7 @@ You can see the complete application running below.

    Component Router

    - + @@ -467,13 +467,12 @@ to display list and detail views of Heroes and Crises. ## Install the libraries -It is easier to use npm to install the **Component Router** module. For this guide we will also install -AngularJS itself via npm: +It is easier to use [yarn](https://yarnpkg.com) to install the **Component Router** module. +For this guide we will also install AngularJS itself via yarn: ```bash -npm init -npm install angular@1.5.x --save -npm install @angular/router@0.2.0 --save +yarn init +yarn add angular@1.5.x @angular/router@0.2.0 ``` diff --git a/docs/content/guide/unit-testing.ngdoc b/docs/content/guide/unit-testing.ngdoc index d5825c394349..82815f5e92a5 100644 --- a/docs/content/guide/unit-testing.ngdoc +++ b/docs/content/guide/unit-testing.ngdoc @@ -59,7 +59,7 @@ Karma to run against a number of browsers, which is useful for being confident t works on all browsers you need to support. Karma is executed on the command line and will display the results of your tests on the command line once they have run in the browser. -Karma is a NodeJS application, and should be installed through npm. Full installation instructions +Karma is a NodeJS application, and should be installed through npm/yarn. Full installation instructions are available on [the Karma website](http://karma-runner.github.io/0.12/intro/installation.html). ### Jasmine @@ -461,7 +461,7 @@ describe("Deep Thought", function() { })); it("has calculated the answer correctly", inject(function(DeepThought) { - // Because of sharedInjector, we have access to the instance of the DeepThought service + // Because of sharedInjector, we have access to the instance of the DeepThought service // that was provided to the beforeAll() hook. Therefore we can test the generated answer expect(DeepThought.answer).toBe(42); })); diff --git a/docs/content/misc/contribute.ngdoc b/docs/content/misc/contribute.ngdoc index f970bb2a5e3d..092e3118c835 100644 --- a/docs/content/misc/contribute.ngdoc +++ b/docs/content/misc/contribute.ngdoc @@ -5,7 +5,7 @@ # Building and Testing AngularJS This document describes how to set up your development environment to build and test AngularJS, and -explains the basic mechanics of using `git`, `node`, `npm`, `grunt`, and `bower`. +explains the basic mechanics of using `git`, `node`, `yarn`, `grunt`, and `bower`. See the [contributing guidelines](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md) for how to contribute your own code to AngularJS. @@ -24,20 +24,27 @@ Before you can build AngularJS, you must install and configure the following dep machine: * [Git](http://git-scm.com/): The [Github Guide to -Installing Git](https://help.github.com/articles/set-up-git) is a good source of information. + Installing Git](https://help.github.com/articles/set-up-git) is a good source of information. -* [Node.js v4.x](http://nodejs.org): We use Node to generate the documentation, run a -development web server, run tests, and generate distributable files. Depending on your system, you can install Node either from source or as a -pre-packaged bundle. (Currently our build does not work properly on Node v5 or greater - please use v4.x.) +* [Node.js v6.x (LTS)](http://nodejs.org): We use Node to generate the documentation, run a + development web server, run tests, and generate distributable files. Depending on your system, + you can install Node either from source or as a pre-packaged bundle. + + We recommend using [nvm](https://github.com/creationix/nvm) to manage and install Node.js, + which makes it easy to change the version of Node.js per project. + +* [Yarn](https://yarnpkg.com): We use Yarn to install our Node.js module dependencies (rather than using npm). + There are detailed installation instructions available at https://yarnpkg.com/en/docs/install. * [Java](http://www.java.com): We minify JavaScript using our -[Closure Tools](https://developers.google.com/closure/) jar. Make sure you have Java (version 7 or higher) installed -and included in your [PATH](http://docs.oracle.com/javase/tutorial/essential/environment/paths.html) variable. + [Closure Tools](https://developers.google.com/closure/) jar. Make sure you have Java (version 7 or higher) + installed and included in your [PATH](http://docs.oracle.com/javase/tutorial/essential/environment/paths.html) + variable. * [Grunt](http://gruntjs.com): We use Grunt as our build system. Install the grunt command-line tool globally with: ```shell - npm install -g grunt-cli + yarn global add grunt-cli ``` ## Forking Angular on Github @@ -62,12 +69,9 @@ cd angular.js git remote add upstream "https://github.com/angular/angular.js.git" # Install node.js dependencies: -npm install - -# Install bower components: -bower install +yarn install -# Build AngularJS: +# Build AngularJS (which will install `bower` dependencies automatically): grunt package ``` @@ -78,11 +82,11 @@ Administrator). This is because `grunt package` creates some symbolic links.
    -**Note:** If you're using Linux, and npm install fails with the message -'Please try running this command again as root/Administrator.', you may need to globally install grunt and bower: +**Note:** If you're using Linux, and `yarn install` fails with the message +'Please try running this command again as root/Administrator.', you may need to globally install `grunt` and `bower`:
      -
    • sudo npm install -g grunt-cli
    • -
    • sudo npm install -g bower
    • +
    • sudo yarn global add grunt-cli
    • +
    • sudo yarn global add bower
    diff --git a/src/ngComponentRouter/Router.js b/src/ngComponentRouter/Router.js index 4d3e5752bbfa..fdece9c5b5c1 100644 --- a/src/ngComponentRouter/Router.js +++ b/src/ngComponentRouter/Router.js @@ -10,11 +10,11 @@ * * @installation * - * Currently, the **Component Router** module must be installed via `npm`, it is not yet available + * Currently, the **Component Router** module must be installed via `npm`/`yarn`, it is not yet available * on Bower or the Google CDN. * * ```bash - * npm install @angular/router@0.2.0 --save + * yarn add @angular/router@0.2.0 * ``` * * Include `angular_1_router.js` in your HTML: diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index 52f9171e07a2..5c0dde5a395f 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -2347,6 +2347,7 @@ angular.mock.$ComponentControllerProvider = ['$compileProvider', * * [Google CDN](https://developers.google.com/speed/libraries/devguide#angularjs) e.g. * `"//ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-mocks.js"` * * [NPM](https://www.npmjs.com/) e.g. `npm install angular-mocks@X.Y.Z` + * * [Yarn](https://yarnpkg.com) e.g. `yarn add angular-mocks@X.Y.Z` * * [Bower](http://bower.io) e.g. `bower install angular-mocks#X.Y.Z` * * [code.angularjs.org](https://code.angularjs.org/) (discouraged for production use) e.g. * `"//code.angularjs.org/X.Y.Z/angular-mocks.js"` From 736b6c7fed79c8305786bbb86d39dd7af891a162 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Fri, 25 Nov 2016 14:54:49 +0000 Subject: [PATCH 015/849] style(*): fix `no-useless-escape` eslint errors --- docs/app/src/docs.js | 2 +- docs/app/src/errors.js | 2 +- docs/app/src/search.js | 2 +- docs/config/processors/keywords.js | 4 +-- docs/content/guide/forms.ngdoc | 2 +- init-repo.sh | 32 ------------------- lib/grunt/utils.js | 2 +- lib/versions/version-info.js | 2 +- check-size.sh => scripts/check-size.sh | 0 .../compare-master-to-stable.js | 2 +- .../validate-commit-msg.js | 2 +- .../validate-commit-msg.spec.js | 0 src/Angular.js | 8 ++--- src/auto/injector.js | 4 +-- src/ng/browser.js | 2 +- src/ng/compile.js | 4 +-- src/ng/directive/input.js | 8 ++--- src/ng/directive/ngOptions.js | 4 +-- src/ng/directive/ngRepeat.js | 2 +- src/ng/filter/filters.js | 4 +-- src/ng/http.js | 2 +- src/ng/location.js | 2 +- src/ngMock/angular-mocks.js | 4 +-- src/ngResource/resource.js | 2 +- src/ngRoute/route.js | 4 +-- test/auto/injectorSpec.js | 4 +-- test/helpers/matchers.js | 2 +- test/helpers/testabilityPatch.js | 4 +-- test/minErrSpec.js | 12 +++---- test/ng/compileSpec.js | 10 +++--- test/ng/directive/booleanAttrsSpec.js | 2 +- test/ng/directive/ngModelSpec.js | 2 +- test/ng/httpBackendSpec.js | 2 +- test/ng/locationSpec.js | 4 +-- test/ng/parseSpec.js | 2 +- test/ng/sceSpecs.js | 4 +-- 36 files changed, 59 insertions(+), 91 deletions(-) delete mode 100755 init-repo.sh rename check-size.sh => scripts/check-size.sh (100%) rename compare-master-to-stable.js => scripts/compare-master-to-stable.js (97%) rename validate-commit-msg.js => scripts/validate-commit-msg.js (97%) rename validate-commit-msg.spec.js => scripts/validate-commit-msg.spec.js (100%) diff --git a/docs/app/src/docs.js b/docs/app/src/docs.js index e2bd613a0f90..33b1be384beb 100644 --- a/docs/app/src/docs.js +++ b/docs/app/src/docs.js @@ -63,7 +63,7 @@ angular.module('DocsController', ['currentVersionData']) $scope.loading = 0; - var INDEX_PATH = /^(\/|\/index[^\.]*.html)$/; + var INDEX_PATH = /^(\/|\/index[^.]*.html)$/; if (!$location.path() || INDEX_PATH.test($location.path())) { $location.path('/api').replace(); } diff --git a/docs/app/src/errors.js b/docs/app/src/errors.js index 2d9f8b5d91e1..3a7746844780 100644 --- a/docs/app/src/errors.js +++ b/docs/app/src/errors.js @@ -3,7 +3,7 @@ angular.module('errors', ['ngSanitize']) .filter('errorLink', ['$sanitize', function($sanitize) { - var LINKY_URL_REGEXP = /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s\.;,\(\)\{\}<>]/g, + var LINKY_URL_REGEXP = /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/g, MAILTO_REGEXP = /^mailto:/, STACK_TRACE_REGEXP = /:\d+:\d+$/; diff --git a/docs/app/src/search.js b/docs/app/src/search.js index 1ca19723441a..1be6614f3846 100644 --- a/docs/app/src/search.js +++ b/docs/app/src/search.js @@ -72,7 +72,7 @@ angular.module('search', []) .controller('Error404SearchCtrl', ['$scope', '$location', 'docsSearch', function($scope, $location, docsSearch) { - docsSearch($location.path().split(/[\/\.:]/).pop()).then(function(results) { + docsSearch($location.path().split(/[/.:]/).pop()).then(function(results) { $scope.results = {}; angular.forEach(results, function(result) { var area = $scope.results[result.area] || []; diff --git a/docs/config/processors/keywords.js b/docs/config/processors/keywords.js index fb47e70add8a..8babc671dc5b 100644 --- a/docs/config/processors/keywords.js +++ b/docs/config/processors/keywords.js @@ -34,7 +34,7 @@ module.exports = function generateKeywordsProcessor(log, readFilesProcessor) { var areasToSearch; // Keywords start with "ng:" or one of $, _ or a letter - var KEYWORD_REGEX = /^((ng:|[\$_a-z])[\w\-_]+)/; + var KEYWORD_REGEX = /^((ng:|[$_a-z])[\w\-_]+)/; // Load up the keywords to ignore, if specified in the config if (this.ignoreWordsFile) { @@ -67,7 +67,7 @@ module.exports = function generateKeywordsProcessor(log, readFilesProcessor) { function extractWords(text, words, keywordMap) { - var tokens = text.toLowerCase().split(/[\.\s,`'"#]+/mg); + var tokens = text.toLowerCase().split(/[.\s,`'"#]+/mg); _.forEach(tokens, function(token) { var match = token.match(KEYWORD_REGEX); if (match) { diff --git a/docs/content/guide/forms.ngdoc b/docs/content/guide/forms.ngdoc index 384f5bdfe7a0..958365f02541 100644 --- a/docs/content/guide/forms.ngdoc +++ b/docs/content/guide/forms.ngdoc @@ -363,7 +363,7 @@ In the following example we create two directives: var app = angular.module('form-example1', []); - var INTEGER_REGEXP = /^\-?\d+$/; + var INTEGER_REGEXP = /^-?\d+$/; app.directive('integer', function() { return { require: 'ngModel', diff --git a/init-repo.sh b/init-repo.sh deleted file mode 100755 index ab7a9d53944e..000000000000 --- a/init-repo.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash -# -# Script to initialize angular repo -# - install required node packages -# - install Karma -# - install git hooks - - -node=`which node 2>&1` -if [ $? -ne 0 ]; then - echo "Please install NodeJS." - echo "http://nodejs.org/" - exit 1 -fi - -npm=`which npm 2>&1` -if [ $? -ne 0 ]; then - echo "Please install NPM." -fi - - -echo "Installing required npm packages..." -npm install - -karma=`which karma 2>&1` -if [ $? -ne 0 ]; then - echo "Installing Karma..." - npm install -g karma -fi - -echo "Installing git hooks..." -ln -sf ../../validate-commit-msg.js .git/hooks/commit-msg diff --git a/lib/grunt/utils.js b/lib/grunt/utils.js index 187bb8383b53..02cdeab97c3b 100644 --- a/lib/grunt/utils.js +++ b/lib/grunt/utils.js @@ -178,7 +178,7 @@ module.exports = { var classPathSep = (process.platform === 'win32') ? ';' : ':'; var minFile = file.replace(/\.js$/, '.min.js'); var mapFile = minFile + '.map'; - var mapFileName = mapFile.match(/[^\/]+$/)[0]; + var mapFileName = mapFile.match(/[^/]+$/)[0]; var errorFileName = file.replace(/\.js$/, '-errors.json'); var versionNumber = grunt.config('NG_VERSION').full; var compilationLevel = (file === 'build/angular-message-format.js') ? diff --git a/lib/versions/version-info.js b/lib/versions/version-info.js index 326141797850..d245afdceb9c 100644 --- a/lib/versions/version-info.js +++ b/lib/versions/version-info.js @@ -35,7 +35,7 @@ var getPackage = function() { * @return {Object} An object containing the github owner and repository name */ var getGitRepoInfo = function() { - var GITURL_REGEX = /^https:\/\/github.com\/([^\/]+)\/(.+).git$/; + var GITURL_REGEX = /^https:\/\/github.com\/([^/]+)\/(.+).git$/; var match = GITURL_REGEX.exec(currentPackage.repository.url); var git = { owner: match[1], diff --git a/check-size.sh b/scripts/check-size.sh similarity index 100% rename from check-size.sh rename to scripts/check-size.sh diff --git a/compare-master-to-stable.js b/scripts/compare-master-to-stable.js similarity index 97% rename from compare-master-to-stable.js rename to scripts/compare-master-to-stable.js index fe80d2d6f931..b2f51cfd409b 100755 --- a/compare-master-to-stable.js +++ b/scripts/compare-master-to-stable.js @@ -144,7 +144,7 @@ then(allInSeries(function(branch) { line = line.split(' '); var sha = line.shift(); var msg = line.join(' '); - return sha + ((/fix\([^\)]+\):/i.test(msg)) ? ' * ' : ' ') + msg; + return sha + ((/fix\([^)]+\):/i.test(msg)) ? ' * ' : ' ') + msg; }); branch.log = log.map(function(line) { return line.substr(41); diff --git a/validate-commit-msg.js b/scripts/validate-commit-msg.js similarity index 97% rename from validate-commit-msg.js rename to scripts/validate-commit-msg.js index d65345b35642..1d7c86aa709b 100755 --- a/validate-commit-msg.js +++ b/scripts/validate-commit-msg.js @@ -16,7 +16,7 @@ var util = require('util'); var MAX_LENGTH = 100; -var PATTERN = /^(?:fixup!\s*)?(\w*)(\(([\w\$\.\*/-]*)\))?: (.*)$/; +var PATTERN = /^(?:fixup!\s*)?(\w*)(\(([\w$.*/-]*)\))?: (.*)$/; var IGNORED = /^WIP:/; var TYPES = { feat: true, diff --git a/validate-commit-msg.spec.js b/scripts/validate-commit-msg.spec.js similarity index 100% rename from validate-commit-msg.spec.js rename to scripts/validate-commit-msg.spec.js diff --git a/src/Angular.js b/src/Angular.js index 97b061eafc00..bdfc100bf0c3 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -710,7 +710,7 @@ function isPromiseLike(obj) { } -var TYPED_ARRAY_REGEXP = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array\]$/; +var TYPED_ARRAY_REGEXP = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/; function isTypedArray(value) { return value && isNumber(value.length) && TYPED_ARRAY_REGEXP.test(toString.call(value)); } @@ -729,7 +729,7 @@ var trim = function(value) { // Prereq: s is a string. var escapeForRegexp = function(s) { return s - .replace(/([-()\[\]{}+?*.$\^|,:#]+>)/)[1]. - replace(/^<([\w\-]+)/, function(match, nodeName) {return '<' + lowercase(nodeName);}); + replace(/^<([\w-]+)/, function(match, nodeName) {return '<' + lowercase(nodeName);}); } catch (e) { return lowercase(elemHtml); } diff --git a/src/auto/injector.js b/src/auto/injector.js index 38d38777ff34..15edc30c7923 100644 --- a/src/auto/injector.js +++ b/src/auto/injector.js @@ -63,8 +63,8 @@ * Implicit module which gets automatically added to each {@link auto.$injector $injector}. */ -var ARROW_ARG = /^([^\(]+?)=>/; -var FN_ARGS = /^[^\(]*\(\s*([^\)]*)\)/m; +var ARROW_ARG = /^([^(]+?)=>/; +var FN_ARGS = /^[^(]*\(\s*([^)]*)\)/m; var FN_ARG_SPLIT = /,/; var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/; var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; diff --git a/src/ng/browser.js b/src/ng/browser.js index 001f09b9c511..e3942170a4d4 100644 --- a/src/ng/browser.js +++ b/src/ng/browser.js @@ -302,7 +302,7 @@ function Browser(window, document, $log, $sniffer) { */ self.baseHref = function() { var href = baseElement.attr('href'); - return href ? href.replace(/^(https?:)?\/\/[^\/]*/, '') : ''; + return href ? href.replace(/^(https?:)?\/\/[^/]*/, '') : ''; }; /** diff --git a/src/ng/compile.js b/src/ng/compile.js index fe1986043ab2..90cedf61146e 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -971,8 +971,8 @@ $CompileProvider.$inject = ['$provide', '$$sanitizeUriProvider']; function $CompileProvider($provide, $$sanitizeUriProvider) { var hasDirectives = {}, Suffix = 'Directive', - COMMENT_DIRECTIVE_REGEXP = /^\s*directive:\s*([\w\-]+)\s+(.*)$/, - CLASS_DIRECTIVE_REGEXP = /(([\w\-]+)(?::([^;]+))?;?)/, + COMMENT_DIRECTIVE_REGEXP = /^\s*directive:\s*([\w-]+)\s+(.*)$/, + CLASS_DIRECTIVE_REGEXP = /(([\w-]+)(?::([^;]+))?;?)/, ALL_OR_NOTHING_ATTRS = makeMap('ngSrc,ngSrcset,src,srcset'), REQUIRE_PREFIX_REGEXP = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/; diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js index 6f21f002b0e1..32dd98dd842e 100644 --- a/src/ng/directive/input.js +++ b/src/ng/directive/input.js @@ -21,11 +21,11 @@ var ISO_DATE_REGEXP = /^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+- // 7. Path // 8. Query // 9. Fragment -// 1111111111111111 222 333333 44444 555555555555555555555555 666 77777777 8888888 999 -var URL_REGEXP = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i; +// 1111111111111111 222 333333 44444 55555555555555555555555 666 77777777 8888888 999 +var URL_REGEXP = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i; // eslint-disable-next-line max-len -var EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/; -var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/; +var EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/; +var NUMBER_REGEXP = /^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/; var DATE_REGEXP = /^(\d{4,})-(\d{2})-(\d{2})$/; var DATETIMELOCAL_REGEXP = /^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/; var WEEK_REGEXP = /^(\d{4,})-W(\d\d)$/; diff --git a/src/ng/directive/ngOptions.js b/src/ng/directive/ngOptions.js index 5b4d15b130ea..8d562082f983 100644 --- a/src/ng/directive/ngOptions.js +++ b/src/ng/directive/ngOptions.js @@ -232,8 +232,8 @@ var ngOptionsMinErr = minErr('ngOptions'); */ /* eslint-disable max-len */ -// //00001111111111000000000002222222222000000000000000000000333333333300000000000000000000000004444444444400000000000005555555555555550000000006666666666666660000000777777777777777000000000000000888888888800000000000000000009999999999 -var NG_OPTIONS_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/; +// //00001111111111000000000002222222222000000000000000000000333333333300000000000000000000000004444444444400000000000005555555555555000000000666666666666600000007777777777777000000000000000888888888800000000000000000009999999999 +var NG_OPTIONS_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/; // 1: value expression (valueFn) // 2: label expression (displayFn) // 3: group by expression (groupByFn) diff --git a/src/ng/directive/ngRepeat.js b/src/ng/directive/ngRepeat.js index 3f963250f90e..9721902975a9 100644 --- a/src/ng/directive/ngRepeat.js +++ b/src/ng/directive/ngRepeat.js @@ -384,7 +384,7 @@ var ngRepeatDirective = ['$parse', '$animate', '$compile', function($parse, $ani var aliasAs = match[3]; var trackByExp = match[4]; - match = lhs.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/); + match = lhs.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/); if (!match) { throw ngRepeatMinErr('iidexp', '\'_item_\' in \'_item_ in _collection_\' should be an identifier or \'(_key_, _value_)\' expression, but got \'{0}\'.', diff --git a/src/ng/filter/filters.js b/src/ng/filter/filters.js index f0ef2f29d3aa..e6d4ed06a0eb 100644 --- a/src/ng/filter/filters.js +++ b/src/ng/filter/filters.js @@ -476,7 +476,7 @@ var DATE_FORMATS = { }; var DATE_FORMATS_SPLIT = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/, - NUMBER_STRING = /^\-?\d+$/; + NUMBER_STRING = /^-?\d+$/; /** * @ngdoc filter @@ -563,7 +563,7 @@ var DATE_FORMATS_SPLIT = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+ expect(element(by.binding("1288323623006 | date:'medium'")).getText()). toMatch(/Oct 2\d, 2010 \d{1,2}:\d{2}:\d{2} (AM|PM)/); expect(element(by.binding("1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'")).getText()). - toMatch(/2010\-10\-2\d \d{2}:\d{2}:\d{2} (\-|\+)?\d{4}/); + toMatch(/2010-10-2\d \d{2}:\d{2}:\d{2} (-|\+)?\d{4}/); expect(element(by.binding("'1288323623006' | date:'MM/dd/yyyy @ h:mma'")).getText()). toMatch(/10\/2\d\/2010 @ \d{1,2}:\d{2}(AM|PM)/); expect(element(by.binding("'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"")).getText()). diff --git a/src/ng/http.js b/src/ng/http.js index 1ca95cecb027..b8d350ea3143 100644 --- a/src/ng/http.js +++ b/src/ng/http.js @@ -7,7 +7,7 @@ var JSON_ENDS = { '[': /]$/, '{': /}$/ }; -var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/; +var JSON_PROTECTION_PREFIX = /^\)]\}',?\n/; var $httpMinErr = minErr('$http'); function serializeValue(v) { diff --git a/src/ng/location.js b/src/ng/location.js index 3c4a284c121f..905407e4e191 100644 --- a/src/ng/location.js +++ b/src/ng/location.js @@ -1,6 +1,6 @@ 'use strict'; -var PATH_MATCH = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/, +var PATH_MATCH = /^([^?#]*)(\?([^#]*))?(#(.*))?$/, DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21}; var $locationMinErr = minErr('$location'); diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index 5c0dde5a395f..18b71ba6580b 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -1588,7 +1588,7 @@ function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) { url = url .replace(/([().])/g, '\\$1') - .replace(/(\/)?:(\w+)([\?\*])?/g, function(_, slash, key, option) { + .replace(/(\/)?:(\w+)([?*])?/g, function(_, slash, key, option) { var optional = option === '?' ? option : null; var star = option === '*' ? option : null; keys.push({ name: key, optional: !!optional }); @@ -1602,7 +1602,7 @@ function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) { + ')' + (optional || ''); }) - .replace(/([\/$\*])/g, '\\$1'); + .replace(/([/$*])/g, '\\$1'); ret.regexp = new RegExp('^' + url, 'i'); return ret; diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js index 0440ad591de1..5c875a97ce55 100644 --- a/src/ngResource/resource.js +++ b/src/ngResource/resource.js @@ -430,7 +430,7 @@ function shallowClearAndCopy(src, dst) { */ angular.module('ngResource', ['ng']). provider('$resource', function ResourceProvider() { - var PROTOCOL_AND_DOMAIN_REGEX = /^https?:\/\/[^\/]*/; + var PROTOCOL_AND_DOMAIN_REGEX = /^https?:\/\/[^/]*/; var provider = this; diff --git a/src/ngRoute/route.js b/src/ngRoute/route.js index 46396df976f6..c3b78776e863 100644 --- a/src/ngRoute/route.js +++ b/src/ngRoute/route.js @@ -261,7 +261,7 @@ function $RouteProvider() { path = path .replace(/([().])/g, '\\$1') - .replace(/(\/)?:(\w+)(\*\?|[\?\*])?/g, function(_, slash, key, option) { + .replace(/(\/)?:(\w+)(\*\?|[?*])?/g, function(_, slash, key, option) { var optional = (option === '?' || option === '*?') ? '?' : null; var star = (option === '*' || option === '*?') ? '*' : null; keys.push({ name: key, optional: !!optional }); @@ -275,7 +275,7 @@ function $RouteProvider() { + ')' + (optional || ''); }) - .replace(/([\/$\*])/g, '\\$1'); + .replace(/([/$*])/g, '\\$1'); ret.regexp = new RegExp('^' + path + '$', insensitive ? 'i' : ''); return ret; diff --git a/test/auto/injectorSpec.js b/test/auto/injectorSpec.js index de8d60c50a7d..5a558d5631e6 100644 --- a/test/auto/injectorSpec.js +++ b/test/auto/injectorSpec.js @@ -418,7 +418,7 @@ describe('injector', function() { expect(function() { createInjector(['IDontExist'], {}); }).toThrowMinErr('$injector', 'modulerr', - /\[\$injector:nomod\] Module 'IDontExist' is not available! You either misspelled the module name or forgot to load it/); + /\[\$injector:nomod] Module 'IDontExist' is not available! You either misspelled the module name or forgot to load it/); }); @@ -782,7 +782,7 @@ describe('injector', function() { createInjector([ {} ], {}); - }).toThrowMinErr('$injector', 'modulerr', /Failed to instantiate module \{\} due to:\n.*\[ng:areq\] Argument 'module' is not a function, got Object/); + }).toThrowMinErr('$injector', 'modulerr', /Failed to instantiate module \{\} due to:\n.*\[ng:areq] Argument 'module' is not a function, got Object/); }); diff --git a/test/helpers/matchers.js b/test/helpers/matchers.js index 3ccb10fb0529..032f6760adc3 100644 --- a/test/helpers/matchers.js +++ b/test/helpers/matchers.js @@ -60,7 +60,7 @@ beforeEach(function() { // This function escapes all special regex characters. // We use it to create matching regex from arbitrary strings. // http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); + return str.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&'); } function test(exception) { diff --git a/test/helpers/testabilityPatch.js b/test/helpers/testabilityPatch.js index dfb03b31e739..d589ac2c67df 100644 --- a/test/helpers/testabilityPatch.js +++ b/test/helpers/testabilityPatch.js @@ -184,7 +184,7 @@ function sortedHtml(element, showNgClass) { } var attr = attributes[i]; - if (attr.name.match(/^ng[:\-]/) || + if (attr.name.match(/^ng[:-]/) || (attr.value || attr.value === '') && attr.value !== 'null' && attr.value !== 'auto' && @@ -241,7 +241,7 @@ function sortedHtml(element, showNgClass) { var tmp = style; style = []; forEach(tmp, function(value) { - if (!value.match(/^max[^\-]/)) { + if (!value.match(/^max[^-]/)) { style.push(value); } }); diff --git a/test/minErrSpec.js b/test/minErrSpec.js index d438dc517b58..675c6e40fede 100644 --- a/test/minErrSpec.js +++ b/test/minErrSpec.js @@ -34,7 +34,7 @@ describe('minErr', function() { it('should interpolate string arguments without quotes', function() { var myError = testError('1', 'This {0} is "{1}"', 'foo', 'bar'); - expect(myError.message).toMatch(/^\[test:1\] This foo is "bar"/); + expect(myError.message).toMatch(/^\[test:1] This foo is "bar"/); }); it('should interpolate non-string arguments', function() { @@ -57,7 +57,7 @@ describe('minErr', function() { var myError = testError('26', 'false: {0}; zero: {1}; null: {2}; undefined: {3}; emptyStr: {4}', false, 0, null, undefined, ''); expect(myError.message). - toMatch(/^\[test:26\] false: false; zero: 0; null: null; undefined: undefined; emptyStr: /); + toMatch(/^\[test:26] false: false; zero: 0; null: null; undefined: undefined; emptyStr: /); }); it('should handle arguments that are objects with cyclic references', function() { @@ -74,20 +74,20 @@ describe('minErr', function() { var foo = 'Fooooo', myError = testError('26', 'This {0} is {1} on {2}', foo); - expect(myError.message).toMatch(/^\[test:26\] This Fooooo is \{1\} on \{2\}/); + expect(myError.message).toMatch(/^\[test:26] This Fooooo is \{1\} on \{2\}/); }); it('should pass through the message if no interpolation is needed', function() { var myError = testError('26', 'Something horrible happened!'); - expect(myError.message).toMatch(/^\[test:26\] Something horrible happened!/); + expect(myError.message).toMatch(/^\[test:26] Something horrible happened!/); }); it('should include a namespace in the message only if it is namespaced', function() { var myError = emptyTestError('26', 'This is a {0}', 'Foo'); var myNamespacedError = testError('26', 'That is a {0}', 'Bar'); - expect(myError.message).toMatch(/^\[26\] This is a Foo/); - expect(myNamespacedError.message).toMatch(/^\[test:26\] That is a Bar/); + expect(myError.message).toMatch(/^\[26] This is a Foo/); + expect(myNamespacedError.message).toMatch(/^\[test:26] That is a Bar/); }); diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index 91c5d02b9876..e667ade6f3be 100644 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -8305,7 +8305,7 @@ describe('$compile', function() { inject(function($compile) { expect(function() { $compile('
    '); - }).toThrowMinErr('$compile', 'multidir', /Multiple directives \[first, second\] asking for transclusion on:
    '); - }).toThrowMinErr('$compile', 'multidir', /Multiple directives \[first, second\] asking for transclusion on:
    '); - }).toThrowMinErr('$compile', 'multidir', /Multiple directives \[first, second\] asking for transclusion on:

    hello'); expect(function() { $rootScope.$digest(); }).toThrowMinErr('$interpolate', 'interr', new RegExp( /Can't interpolate: \{\{html}}\n/.source + - /[^[]*\[\$sce:unsafe\] Attempting to use an unsafe value in a safe context./.source)); + /[^[]*\[\$sce:unsafe] Attempting to use an unsafe value in a safe context./.source)); })); it('should set html for trusted values', inject(function($rootScope, $compile, $sce) { diff --git a/test/ng/directive/booleanAttrsSpec.js b/test/ng/directive/booleanAttrsSpec.js index b146c1aae705..18a2e4d0466a 100644 --- a/test/ng/directive/booleanAttrsSpec.js +++ b/test/ng/directive/booleanAttrsSpec.js @@ -285,7 +285,7 @@ describe('ngHref', function() { })); // Support: IE 9-11 only, Edge 12-14+ - if (msie || /\bEdge\/[\d\.]+\b/.test(window.navigator.userAgent)) { + if (msie || /\bEdge\/[\d.]+\b/.test(window.navigator.userAgent)) { // IE/Edge fail when setting a href to a URL containing a % that isn't a valid escape sequence // See https://github.com/angular/angular.js/issues/13388 it('should throw error if ng-href contains a non-escaped percent symbol', inject(function($rootScope, $compile) { diff --git a/test/ng/directive/ngModelSpec.js b/test/ng/directive/ngModelSpec.js index 0e7d9f053952..82ea5cd259ee 100644 --- a/test/ng/directive/ngModelSpec.js +++ b/test/ng/directive/ngModelSpec.js @@ -1341,7 +1341,7 @@ describe('ngModel', function() { describe('CSS classes', function() { - var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i; + var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i; it('should set ng-empty or ng-not-empty when the view value changes', inject(function($compile, $rootScope, $sniffer) { diff --git a/test/ng/httpBackendSpec.js b/test/ng/httpBackendSpec.js index 1fce7c92a602..fbc58072894f 100644 --- a/test/ng/httpBackendSpec.js +++ b/test/ng/httpBackendSpec.js @@ -332,7 +332,7 @@ describe('$httpBackend', function() { describe('JSONP', function() { - var SCRIPT_URL = /([^\?]*)\?cb=(.*)/; + var SCRIPT_URL = /([^?]*)\?cb=(.*)/; it('should add script tag for JSONP request', function() { diff --git a/test/ng/locationSpec.js b/test/ng/locationSpec.js index 4780decef95d..a2501bea0016 100644 --- a/test/ng/locationSpec.js +++ b/test/ng/locationSpec.js @@ -43,7 +43,7 @@ describe('$location', function() { // Support: non-Windows browsers // These tests expect a Windows environment which we can only guarantee // on IE & Edge. - if (msie || /\bEdge\/[\d\.]+\b/.test(window.navigator.userAgent)) return; + if (msie || /\bEdge\/[\d.]+\b/.test(window.navigator.userAgent)) return; urlParsingNodePlaceholder = urlParsingNode; @@ -64,7 +64,7 @@ describe('$location', function() { afterEach(function() { // Support: non-Windows browsers - if (msie || /\bEdge\/[\d\.]+\b/.test(window.navigator.userAgent)) return; + if (msie || /\bEdge\/[\d.]+\b/.test(window.navigator.userAgent)) return; //reset urlParsingNode urlParsingNode = urlParsingNodePlaceholder; }); diff --git a/test/ng/parseSpec.js b/test/ng/parseSpec.js index 6be6421da8ce..ff092ac6584b 100644 --- a/test/ng/parseSpec.js +++ b/test/ng/parseSpec.js @@ -3405,7 +3405,7 @@ describe('parser', function() { forEach([true, false], function(cspEnabled) { describe('custom identifiers (csp: ' + cspEnabled + ')', function() { var isIdentifierStartRe = /[#a-z]/; - var isIdentifierContinueRe = /[\-a-z]/; + var isIdentifierContinueRe = /[-a-z]/; var isIdentifierStartFn; var isIdentifierContinueFn; var scope; diff --git a/test/ng/sceSpecs.js b/test/ng/sceSpecs.js index c7c56b378b40..97f8f338f5cd 100644 --- a/test/ng/sceSpecs.js +++ b/test/ng/sceSpecs.js @@ -322,7 +322,7 @@ describe('SCE', function() { runTest({whiteList: [{}]}, null)(); }).toThrowMinErr('$injector', 'modulerr', new RegExp( /Failed to instantiate module function ?\(\$sceDelegateProvider\) due to:\n/.source + - /[^[]*\[\$sce:imatcher\] Matchers may only be "self", string patterns or RegExp objects/.source)); + /[^[]*\[\$sce:imatcher] Matchers may only be "self", string patterns or RegExp objects/.source)); }); describe('adjustMatcher', function() { @@ -441,7 +441,7 @@ describe('SCE', function() { runTest({whiteList: ['http://***/']}, null)(); }).toThrowMinErr('$injector', 'modulerr', new RegExp( /Failed to instantiate module function ?\(\$sceDelegateProvider\) due to:\n/.source + - /[^[]*\[\$sce:iwcard\] Illegal sequence \*\*\* in string matcher\. {2}String: http:\/\/\*\*\*/.source)); + /[^[]*\[\$sce:iwcard] Illegal sequence \*\*\* in string matcher\. {2}String: http:\/\/\*\*\*/.source)); }); }); From d4863a82fac45c8d6bbd04e5bdc9b30049201324 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Mon, 28 Nov 2016 09:16:20 +0000 Subject: [PATCH 016/849] chore(npm-bundle-deps): remove unused script This became reduntant as of 507ee2d9bac77841681282dfcba9297dda576b41 --- scripts/travis/npm-bundle-deps.sh | 9 --------- 1 file changed, 9 deletions(-) delete mode 100755 scripts/travis/npm-bundle-deps.sh diff --git a/scripts/travis/npm-bundle-deps.sh b/scripts/travis/npm-bundle-deps.sh deleted file mode 100755 index 5668df6d1493..000000000000 --- a/scripts/travis/npm-bundle-deps.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -set -e - -# normalize the working dir to the directory of the script -cd $(dirname $0); - -cd ../.. -curl "http://23.251.148.50:8000/tar/$TRAVIS_REPO_SLUG/$TRAVIS_COMMIT" | tar xz || true From e8f9cbfdcec39c5acbf8245c63fc55b7f55caa15 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Mon, 28 Nov 2016 09:17:21 +0000 Subject: [PATCH 017/849] chore(bower): set clone depth to speed up releases We already use `git clone ... --depth=1` for the `code.angularjs.org` repository, which speeds up the cloning of the repository. --- scripts/bower/publish.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/bower/publish.sh b/scripts/bower/publish.sh index 1685fae2dc31..55d97df96adc 100755 --- a/scripts/bower/publish.sh +++ b/scripts/bower/publish.sh @@ -27,7 +27,7 @@ function prepare { for repo in "${REPOS[@]}" do echo "-- Cloning bower-$repo" - git clone git@github.com:angular/bower-$repo.git $TMP_DIR/bower-$repo + git clone git@github.com:angular/bower-$repo.git $TMP_DIR/bower-$repo --depth=1 done From ad4e86a582ebae250591e7c5b2535eafc6ddcee4 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Mon, 28 Nov 2016 09:37:52 +0000 Subject: [PATCH 018/849] chore(saucelabs): update sauce-connect to 4.4.1 --- lib/saucelabs/start_tunnel.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/saucelabs/start_tunnel.sh b/lib/saucelabs/start_tunnel.sh index 23cb23cfb6dc..d45650b88a52 100755 --- a/lib/saucelabs/start_tunnel.sh +++ b/lib/saucelabs/start_tunnel.sh @@ -11,7 +11,7 @@ set -e # Curl and run this script as part of your .travis.yml before_script section: # before_script: # - curl https://gist.github.com/santiycr/5139565/raw/sauce_connect_setup.sh | bash -SC_VERSION="4.3.16" +SC_VERSION="4.4.1" CONNECT_URL="https://saucelabs.com/downloads/sc-$SC_VERSION-linux.tar.gz" CONNECT_DIR="/tmp/sauce-connect-$RANDOM" CONNECT_DOWNLOAD="sc-$SC_VERSION-linux.tar.gz" From aadee894dac5275de01d90387f0cc157bf620183 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Mon, 28 Nov 2016 13:44:56 +0000 Subject: [PATCH 019/849] chore(validate-commit): remove redundant scripts --- scripts/validate-commit-msg.js | 111 ---------------------------- scripts/validate-commit-msg.spec.js | 82 -------------------- 2 files changed, 193 deletions(-) delete mode 100755 scripts/validate-commit-msg.js delete mode 100644 scripts/validate-commit-msg.spec.js diff --git a/scripts/validate-commit-msg.js b/scripts/validate-commit-msg.js deleted file mode 100755 index 1d7c86aa709b..000000000000 --- a/scripts/validate-commit-msg.js +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/env node - -/** - * Git COMMIT-MSG hook for validating commit message - * See https://docs.google.com/document/d/1rk04jEuGfk9kYzfqCuOlPTSJw3hEDZJTBN5E5f1SALo/edit - * - * Installation: - * >> cd - * >> ln -s ../../validate-commit-msg.js .git/hooks/commit-msg - */ - -'use strict'; - -var fs = require('fs'); -var util = require('util'); - - -var MAX_LENGTH = 100; -var PATTERN = /^(?:fixup!\s*)?(\w*)(\(([\w$.*/-]*)\))?: (.*)$/; -var IGNORED = /^WIP:/; -var TYPES = { - feat: true, - fix: true, - docs: true, - style: true, - refactor: true, - perf: true, - test: true, - chore: true, - revert: true -}; - - -var error = function() { - // gitx does not display it - // http://gitx.lighthouseapp.com/projects/17830/tickets/294-feature-display-hook-error-message-when-hook-fails - // https://groups.google.com/group/gitx/browse_thread/thread/a03bcab60844b812 - console.error('INVALID COMMIT MSG: ' + util.format.apply(null, arguments)); -}; - - -var validateMessage = function(message) { - var isValid = true; - - if (IGNORED.test(message)) { - console.log('Commit message validation ignored.'); - return true; - } - - if (message.length > MAX_LENGTH) { - error('is longer than %d characters !', MAX_LENGTH); - isValid = false; - } - - var match = PATTERN.exec(message); - - if (!match) { - error('does not match "(): " ! was: ' + message); - return false; - } - - var type = match[1]; - - if (!TYPES.hasOwnProperty(type)) { - error('"%s" is not allowed type !', type); - return false; - } - - // Some more ideas, do want anything like this ? - // - allow only specific scopes (eg. fix(docs) should not be allowed ? - // - auto correct the type to lower case ? - // - auto correct first letter of the subject to lower case ? - // - auto add empty line after subject ? - // - auto remove empty () ? - // - auto correct typos in type ? - // - store incorrect messages, so that we can learn - - return isValid; -}; - - -var firstLineFromBuffer = function(buffer) { - return buffer.toString().split('\n').shift(); -}; - - - -// publish for testing -exports.validateMessage = validateMessage; - -// hacky start if not run by jasmine :-D -if (process.argv.join('').indexOf('jasmine-node') === -1) { - var commitMsgFile = process.argv[2]; - var incorrectLogFile = commitMsgFile.replace('COMMIT_EDITMSG', 'logs/incorrect-commit-msgs'); - - fs.readFile(commitMsgFile, function(err, buffer) { - if (err) { - console.error(err); - process.exit(1); - } - var msg = firstLineFromBuffer(buffer); - - if (!validateMessage(msg)) { - fs.appendFile(incorrectLogFile, msg + '\n', function() { - process.exit(1); - }); - } else { - process.exit(0); - } - }); -} diff --git a/scripts/validate-commit-msg.spec.js b/scripts/validate-commit-msg.spec.js deleted file mode 100644 index 5a8ab1dc409e..000000000000 --- a/scripts/validate-commit-msg.spec.js +++ /dev/null @@ -1,82 +0,0 @@ -/* global describe: false, beforeEach: false, it: false, expect: false, spyOn: false */ -'use strict'; - -describe('validate-commit-msg.js', function() { - var m = require('./validate-commit-msg'); - var errors = []; - var logs = []; - - var VALID = true; - var INVALID = false; - - beforeEach(function() { - errors.length = 0; - logs.length = 0; - - spyOn(console, 'error').andCallFake(function(msg) { - // eslint-disable-next-line no-control-regex - errors.push(msg.replace(/\x1B\[\d+m/g, '')); // uncolor - }); - - spyOn(console, 'log').andCallFake(function(msg) { - // eslint-disable-next-line no-control-regex - logs.push(msg.replace(/\x1B\[\d+m/g, '')); // uncolor - }); - }); - - describe('validateMessage', function() { - - it('should be valid', function() { - expect(m.validateMessage('fixup! fix($compile): something')).toBe(VALID); - expect(m.validateMessage('fix($compile): something')).toBe(VALID); - expect(m.validateMessage('feat($location): something')).toBe(VALID); - expect(m.validateMessage('docs($filter): something')).toBe(VALID); - expect(m.validateMessage('style($http): something')).toBe(VALID); - expect(m.validateMessage('refactor($httpBackend): something')).toBe(VALID); - expect(m.validateMessage('test($resource): something')).toBe(VALID); - expect(m.validateMessage('chore($controller): something')).toBe(VALID); - expect(m.validateMessage('chore(foo-bar): something')).toBe(VALID); - expect(m.validateMessage('chore(*): something')).toBe(VALID); - expect(m.validateMessage('chore(guide/location): something')).toBe(VALID); - expect(m.validateMessage('revert(foo): something')).toBe(VALID); - expect(errors).toEqual([]); - }); - - - it('should validate 100 characters length', function() { - var msg = 'fix($compile): something super mega extra giga tera long, maybe even longer and longer and longer... '; - - expect(m.validateMessage(msg)).toBe(INVALID); - expect(errors).toEqual(['INVALID COMMIT MSG: is longer than 100 characters !']); - }); - - - it('should validate "(): " format', function() { - var msg = 'not correct format'; - - expect(m.validateMessage(msg)).toBe(INVALID); - expect(errors).toEqual(['INVALID COMMIT MSG: does not match "(): " ! was: not correct format']); - }); - - - it('should validate type', function() { - expect(m.validateMessage('weird($filter): something')).toBe(INVALID); - expect(errors).toEqual(['INVALID COMMIT MSG: "weird" is not allowed type !']); - }); - - - it('should allow empty scope', function() { - expect(m.validateMessage('fix: blablabla')).toBe(VALID); - }); - - - it('should allow dot in scope', function() { - expect(m.validateMessage('chore(mocks.$httpBackend): something')).toBe(VALID); - }); - - - it('should ignore msg prefixed with "WIP: "', function() { - expect(m.validateMessage('WIP: bullshit')).toBe(VALID); - }); - }); -}); From d003ec1d41f7dc4157e33eb4b46dbc6b5028e565 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Mon, 28 Nov 2016 10:38:32 +0000 Subject: [PATCH 020/849] docs(ComponentRouter): it is unlikely ever to appear on bower or CDN --- docs/content/guide/component-router.ngdoc | 4 ++-- src/ngComponentRouter/Router.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/content/guide/component-router.ngdoc b/docs/content/guide/component-router.ngdoc index 8319c81a4abe..70e8e7bb9672 100644 --- a/docs/content/guide/component-router.ngdoc +++ b/docs/content/guide/component-router.ngdoc @@ -467,8 +467,8 @@ to display list and detail views of Heroes and Crises. ## Install the libraries -It is easier to use [yarn](https://yarnpkg.com) to install the **Component Router** module. -For this guide we will also install AngularJS itself via yarn: +It is easier to use [Yarn](https://yarnpkg.com) or [npm](https://www.npmjs.com) to install the +**Component Router** module. For this guide we will also install AngularJS itself via Yarn: ```bash yarn init diff --git a/src/ngComponentRouter/Router.js b/src/ngComponentRouter/Router.js index fdece9c5b5c1..7d7bc274d964 100644 --- a/src/ngComponentRouter/Router.js +++ b/src/ngComponentRouter/Router.js @@ -10,7 +10,7 @@ * * @installation * - * Currently, the **Component Router** module must be installed via `npm`/`yarn`, it is not yet available + * Currently, the **Component Router** module must be installed via `npm`/`yarn`, it is not available * on Bower or the Google CDN. * * ```bash From f54e9242fc038ef89c0fa6fa7571a9e34d65c01f Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Mon, 28 Nov 2016 10:45:23 +0000 Subject: [PATCH 021/849] chore(jenkins): remove path to grunt grunt is installed globally on jenkins so we can just use it directly. --- scripts/jenkins/build.sh | 11 +++++------ scripts/jenkins/release.sh | 3 +-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/scripts/jenkins/build.sh b/scripts/jenkins/build.sh index 205bcf6246de..16a12402efa7 100755 --- a/scripts/jenkins/build.sh +++ b/scripts/jenkins/build.sh @@ -21,22 +21,21 @@ rm -f angular.js.size # BUILD # -yarn -node_modules/.bin/grunt ci-checks package --no-color +grunt ci-checks package --no-color mkdir -p test_out # UNIT TESTS # -node_modules/.bin/grunt test:unit --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color +grunt test:unit --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color # END TO END TESTS # -node_modules/.bin/grunt test:ci-protractor +grunt test:ci-protractor # DOCS APP TESTS # -node_modules/.bin/grunt test:docs --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color +grunt test:docs --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color # Promises/A+ TESTS # -node_modules/.bin/grunt test:promises-aplus --no-color +grunt test:promises-aplus --no-color # CHECK SIZE # diff --git a/scripts/jenkins/release.sh b/scripts/jenkins/release.sh index 1513a37c404f..bb738a20292d 100755 --- a/scripts/jenkins/release.sh +++ b/scripts/jenkins/release.sh @@ -38,8 +38,7 @@ function build { source ./init-node.sh cd ../.. - yarn - node_modules/.bin/grunt ci-checks package --no-color + grunt ci-checks package --no-color cd $SCRIPT_DIR } From 099083352ad3033efc260b46df7299048a3a3954 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Tue, 29 Nov 2016 12:28:04 +0000 Subject: [PATCH 022/849] chore(travis): install grunt-cli globally to simplify scripts --- scripts/check-size.sh | 2 +- scripts/travis/before_build.sh | 4 +++- scripts/travis/build.sh | 12 ++++++------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/scripts/check-size.sh b/scripts/check-size.sh index 327e5e170999..636092ffb92b 100755 --- a/scripts/check-size.sh +++ b/scripts/check-size.sh @@ -1,5 +1,5 @@ #!/bin/bash -node_modules/.bin/grunt minify +grunt minify gzip -c < build/angular.min.js > build/angular.min.js.gzip ls -l build/angular.min.* diff --git a/scripts/travis/before_build.sh b/scripts/travis/before_build.sh index 0165586f68e2..0b3356ea358c 100755 --- a/scripts/travis/before_build.sh +++ b/scripts/travis/before_build.sh @@ -2,6 +2,8 @@ set -e +yarn global add grunt-cli@1.2.0 + mkdir -p $LOGS_DIR if [ $JOB != "ci-checks" ]; then @@ -10,7 +12,7 @@ if [ $JOB != "ci-checks" ]; then fi if [ $JOB != "ci-checks" ]; then - node_modules/.bin/grunt package + grunt package echo "wait_for_browser_provider" ./scripts/travis/wait_for_browser_provider.sh fi diff --git a/scripts/travis/build.sh b/scripts/travis/build.sh index 10438875ee13..70dd4182f645 100755 --- a/scripts/travis/build.sh +++ b/scripts/travis/build.sh @@ -6,7 +6,7 @@ export BROWSER_STACK_ACCESS_KEY=`echo $BROWSER_STACK_ACCESS_KEY | rev` export SAUCE_ACCESS_KEY=`echo $SAUCE_ACCESS_KEY | rev` if [ "$JOB" == "ci-checks" ]; then - node_modules/.bin/grunt ci-checks + grunt ci-checks elif [ "$JOB" == "unit" ]; then if [ "$BROWSER_PROVIDER" == "browserstack" ]; then BROWSERS="BS_Chrome,BS_Safari,BS_Firefox,BS_IE_9,BS_IE_10,BS_IE_11,BS_iOS" @@ -14,11 +14,11 @@ elif [ "$JOB" == "unit" ]; then BROWSERS="SL_Chrome,SL_Firefox,SL_Safari_8,SL_Safari_9,SL_IE_9,SL_IE_10,SL_IE_11,SL_iOS" fi - node_modules/.bin/grunt test:promises-aplus - node_modules/.bin/grunt test:unit --browsers="$BROWSERS" --reporters=dots - node_modules/.bin/grunt tests:docs --browsers="$BROWSERS" --reporters=dots + grunt test:promises-aplus + grunt test:unit --browsers="$BROWSERS" --reporters=dots + grunt tests:docs --browsers="$BROWSERS" --reporters=dots elif [ "$JOB" == "docs-e2e" ]; then - node_modules/.bin/grunt test:travis-protractor --specs="docs/app/e2e/**/*.scenario.js" + grunt test:travis-protractor --specs="docs/app/e2e/**/*.scenario.js" elif [ "$JOB" == "e2e" ]; then if [[ $TEST_TARGET == jquery* ]]; then export USE_JQUERY=1 @@ -30,7 +30,7 @@ elif [ "$JOB" == "e2e" ]; then fi export TARGET_SPECS="test/e2e/tests/**/*.js,$TARGET_SPECS" - node_modules/.bin/grunt test:travis-protractor --specs="$TARGET_SPECS" + grunt test:travis-protractor --specs="$TARGET_SPECS" else echo "Unknown job type. Please set JOB=ci-checks, JOB=unit or JOB=e2e-*." fi From ca139dee8ed0cad50564e76d57ac16c98870a525 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Mon, 28 Nov 2016 11:19:59 +0000 Subject: [PATCH 023/849] chore(utils): install npm-run to simplify scripts --- lib/grunt/utils.js | 8 ++++---- package.json | 1 + yarn.lock | 30 +++++++++++++----------------- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/lib/grunt/utils.js b/lib/grunt/utils.js index 02cdeab97c3b..952768da7239 100644 --- a/lib/grunt/utils.js +++ b/lib/grunt/utils.js @@ -3,7 +3,7 @@ var fs = require('fs'); var shell = require('shelljs'); var grunt = require('grunt'); -var spawn = require('cross-spawn'); +var spawn = require('npm-run').spawn; var CSP_CSS_HEADER = '/* Include this file in your html if you are using the CSP mode. */\n\n'; @@ -15,7 +15,7 @@ module.exports = { var reporters = grunt.option('reporters'); var noColor = grunt.option('no-colors'); var port = grunt.option('port'); - var p = spawn('./node_modules/.bin/karma', ['start', config, + var p = spawn('karma', ['start', config, singleRun ? '--single-run=true' : '', reporters ? '--reporters=' + reporters : '', browsers ? '--browsers=' + browsers : '', @@ -38,7 +38,7 @@ module.exports = { done(); return; } - var p = spawn('./node_modules/.bin/webdriver-manager', ['update']); + var p = spawn('webdriver-manager', ['update']); p.stdout.pipe(process.stdout); p.stderr.pipe(process.stderr); p.on('exit', function(code) { @@ -65,7 +65,7 @@ module.exports = { } - var p = spawn('./node_modules/.bin/protractor', args); + var p = spawn('protractor', args); p.stdout.pipe(process.stdout); p.stderr.pipe(process.stderr); p.on('exit', function(code) { diff --git a/package.json b/package.json index 9c1257827f00..7ff2e205f0dd 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "log4js": "^0.6.27", "marked": "~0.3.0", "node-html-encoder": "0.0.2", + "npm-run": "^4.1.0", "promises-aplus-tests": "~2.1.0", "protractor": "^4.0.10", "q": "~1.0.0", diff --git a/yarn.lock b/yarn.lock index 44b71d46b906..ff3dd947e484 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1677,11 +1677,7 @@ domain-browser@~1.1.0: version "1.1.7" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" -domelementtype@1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - -domelementtype@~1.1.1: +domelementtype@1, domelementtype@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" @@ -2472,16 +2468,7 @@ glob@7.0.5, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@~7.0.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^4.0.5, glob@~4.0.2: - version "4.0.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-4.0.6.tgz#695c50bdd4e2fb5c5d370b091f388d3707e291a7" - dependencies: - graceful-fs "^3.0.2" - inherits "2" - minimatch "^1.0.0" - once "^1.3.0" - -glob@^4.3.1, glob@~4.3.0: +glob@^4.0.5, glob@^4.3.1, glob@~4.3.0: version "4.3.5" resolved "https://registry.yarnpkg.com/glob/-/glob-4.3.5.tgz#80fbb08ca540f238acce5d11d1e9bc41e75173d3" dependencies: @@ -2529,6 +2516,15 @@ glob@~3.1.21: inherits "1" minimatch "~0.2.11" +glob@~4.0.2: + version "4.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.0.6.tgz#695c50bdd4e2fb5c5d370b091f388d3707e291a7" + dependencies: + graceful-fs "^3.0.2" + inherits "2" + minimatch "^1.0.0" + once "^1.3.0" + global-modules@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" @@ -5109,8 +5105,8 @@ read@~1.0.4: mute-stream "~0.0.4" readable-stream@1.1, "readable-stream@>=1.1.13-1 <1.2.0-0", readable-stream@^1.0.27-1, readable-stream@^1.0.33-1, readable-stream@^1.1.13, readable-stream@^1.1.13-1, readable-stream@~1.1.8, readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + version "1.1.13" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" dependencies: core-util-is "~1.0.0" inherits "~2.0.1" From 5dd3a35f472f1344472b6dc76016b30251888cf4 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Mon, 28 Nov 2016 14:12:18 +0000 Subject: [PATCH 024/849] chore(grunt): run gulp directly rather than through npm --- lib/grunt/plugins.js | 7 ++----- package.json | 3 +-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/lib/grunt/plugins.js b/lib/grunt/plugins.js index 6de60d0b282d..d6a4f089d473 100644 --- a/lib/grunt/plugins.js +++ b/lib/grunt/plugins.js @@ -4,7 +4,7 @@ var bower = require('bower'); var util = require('./utils.js'); -var shelljs = require('shelljs'); +var npmRun = require('npm-run'); module.exports = function(grunt) { @@ -39,10 +39,7 @@ module.exports = function(grunt) { grunt.registerTask('docs', 'create angular docs', function() { - var gruntProc = shelljs.exec('yarn run gulp -- --gulpfile docs/gulpfile.js'); - if (gruntProc.code !== 0) { - throw new Error('doc generation failed'); - } + npmRun.execSync('gulp --gulpfile docs/gulpfile.js', {stdio: 'inherit'}); }); diff --git a/package.json b/package.json index 7ff2e205f0dd..d5f2336fed3f 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,7 @@ "scripts": { "commit": "git-cz", "test-i18n": "jasmine-node i18n/spec", - "test-i18n-ucd": "jasmine-node i18n/ucd/spec", - "gulp": "gulp" + "test-i18n-ucd": "jasmine-node i18n/ucd/spec" }, "devDependencies": { "angular-benchpress": "0.x.x", From f04fcdfe9f9260f18d1ac79e3a9584aa28073d4c Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Tue, 29 Nov 2016 12:28:21 +0000 Subject: [PATCH 025/849] chore(grunt): check node, yarn and grunt-cli versions If global versions of node, yarn or grunt-cli don't match what we expect then blow up. --- Gruntfile.js | 64 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 10 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 10f0ce034b5b..fb49afeb2667 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -10,26 +10,63 @@ var path = require('path'); var e2e = require('./test/e2e/tools'); var semver = require('semver'); -var fs = require('fs'); +var exec = require('shelljs').exec; +var pkg = require(__dirname + '/package.json'); -var useNodeVersion = fs.readFileSync('.nvmrc', 'utf8'); -if (!semver.satisfies(process.version, useNodeVersion)) { - throw new Error('Invalid node version; please use node v' + useNodeVersion); +// Node.js version checks +if (!semver.satisfies(process.version, pkg.engines.node)) { + reportOrFail('Invalid node version (' + process.version + '). ' + + 'Please use a version that satisfies ' + pkg.engines.node); } +// Yarn version checks +var expectedYarnVersion = pkg.engines.yarn; +var currentYarnVersion = exec('yarn --version', {silent: true}).stdout.trim(); +if (!semver.satisfies(currentYarnVersion, expectedYarnVersion)) { + reportOrFail('Invalid yarn version (' + currentYarnVersion + '). ' + + 'Please use a version that satisfies ' + expectedYarnVersion); +} + +// Grunt CLI version checks +var expectedGruntVersion = pkg.engines.grunt; +var currentGruntVersions = exec('grunt --version', {silent: true}).stdout; +var match = /^grunt-cli v(.+)$/m.exec(currentGruntVersions); +if (!match) { + reportOrFail('Unable to compute the current grunt-cli version. We found:\n' + + currentGruntVersions); +} else { + if (!semver.satisfies(match[1], expectedGruntVersion)) { + reportOrFail('Invalid grunt-cli version (' + match[1] + '). ' + + 'Please use a version that satisfies ' + expectedGruntVersion); + } +} + +// Ensure Node.js dependencies have been installed +if (!process.env.TRAVIS && !process.env.JENKINS_HOME) { + var yarnOutput = exec('yarn install'); + if (yarnOutput.code !== 0) { + throw new Error('Yarn install failed: ' + yarnOutput.stderr); + } +} + + module.exports = function(grunt) { - //grunt plugins + + // this loads all the node_modules that start with `grunt-` as plugins require('load-grunt-tasks')(grunt); + // load additional grunt tasks grunt.loadTasks('lib/grunt'); grunt.loadNpmTasks('angular-benchpress'); + // compute version related info for this build var NG_VERSION = versionInfo.currentVersion; NG_VERSION.cdn = versionInfo.cdnVersion; var dist = 'angular-' + NG_VERSION.full; if (versionInfo.cdnVersion == null) { - throw new Error('Unable to read CDN version, are you offline or has the CDN not been properly pushed?'); + throw new Error('Unable to read CDN version, are you offline or has the CDN not been properly pushed?\n' + + 'Perhaps you want to set the NG1_BUILD_NO_REMOTE_VERSION_REQUESTS environment variable?'); } //config @@ -321,10 +358,6 @@ module.exports = function(grunt) { } }); - if (!process.env.TRAVIS) { - grunt.task.run('shell:install-node-dependencies'); - } - //alias tasks grunt.registerTask('test', 'Run unit, docs and e2e tests with Karma', ['eslint', 'package', 'test:unit', 'test:promises-aplus', 'tests:docs', 'test:protractor']); grunt.registerTask('test:jqlite', 'Run the unit tests with Karma' , ['tests:jqlite']); @@ -346,3 +379,14 @@ module.exports = function(grunt) { grunt.registerTask('ci-checks', ['ddescribe-iit', 'merge-conflict', 'eslint']); grunt.registerTask('default', ['package']); }; + + +function reportOrFail(message) { + if (process.env.TRAVIS || process.env.JENKINS_HOME) { + throw new Error(message); + } else { + console.log('==============================================================================='); + console.log(message); + console.log('==============================================================================='); + } +} From afafb7a8ab9b7c8ef505f38ff0cb87f591db7622 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Mon, 28 Nov 2016 16:31:30 +0000 Subject: [PATCH 026/849] docs(FAQ) add link to security guide --- docs/content/misc/faq.ngdoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/content/misc/faq.ngdoc b/docs/content/misc/faq.ngdoc index eee3f5ce368b..0f5960eda147 100644 --- a/docs/content/misc/faq.ngdoc +++ b/docs/content/misc/faq.ngdoc @@ -77,6 +77,8 @@ AngularJS was designed to be compatible with other security measures like Conten (CSP), HTTPS (SSL/TLS) and server-side authentication and authorization that greatly reduce the possible attack vectors and we highly recommend their use. +Please read {@link security} for more detailed information about securing Angular apps. + ### Can I download the source, build, and host the AngularJS environment locally? From b77defde81fc265c13fa504dc78b41a43997abf4 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Mon, 28 Nov 2016 23:00:29 +0000 Subject: [PATCH 027/849] docs(contribute): mention nvm-windows --- docs/content/misc/contribute.ngdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/content/misc/contribute.ngdoc b/docs/content/misc/contribute.ngdoc index 092e3118c835..565cef21a5c7 100644 --- a/docs/content/misc/contribute.ngdoc +++ b/docs/content/misc/contribute.ngdoc @@ -30,8 +30,8 @@ machine: development web server, run tests, and generate distributable files. Depending on your system, you can install Node either from source or as a pre-packaged bundle. - We recommend using [nvm](https://github.com/creationix/nvm) to manage and install Node.js, - which makes it easy to change the version of Node.js per project. + We recommend using [nvm](https://github.com/creationix/nvm) (or [nvm-windows](https://github.com/coreybutler/nvm-windows)) + to manage and install Node.js, which makes it easy to change the version of Node.js per project. * [Yarn](https://yarnpkg.com): We use Yarn to install our Node.js module dependencies (rather than using npm). There are detailed installation instructions available at https://yarnpkg.com/en/docs/install. From f1db7d735b475a7954023cc63f2b3f0ef685ea7e Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Tue, 29 Nov 2016 20:59:38 +0100 Subject: [PATCH 028/849] docs(ngModelOptions): fix broken layout because of code section --- src/ng/directive/ngModelOptions.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ng/directive/ngModelOptions.js b/src/ng/directive/ngModelOptions.js index 9eba7bb8cec1..91b138a241ee 100644 --- a/src/ng/directive/ngModelOptions.js +++ b/src/ng/directive/ngModelOptions.js @@ -313,7 +313,12 @@ defaultModelOptions = new ModelOptions({ * - `debounce`: integer value which contains the debounce model update value in milliseconds. A * value of 0 triggers an immediate update. If an object is supplied instead, you can specify a * custom value for each event. For example: - * `ng-model-options="{ updateOn: 'default blur', debounce: { 'default': 500, 'blur': 0 } }"` + * ``` + * ng-model-options="{ + * updateOn: 'default blur', + * debounce: { 'default': 500, 'blur': 0 } + * }" + * ``` * - `allowInvalid`: boolean value which indicates that the model can be set with values that did * not validate correctly instead of the default behavior of setting the model to undefined. * - `getterSetter`: boolean value which determines whether or not to treat functions bound to From 465d1734559ca4a7f4aa24387060f88fcc53ecb1 Mon Sep 17 00:00:00 2001 From: Rob Wu Date: Thu, 24 Nov 2016 01:44:58 +0100 Subject: [PATCH 029/849] feat(security): do not bootstrap from unknown schemes with a different origin --- src/Angular.js | 10 ++++++---- test/AngularSpec.js | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/Angular.js b/src/Angular.js index bdfc100bf0c3..c4e0eef237ac 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -1485,12 +1485,14 @@ function allowAutoBootstrap(document) { var src = document.currentScript.getAttribute('src'); var link = document.createElement('a'); link.href = src; - var scriptProtocol = link.protocol; - var docLoadProtocol = document.location.protocol; - if (docLoadProtocol === scriptProtocol) { + if (document.location.origin === link.origin) { + // Same-origin resources are always allowed, even for non-whitelisted schemes. return true; } - switch (scriptProtocol) { + // Disabled bootstrapping unless angular.js was loaded from a known scheme used on the web. + // This is to prevent angular.js bundled with browser extensions from being used to bypass the + // content security policy in web pages and other browser extensions. + switch (link.protocol) { case 'http:': case 'https:': case 'ftp:': diff --git a/test/AngularSpec.js b/test/AngularSpec.js index 1c07ef453afe..10540ecc36e5 100644 --- a/test/AngularSpec.js +++ b/test/AngularSpec.js @@ -1683,7 +1683,41 @@ describe('angular', function() { dealoc(appElement); }); + it('should bootstrap from an extension into an extension document for same-origin documents only', function() { + if (msie) return; // IE does not support document.currentScript (nor extensions with protocol), so skip test. + + // Extension URLs are browser-specific, so we must choose a scheme that is supported by the browser to make + // sure that the URL is properly parsed. + var extensionScheme; + var userAgent = window.navigator.userAgent; + if (/Firefox\//.test(userAgent)) { + extensionScheme = 'moz-extension'; + } else if (/Edge\//.test(userAgent)) { + extensionScheme = 'ms-browser-extension'; + } else if (/Chrome\//.test(userAgent)) { + extensionScheme = 'chrome-extension'; + } else if (/Safari\//.test(userAgent)) { + extensionScheme = 'safari-extension'; + } else { + extensionScheme = 'browserext'; // Upcoming standard scheme. + } + + var src = extensionScheme + '://something'; + // Fake a minimal document object (the actual document.currentScript is readonly). + var fakeDoc = { + currentScript: { getAttribute: function() { return src; } }, + location: {protocol: extensionScheme + ':', origin: extensionScheme + '://something'}, + createElement: document.createElement.bind(document) + }; + expect(allowAutoBootstrap(fakeDoc)).toBe(true); + + src = extensionScheme + '://something-else'; + expect(allowAutoBootstrap(fakeDoc)).toBe(false); + }); + it('should not bootstrap from an extension into a non-extension document', function() { + if (msie) return; // IE does not support document.currentScript (nor extensions with protocol), so skip test. + var src = 'resource://something'; // Fake a minimal document object (the actual document.currentScript is readonly). var fakeDoc = { From 9c2d0b8af3f4ea8fe5ca4dffc25560bfdd63cd7f Mon Sep 17 00:00:00 2001 From: Georgios Kalpakas Date: Wed, 30 Nov 2016 13:47:31 +0200 Subject: [PATCH 030/849] test($compile): work around Chrome issue with reported size for `` Since Chrome 53-57+, the reported size of `` elements and their descendants is affected by global display settings (e.g. font size) and browser settings (e.g. default zoom level). This could cause tests incorrectly failing due to such settings. In order to avoid false negatives, we now compare against the size of the equivalent, hand-written SVG instead of fixed widths/heights. Fixes #15333 Closes #15458 --- test/ng/compileSpec.js | 68 +++++++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 14 deletions(-) diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index e667ade6f3be..355e11bc73e7 100644 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -442,30 +442,70 @@ describe('$compile', function() { })); if (supportsForeignObject()) { + // Supports: Chrome 53-57+ + // Since Chrome 53-57+, the reported size of `` elements and their descendants + // is affected by global display settings (e.g. font size) and browser settings (e.g. default + // zoom level). In order to avoid false negatives, we compare against the size of the + // equivalent, hand-written SVG instead of fixed widths/heights. + var HAND_WRITTEN_SVG = + '' + + '' + + '
    test
    ' + + '
    ' + + '
    '; + it('should handle foreignObject', inject(function() { - element = jqLite('

    ' + - '
    test
    ' + - '
    '); + element = jqLite( + '
    ' + + // By hand (for reference) + HAND_WRITTEN_SVG + + // By directive + '' + + '' + + '
    test
    ' + + '
    ' + + '
    ' + + '
    '); $compile(element.contents())($rootScope); document.body.appendChild(element[0]); - var testElem = element.find('div'); - expect(isHTMLElement(testElem[0])).toBe(true); - var bounds = testElem[0].getBoundingClientRect(); - expect(bounds.width === 20 && bounds.height === 20).toBe(true); + var referenceElem = element.find('div')[0]; + var testElem = element.find('div')[1]; + var referenceBounds = referenceElem.getBoundingClientRect(); + var testBounds = testElem.getBoundingClientRect(); + + expect(isHTMLElement(testElem)).toBe(true); + expect(referenceBounds.width).toBeGreaterThan(0); + expect(referenceBounds.height).toBeGreaterThan(0); + expect(testBounds.width).toBe(referenceBounds.width); + expect(testBounds.height).toBe(referenceBounds.height); })); it('should handle custom svg containers that transclude to foreignObject that transclude html', inject(function() { - element = jqLite('
    ' + - '
    test
    ' + - '
    '); + element = jqLite( + '
    ' + + // By hand (for reference) + HAND_WRITTEN_SVG + + // By directive + '' + + '' + + '
    test
    ' + + '
    ' + + '
    ' + + '
    '); $compile(element.contents())($rootScope); document.body.appendChild(element[0]); - var testElem = element.find('div'); - expect(isHTMLElement(testElem[0])).toBe(true); - var bounds = testElem[0].getBoundingClientRect(); - expect(bounds.width === 20 && bounds.height === 20).toBe(true); + var referenceElem = element.find('div')[0]; + var testElem = element.find('div')[1]; + var referenceBounds = referenceElem.getBoundingClientRect(); + var testBounds = testElem.getBoundingClientRect(); + + expect(isHTMLElement(testElem)).toBe(true); + expect(referenceBounds.width).toBeGreaterThan(0); + expect(referenceBounds.height).toBeGreaterThan(0); + expect(testBounds.width).toBe(referenceBounds.width); + expect(testBounds.height).toBe(referenceBounds.height); })); // NOTE: This test may be redundant. From f5d2bf3d6edcf5af9b5f32d286b8d9033a6b254f Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Thu, 1 Dec 2016 16:11:25 +0100 Subject: [PATCH 031/849] chore(doc-gen): render `@example` tag in ngdoc `@method` Currently, ngdoc `@method` ignores `@example` tags and does not output them. This is usually not a problem, as examples are mostly defined directly in the `@description` via code blocks or `` elements. However, some methods still have `@example` tags (possibly from a previous docs version). While not absolutely necessary, having special markup for Examples makes them a) easier to find visually in the docs, and b) easier to link to as they will have a unique id. Closes #14722 Closes #15448 --- docs/config/templates/ngdoc/api/api.template.html | 2 +- docs/config/templates/ngdoc/lib/methods.template.html | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/config/templates/ngdoc/api/api.template.html b/docs/config/templates/ngdoc/api/api.template.html index 97119640411e..3d93e863af17 100644 --- a/docs/config/templates/ngdoc/api/api.template.html +++ b/docs/config/templates/ngdoc/api/api.template.html @@ -51,7 +51,7 @@

    Dependencies

    {% block examples %} {%- if doc.examples %} -

    Example

    +

    Examples

    {%- for example in doc.examples -%} {$ example | marked $} {%- endfor -%} diff --git a/docs/config/templates/ngdoc/lib/methods.template.html b/docs/config/templates/ngdoc/lib/methods.template.html index 49977b3eca6e..47aff128bd91 100644 --- a/docs/config/templates/ngdoc/lib/methods.template.html +++ b/docs/config/templates/ngdoc/lib/methods.template.html @@ -26,6 +26,13 @@

    Returns

    {$ lib.typeInfo(method.returns) $} {% endif %} + {%- if method.examples %} +

    Examples

    + {%- for example in method.examples -%} + {$ example | marked $} + {%- endfor -%} + {% endif -%} +
  • {% endfor -%} From 245b27101aad129061585252b73652054319ca82 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Fri, 2 Dec 2016 18:48:49 +0100 Subject: [PATCH 032/849] fix(ngOptions): don't add comment nodes as empty options When the "empty option" element contains a transclusion directive, the result of the compilation always includes a comment node. Since we are adding / removing the "selected" attribute on the empty option, we need to make sure it's an actual element. To solve this, we take advantage of the fact the each option element has an option directive that tries to register the option with the selectController. With ngOptions, this registerOption function is normally noop'd since it's not possible to add dynamic options. Now if the result of the empty option compilation is a comment, we re-define the function so that it catches empty options when they are actually linked / rendered. Closes #15454 Closes #15459 --- src/ng/directive/ngOptions.js | 33 ++++++++++- src/ng/directive/select.js | 19 ++++--- test/ng/directive/ngOptionsSpec.js | 90 ++++++++++++++++++++++++++++++ 3 files changed, 131 insertions(+), 11 deletions(-) diff --git a/src/ng/directive/ngOptions.js b/src/ng/directive/ngOptions.js index 8d562082f983..7265a1f6e892 100644 --- a/src/ng/directive/ngOptions.js +++ b/src/ng/directive/ngOptions.js @@ -420,6 +420,7 @@ var ngOptionsDirective = ['$compile', '$document', '$parse', function($compile, // option when the viewValue does not match any of the option values. for (var i = 0, children = selectElement.children(), ii = children.length; i < ii; i++) { if (children[i].value === '') { + selectCtrl.hasEmptyOption = true; selectCtrl.emptyOption = children.eq(i); break; } @@ -556,9 +557,35 @@ var ngOptionsDirective = ['$compile', '$document', '$parse', function($compile, // compile the element since there might be bindings in it $compile(selectCtrl.emptyOption)(scope); - // remove the class, which is added automatically because we recompile the element and it - // becomes the compilation root - selectCtrl.emptyOption.removeClass('ng-scope'); + if (selectCtrl.emptyOption[0].nodeType === NODE_TYPE_COMMENT) { + // This means the empty option has currently no actual DOM node, probably because + // it has been modified by a transclusion directive. + selectCtrl.hasEmptyOption = false; + + // Redefine the registerOption function, which will catch + // options that are added by ngIf etc. (rendering of the node is async because of + // lazy transclusion) + selectCtrl.registerOption = function(optionScope, optionEl) { + if (optionEl.val() === '') { + selectCtrl.hasEmptyOption = true; + selectCtrl.emptyOption = optionEl; + selectCtrl.emptyOption.removeClass('ng-scope'); + // This ensures the new empty option is selected if previously no option was selected + ngModelCtrl.$render(); + + optionEl.on('$destroy', function() { + selectCtrl.hasEmptyOption = false; + selectCtrl.emptyOption = undefined; + }); + } + }; + + } else { + // remove the class, which is added automatically because we recompile the element and it + // becomes the compilation root + selectCtrl.emptyOption.removeClass('ng-scope'); + } + } selectElement.empty(); diff --git a/src/ng/directive/select.js b/src/ng/directive/select.js index 34f7c8a2a853..20271e2077aa 100644 --- a/src/ng/directive/select.js +++ b/src/ng/directive/select.js @@ -32,6 +32,14 @@ var SelectController = // to create it in - From 752b1e69b7a8e9c0b908f1980e9c738888f3647c Mon Sep 17 00:00:00 2001 From: Georgios Kalpakas Date: Wed, 13 Jul 2016 15:30:32 +0300 Subject: [PATCH 034/849] fix($resource): allow params in `hostname` (except for IPv6 addresses) Support for IPv6 addresses (in b643f0d) was too aggressive and broke support for params in the `hostname` part of a URL. This commit restores support for params in the `hostname`, as long as it is not an IPv6 address. Fixes #14542 Closes #14906 --- src/ngResource/resource.js | 10 +++++----- test/ngResource/resourceSpec.js | 34 ++++++++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js index 5c875a97ce55..f9f33670bd04 100644 --- a/src/ngResource/resource.js +++ b/src/ngResource/resource.js @@ -430,7 +430,7 @@ function shallowClearAndCopy(src, dst) { */ angular.module('ngResource', ['ng']). provider('$resource', function ResourceProvider() { - var PROTOCOL_AND_DOMAIN_REGEX = /^https?:\/\/[^/]*/; + var PROTOCOL_AND_IPV6_REGEX = /^https?:\/\/\[[^\]]*][^/]*/; var provider = this; @@ -541,7 +541,7 @@ angular.module('ngResource', ['ng']). url = actionUrl || self.template, val, encodedVal, - protocolAndDomain = ''; + protocolAndIpv6 = ''; var urlParams = self.urlParams = Object.create(null); forEach(url.split(/\W/), function(param) { @@ -556,8 +556,8 @@ angular.module('ngResource', ['ng']). } }); url = url.replace(/\\:/g, ':'); - url = url.replace(PROTOCOL_AND_DOMAIN_REGEX, function(match) { - protocolAndDomain = match; + url = url.replace(PROTOCOL_AND_IPV6_REGEX, function(match) { + protocolAndIpv6 = match; return ''; }); @@ -594,7 +594,7 @@ angular.module('ngResource', ['ng']). // E.g. `http://url.com/id./format?q=x` becomes `http://url.com/id.format?q=x` url = url.replace(/\/\.(?=\w+($|\?))/, '.'); // replace escaped `/\.` with `/.` - config.url = protocolAndDomain + url.replace(/\/\\\./, '/.'); + config.url = protocolAndIpv6 + url.replace(/\/\\\./, '/.'); // set params - delegate param encoding to $http diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js index 41dc071b37a7..3e59ccb11fea 100644 --- a/test/ngResource/resourceSpec.js +++ b/test/ngResource/resourceSpec.js @@ -321,11 +321,35 @@ describe('basic usage', function() { }); it('should support IPv6 URLs', function() { - var R = $resource('http://[2620:0:861:ed1a::1]/:ed1a/', {}, {}, {stripTrailingSlashes: false}); - $httpBackend.expect('GET', 'http://[2620:0:861:ed1a::1]/foo/').respond({}); - $httpBackend.expect('GET', 'http://[2620:0:861:ed1a::1]/').respond({}); - R.get({ed1a: 'foo'}); - R.get({}); + test('http://[2620:0:861:ed1a::1]/', {ed1a: 'foo'}, 'http://[2620:0:861:ed1a::1]/'); + test('http://[2620:0:861:ed1a::1]/', {ed1a: 'foo'}, 'http://[2620:0:861:ed1a::1]/'); + test('http://[2620:0:861:ed1a::1]/:ed1a', {ed1a: 'foo'}, 'http://[2620:0:861:ed1a::1]/foo'); + test('http://[2620:0:861:ed1a::1]/:ed1a', {}, 'http://[2620:0:861:ed1a::1]/'); + test('http://[2620:0:861:ed1a::1]/:ed1a/', {ed1a: 'foo'}, 'http://[2620:0:861:ed1a::1]/foo/'); + test('http://[2620:0:861:ed1a::1]/:ed1a/', {}, 'http://[2620:0:861:ed1a::1]/'); + + // Helpers + function test(templateUrl, params, actualUrl) { + var R = $resource(templateUrl, null, null, {stripTrailingSlashes: false}); + $httpBackend.expect('GET', actualUrl).respond(null); + R.get(params); + } + }); + + it('should support params in the `hostname` part of the URL', function() { + test('http://:hostname', {hostname: 'foo.com'}, 'http://foo.com/'); + test('http://:hostname/', {hostname: 'foo.com'}, 'http://foo.com/'); + test('http://:l2Domain.:l1Domain', {l1Domain: 'com', l2Domain: 'bar'}, 'http://bar.com/'); + test('http://:l2Domain.:l1Domain/', {l1Domain: 'com', l2Domain: 'bar'}, 'http://bar.com/'); + test('http://127.0.0.:octet', {octet: 42}, 'http://127.0.0.42/'); + test('http://127.0.0.:octet/', {octet: 42}, 'http://127.0.0.42/'); + + // Helpers + function test(templateUrl, params, actualUrl) { + var R = $resource(templateUrl, null, null, {stripTrailingSlashes: false}); + $httpBackend.expect('GET', actualUrl).respond(null); + R.get(params); + } }); it('should support overriding provider default trailing-slash stripping configuration', function() { From 7a667c77e36f2b1738425a9cfb52d48bb9d8220f Mon Sep 17 00:00:00 2001 From: Georgios Kalpakas Date: Sat, 3 Dec 2016 22:48:24 +0200 Subject: [PATCH 035/849] fix(select): do not throw when removing the element (e.g. via `ngIf`) Fixes #15466 Closes #15468 --- src/ng/directive/select.js | 2 ++ test/ng/directive/selectSpec.js | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/ng/directive/select.js b/src/ng/directive/select.js index 20271e2077aa..55381ff72835 100644 --- a/src/ng/directive/select.js +++ b/src/ng/directive/select.js @@ -182,6 +182,8 @@ var SelectController = updateScheduled = true; $scope.$$postDigest(function() { + if ($scope.$$destroyed) return; + updateScheduled = false; self.ngModelCtrl.$setViewValue(self.readValue()); if (renderAfter) self.ngModelCtrl.$render(); diff --git a/test/ng/directive/selectSpec.js b/test/ng/directive/selectSpec.js index 51b093728fd6..6990cfeb9eb9 100644 --- a/test/ng/directive/selectSpec.js +++ b/test/ng/directive/selectSpec.js @@ -7,7 +7,7 @@ describe('select', function() { formElement = jqLite('
    ' + html + '
    '); element = formElement.find('select'); $compile(formElement)(scope); - scope.$apply(); + scope.$digest(); } function compileRepeatedOptions() { @@ -767,6 +767,20 @@ describe('select', function() { expect(element).toEqualSelect([unknownValue()], '1', '2', '3'); } ); + + + it('should not throw when removing the element and all its children', function() { + var template = + ''; + scope.visible = true; + + compile(template); + + // It should not throw when removing the element + scope.$apply('visible = false'); + }); }); From b4f5377a2f7590cbda7b1bf7448ce8836565dee2 Mon Sep 17 00:00:00 2001 From: Georgios Kalpakas Date: Wed, 7 Dec 2016 01:55:48 +0200 Subject: [PATCH 036/849] docs(guide/migration): fix typo --- docs/content/guide/migration.ngdoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/content/guide/migration.ngdoc b/docs/content/guide/migration.ngdoc index d140fe809186..3714583b6003 100644 --- a/docs/content/guide/migration.ngdoc +++ b/docs/content/guide/migration.ngdoc @@ -415,9 +415,9 @@ it back on, which should help during the migration. Pre-assigning bindings has b will be removed in a future version, so we strongly recommend migrating your applications to not rely on it as soon as possible. -Initialization logic that relies on relies on bindings being present should be put in the -controller's `$onInit()` method, which is guarranteed to always be called _after_ the bindings have -been assigned. +Initialization logic that relies on bindings being present should be put in the controller's +`$onInit()` method, which is guarranteed to always be called _after_ the bindings have been +assigned. Before: From fc89a85406f640146ef80d4953d60725b279b4f4 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Wed, 7 Dec 2016 10:50:24 +0000 Subject: [PATCH 037/849] chore(jenkins): fix yarn and grunt installation --- package.json | 3 ++- scripts/jenkins/build.sh | 10 +++++----- scripts/jenkins/init-node.sh | 5 +++-- scripts/jenkins/release.sh | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index d5f2336fed3f..3a3c83ed5c23 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "scripts": { "commit": "git-cz", "test-i18n": "jasmine-node i18n/spec", - "test-i18n-ucd": "jasmine-node i18n/ucd/spec" + "test-i18n-ucd": "jasmine-node i18n/ucd/spec", + "grunt": "grunt" }, "devDependencies": { "angular-benchpress": "0.x.x", diff --git a/scripts/jenkins/build.sh b/scripts/jenkins/build.sh index 16a12402efa7..91dc58dfe6eb 100755 --- a/scripts/jenkins/build.sh +++ b/scripts/jenkins/build.sh @@ -21,21 +21,21 @@ rm -f angular.js.size # BUILD # -grunt ci-checks package --no-color +yarn run grunt -- ci-checks package --no-color mkdir -p test_out # UNIT TESTS # -grunt test:unit --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color +yarn run grunt -- test:unit --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color # END TO END TESTS # -grunt test:ci-protractor +yarn run grunt -- test:ci-protractor # DOCS APP TESTS # -grunt test:docs --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color +yarn run grunt -- test:docs --browsers="$BROWSERS" --reporters=dots,junit --no-colors --no-color # Promises/A+ TESTS # -grunt test:promises-aplus --no-color +yarn run grunt -- test:promises-aplus --no-color # CHECK SIZE # diff --git a/scripts/jenkins/init-node.sh b/scripts/jenkins/init-node.sh index f27b84abd1d5..2f5306265e8f 100755 --- a/scripts/jenkins/init-node.sh +++ b/scripts/jenkins/init-node.sh @@ -9,9 +9,10 @@ nvm install # clean out and install yarn rm -rf ~/.yarn curl -o- -L https://raw.githubusercontent.com/yarnpkg/yarn/2a0afc73210c7a82082585283e518eeb88ca19ae/scripts/install-latest.sh | bash -s -- --version 0.17.9 +export PATH="$HOME/.yarn/bin:$PATH" -# Ensure we have the correct global grunt installed -yarn global add grunt-cli@1.2.0 --exact +echo testing grunt version +yarn run grunt -- --version # Ensure that we have the local dependencies installed yarn install \ No newline at end of file diff --git a/scripts/jenkins/release.sh b/scripts/jenkins/release.sh index bb738a20292d..0b076acbe753 100755 --- a/scripts/jenkins/release.sh +++ b/scripts/jenkins/release.sh @@ -38,7 +38,7 @@ function build { source ./init-node.sh cd ../.. - grunt ci-checks package --no-color + yarn run grunt -- ci-checks package --no-color cd $SCRIPT_DIR } From f727adddeb25e743c0e12068b4b8d68c806641aa Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Wed, 7 Dec 2016 11:51:59 +0000 Subject: [PATCH 038/849] docs(CHANGELOG): 1.6.0 release notes --- CHANGELOG.md | 1378 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1375 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index adf609f08382..a545f98ca61b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,1375 @@ + +# 1.6.0 XXXXX-YYYYY (2016-12-08) + +**Here are the full changes for the release of 1.6.0 that are not already released in the 1.5.x branch, +consolidating all the changes shown in the previous 1.6.0 release candidates.** + +## New Features +- **ngModelOptions:** allow options to be inherited from ancestor `ngModelOptions` + ([296cfc](https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa), + [#10922](https://github.com/angular/angular.js/issues/10922)) +- **$compile:** set `preAssignBindingsEnabled` to false by default + ([bcd0d4](https://github.com/angular/angular.js/commit/bcd0d4d896d0dfdd988ff4f849c1d40366125858), + [#15352](https://github.com/angular/angular.js/issues/15352)) +- **jqLite:** + - implement `jqLite(f)` as an alias to `jqLite(document).ready(f)` + ([369fb7](https://github.com/angular/angular.js/commit/369fb7f4f73664bcdab0350701552d8bef6f605e)) + - don't throw for elements with missing `getAttribute` + ([4e6c14](https://github.com/angular/angular.js/commit/4e6c14dcae4a9a30b3610a288ef8d20db47c4417)) + - don't remove a boolean attribute for `.attr(attrName, '')` + ([3faf45](https://github.com/angular/angular.js/commit/3faf4505732758165083c9d21de71fa9b6983f4a)) + - remove the attribute for `.attr(attribute, null)` + ([4e3624](https://github.com/angular/angular.js/commit/4e3624552284d0e725bf6262b2e468cd2c7682fa)) + - return `[]` for `.val()` on ` + + + +``` + +The migration strategy is to convert values that matched with non-strict +conversion so that they will match with strict conversion. + + +- **feat(ngModelOptions): allow options to be inherited from ancestor `ngModelOptions` + ([296cfc](https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa))**: + +The programmatic API for `ngModelOptions` has changed. You must now read options +via the `ngModelController.$options.getOption(name)` method, rather than accessing the +option directly as a property of the `ngModelContoller.$options` object. This does not +affect the usage in templates and only affects custom directives that might have been +reading options for their own purposes. + +One benefit of these changes, though, is that the `ngModelControler.$options` property +is now guaranteed to be defined so there is no need to check before accessing. + +So, previously: + +``` +var myOption = ngModelController.$options && ngModelController.$options['my-option']; +``` + +and now: + +``` +var myOption = ngModelController.$options.getOption('my-option'); +``` + +### **jqLite** due to: +- **[fc0c11](https://github.com/angular/angular.js/commit/fc0c11db845d53061430b7f05e773dcb3fb5b860)**: + camelCase keys in `jqLite#data` + +Previously, keys passed to the data method were left untouched. +Now they are internally camelCased similarly to how jQuery handles it, i.e. +only single (!) hyphens followed by a lowercase letter get converted to an +uppercase letter. This means keys `a-b` and `aB` represent the same data piece; +writing to one of them will also be reflected if you ask for the other one. + +If you use Angular with jQuery, it already behaved in this way so no changes +are required on your part. + +To migrate the code follow the examples below: + +BEFORE: + +```js +/* 1 */ +elem.data('my-key', 2); +elem.data('myKey', 3); + +/* 2 */ +elem.data('foo-bar', 42); +elem.data()['foo-bar']; // 42 +elem.data()['fooBar']; // undefined + +/* 3 */ +elem.data()['foo-bar'] = 1; +elem.data()['fooBar'] = 2; +elem.data('foo-bar'); // 1 +``` + +AFTER: + +```js +/* 1 */ +// Rename one of the keys as they would now map to the same data slot. +elem.data('my-key', 2); +elem.data('my-key2', 3); + +/* 2 */ +elem.data('foo-bar', 42); +elem.data()['foo-bar']; // undefined +elem.data()['fooBar']; // 42 + +/* 3 */ +elem.data()['foo-bar'] = 1; +elem.data()['fooBar'] = 2; +elem.data('foo-bar'); // 2 +``` + +- **[73050c](https://github.com/angular/angular.js/commit/73050cdda04675bfa6705dc841ddbbb6919eb048)**: + align jqLite camelCasing logic with JQuery + +Before, when Angular was used without jQuery, the key passed +to the css method was more heavily camelCased; now only a single (!) hyphen +followed by a lowercase letter is getting transformed. This also affects APIs +that rely on the css method, like ngStyle. + +If you use Angular with jQuery, it already behaved in this way so no changes +are needed on your part. + +To migrate the code follow the example below: + +Before: + +HTML: + +```html +// All five versions used to be equivalent. +
    +
    +
    +
    +
    +``` + +JS: + +```js +// All five versions used to be equivalent. +elem.css('background_color', 'blue'); +elem.css('background:color', 'blue'); +elem.css('background-color', 'blue'); +elem.css('background--color', 'blue'); +elem.css('backgroundColor', 'blue'); + +// All five versions used to be equivalent. +var bgColor = elem.css('background_color'); +var bgColor = elem.css('background:color'); +var bgColor = elem.css('background-color'); +var bgColor = elem.css('background--color'); +var bgColor = elem.css('backgroundColor'); +``` + +After: + +HTML: + +```html +// Previous five versions are no longer equivalent but these two still are. +
    +
    +``` + +JS: + +```js +// Previous five versions are no longer equivalent but these two still are. +elem.css('background-color', 'blue'); +elem.css('backgroundColor', 'blue'); + +// Previous five versions are no longer equivalent but these two still are. +var bgColor = elem.css('background-color'); +var bgColor = elem.css('backgroundColor'); +``` + +- **[3faf45](https://github.com/angular/angular.js/commit/3faf4505732758165083c9d21de71fa9b6983f4a)**: + don't remove a boolean attribute for `.attr(attrName, '')` + +Before, using the `attr` method with an empty string as a value +would remove the boolean attribute. Now it sets it to its lowercase name as +was happening for every non-empty string so far. The only two values that remove +the boolean attribute are now null & false, just like in jQuery. + +To migrate the code follow the example below: + +Before: + +```js +elem.attr(booleanAttrName, ''); +``` + +After: + +```js +elem.attr(booleanAttrName, false); +``` + +or: + +```js +elem.attr(booleanAttrName, null); +``` + +- **[4e3624](https://github.com/angular/angular.js/commit/4e3624552284d0e725bf6262b2e468cd2c7682fa)**: + remove the attribute for `.attr(attribute, null)` + +Invoking `elem.attr(attributeName, null)` would set the +`attributeName` attribute value to a string `"null"`, now it removes the +attribute instead. + +To migrate the code follow the example below: + +Before: + +```js +elem.attr(attributeName, null); +``` + +After: + +```js +elem.attr(attributeName, "null"); +``` + +- **[d882fd](https://github.com/angular/angular.js/commit/d882fde2e532216e7cf424495db1ccb5be1789f8)**: + return [] for .val() on ` + + + +``` + +JavaScript: + +```js + var value = $element.val(); + if (value) { + /* do something */ + } +``` + +After: + +HTML: + +```html + +``` + +JavaScript: + +```js + var value = $element.val(); + if (value.length > 0) { + /* do something */ + } +``` + + +### `ngModel` due to: + +- **[7bc71a](https://github.com/angular/angular.js/commit/7bc71adc63bb6bb609b44dd2d3ea8fb0cd3f300b)**: + treat synchronous validators as boolean always + +Previously, only a literal `false` return would resolve as the +synchronous validator failing. Now, all falsy JavaScript values +are treated as failing the validator, as one would naturally expect. + +Specifically, the values `0` (the number zero), `null`, `NaN` and `''` (the +empty string) used to be considered valid (passing) and they are now considered +invalid (failing). The value `undefined` was treated similarly to a pending +asynchronous validator, causing the validation to be pending. `undefined` is +also now considered invalid. + +To migrate, make sure your synchronous validators are returning either a +literal `true` or a literal `false` value. For most code, we expect this to +already be the case. Only a very small subset of projects will be affected. + +Namely, anyone using `undefined` or any falsy value as a return will now see +their validation failing, whereas previously falsy values other than `undefined` +would have been seen as passing and `undefined` would have been seen as pending. + +- **[9e24e7](https://github.com/angular/angular.js/commit/9e24e774a558143b3478536911a3a4c1714564ba)**: + change controllers to use prototype methods + +The use of prototype methods instead of new methods per instance removes the ability to pass +NgModelController and FormController methods without context. + +For example + +```js +$scope.$watch('something', myNgModelCtrl.$render) +``` + +will no longer work because the `$render` method is passed without any context. +This must now be replaced with + +```js +$scope.$watch('something', function() { + myNgModelCtrl.$render(); +}) +``` + +or possibly by using `Function.prototype.bind` or `angular.bind`. + + +### `aria/ngModel` due to: + +- **[975a61](https://github.com/angular/angular.js/commit/975a6170efceb2a5e6377c57329731c0636eb8c8)**: + do not overwrite the default `$isEmpty()` method for checkboxes + +Custom `checkbox`-shaped controls (e.g. checkboxes, menuitemcheckboxes), no longer have a custom +`$isEmpty()` method on their `NgModelController` that checks for `value === false`. Unless +overwritten, the default `$isEmpty()` method will be used, which treats `undefined`, `null`, `NaN` +and `''` as "empty". + +**Note:** The `$isEmpty()` method is used to determine if the checkbox is checked ("not empty" means + "checked") and thus it can indirectly affect other things, such as the control's validity + with respect to the `required` validator (e.g. "empty" + "required" --> "invalid"). + +Before: + +```js +var template = ''; +var customCheckbox = $compile(template)(scope); +var ctrl = customCheckbox.controller('ngModel'); + +scope.$apply('value = false'); +console.log(ctrl.$isEmpty()); //--> true + +scope.$apply('value = true'); +console.log(ctrl.$isEmpty()); //--> false + +scope.$apply('value = undefined'/* or null or NaN or '' */); +console.log(ctrl.$isEmpty()); //--> false +``` + +After: + +```js +var template = ''; +var customCheckbox = $compile(template)(scope); +var ctrl = customCheckbox.controller('ngModel'); + +scope.$apply('value = false'); +console.log(ctrl.$isEmpty()); //--> false + +scope.$apply('value = true'); +console.log(ctrl.$isEmpty()); //--> false + +scope.$apply('value = undefined'/* or null or NaN or '' */); +console.log(ctrl.$isEmpty()); //--> true +``` + +-- +If you want to have a custom `$isEmpty()` method, you need to overwrite the default. For example: + +```js +.directive('myCheckbox', function myCheckboxDirective() { + return { + require: 'ngModel', + link: function myCheckboxPostLink(scope, elem, attrs, ngModelCtrl) { + ngModelCtrl.$isEmpty = function myCheckboxIsEmpty(value) { + return !value; // Any falsy value means "empty" + + // Or to restore the previous behavior: + // return value === false; + }; + } + }; +}) +``` + +### `$http` due to: +- **[b54a39](https://github.com/angular/angular.js/commit/b54a39e2029005e0572fbd2ac0e8f6a4e5d69014)**: + remove deprecated callback methods: `success()/error()` + +`$http`'s deprecated custom callback methods - `success()` and `error()` - have been removed. +You can use the standard `then()`/`catch()` promise methods instead, but note that the method +signatures and return values are different. + +`success(fn)` can be replaced with `then(fn)`, and `error(fn)` can be replaced with either +`then(null, fn)` or `catch(fn)`. + +Before: + +```js +$http(...). + success(function onSuccess(data, status, headers, config) { + // Handle success + ... + }). + error(function onError(data, status, headers, config) { + // Handle error + ... + }); +``` + +After: + +```js +$http(...). + then(function onSuccess(response) { + // Handle success + var data = response.data; + var status = response.status; + var statusText = response.statusText; + var headers = response.headers; + var config = response.config; + ... + }, function onError(response) { + // Handle error + var data = response.data; + var status = response.status; + var statusText = response.statusText; + var headers = response.headers; + var config = response.config; + ... + }); + +// or + +$http(...). + then(function onSuccess(response) { + // Handle success + var data = response.data; + var status = response.status; + var statusText = response.statusText; + var headers = response.headers; + var config = response.config; + ... + }). + catch(function onError(response) { + // Handle error + var data = response.data; + var status = response.status; + var statusText = response.statusText; + var headers = response.headers; + var config = response.config; + ... + }); +``` + +**Note:** +There is a subtle difference between the variations showed above. When using +`$http(...).success(onSuccess).error(onError)` or `$http(...).then(onSuccess, onError)`, the +`onError()` callback will only handle errors/rejections produced by the `$http()` call. If the +`onSuccess()` callback produces an error/rejection, it won't be handled by `onError()` and might go +unnoticed. In contrast, when using `$http(...).then(onSuccess).catch(onError)`, `onError()` will +handle errors/rejections produced by both `$http()` _and_ `onSuccess()`. + +- **[fb6634](https://github.com/angular/angular.js/commit/fb663418710736161a6b5da49c345e92edf58dcb)**: + JSONP callback must be specified by `jsonpCallbackParam` config + +You can no longer use the `JSON_CALLBACK` placeholder in your JSONP requests. +Instead you must provide the name of the query parameter that will pass the +callback via the `jsonpCallbackParam` property of the config object, or app-wide via +the `$http.defaults.jsonpCallbackParam` property, which is `"callback"` by default. + +Before this change: + +```js +$http.json('trusted/url?callback=JSON_CALLBACK'); +$http.json('other/trusted/url', {params: {cb:'JSON_CALLBACK'}}); +``` + +After this change: + +```js +$http.json('trusted/url'); +$http.json('other/trusted/url', {jsonpCallbackParam:'cb'}); +``` + +- **[6476af](https://github.com/angular/angular.js/commit/6476af83cd0418c84e034a955b12a842794385c4)**: + JSONP requests now require a trusted resource URL + +All JSONP requests now require the URL to be trusted as resource URLs. +There are two approaches to trust a URL: + +**Whitelisting with the `$sceDelegateProvider.resourceUrlWhitelist()` +method.** + +You configure this list in a module configuration block: + +```js +appModule.config(['$sceDelegateProvider', function($sceDelegateProvider) { + $sceDelegateProvider.resourceUrlWhiteList([ + // Allow same origin resource loads. + 'self', + // Allow JSONP calls that match this pattern + 'https://some.dataserver.com/**.jsonp?**' + ]); +}]); +``` + +**Explicitly trusting the URL via the `$sce.trustAsResourceUrl(url)` +method.** + +You can pass a trusted object instead of a string as a URL to the `$http` +service: + +```js +var promise = $http.jsonp($sce.trustAsResourceUrl(url)); +``` + +- **[4f6f2b](https://github.com/angular/angular.js/commit/4f6f2bce4ac93b85320e42e5023c09d099779b7d)**: + properly increment/decrement `$browser.outstandingRequestCount` + +HTTP requests now update the outstanding request count synchronously. +Previously the request count would not have been updated until the +request to the server is actually in flight. Now the request count is +updated before the async interceptor is called. + +The new behaviour is correct but it may change the expected behaviour in +a small number of e2e test cases where an async request interceptor is +being used. + + +### `$q` due to: + +- **[e13eea](https://github.com/angular/angular.js/commit/e13eeabd7e34a78becec06cfbe72c23f2dcb85f9)**: + treat thrown errors as regular rejections + +Previously, throwing an error from a promise's `onFulfilled` or `onRejection` handlers, would result +in passing the error to the `$exceptionHandler()` (in addition to rejecting the promise with the +error as reason). + +Now, a thrown error is treated exactly the same as a regular rejection. This applies to all +services/controllers/filters etc that rely on `$q` (including built-in services, such as `$http` and +`$route`). For example, `$http`'s `transformRequest/Response` functions or a route's `redirectTo` +function as well as functions specified in a route's `resolve` object, will no longer result in a +call to `$exceptionHandler()` if they throw an error. Other than that, everything will continue to +behave in the same way; i.e. the promises will be rejected, route transition will be cancelled, +`$routeChangeError` events will be broadcasted etc. + +- **[c9dffd](https://github.com/angular/angular.js/commit/c9dffde1cb167660120753181cb6d01dc1d1b3d0)**: + report promises with non rejection callback + +Unhandled rejected promises will be logged to $exceptionHandler. + +Tests that depend on specific order or number of messages in $exceptionHandler +will need to handle rejected promises report. + + +### `ngTransclude` due to: + +- **[32aa7e](https://github.com/angular/angular.js/commit/32aa7e7395527624119e3917c54ee43b4d219301)**: + use fallback content if only whitespace is provided + +Previously whitespace only transclusion would be treated as the transclusion +being "not empty", which meant that fallback content was not used in that +case. + +Now if you only provide whitespace as the transclusion content, it will be +assumed to be empty and the fallback content will be used instead. + +If you really do want whitespace then you can force it to be used by adding +a comment to the whitespace. + +Previously this would not fallback to default content: + +```html + + +``` + +Now the whitespace between the opening and closing tags is treated as empty. To force the +previous behaviour simply add a comment: + +```html + + +``` + + +### `$compile` due to: + +- **[13c252](https://github.com/angular/angular.js/commit/13c2522baf7c8f616b2efcaab4bffd54c8736591)**: + correctly merge consecutive text nodes on IE11 + +**Note:** Everything described below affects **IE11 only**. + +Previously, consecutive text nodes would not get merged if they had no parent. They will now, which +might have unexpectd side effects in the following cases: + +1. Passing an array or jqLite/jQuery collection of parent-less text nodes to `$compile` directly: + + ```js + // Assuming: + var textNodes = [ + document.createTextNode('{{'), + document.createTextNode('"foo:"'), + document.createTextNode('}}') + ]; + var compiledNodes = $compile(textNodes)($rootScope); + + // Before: + console.log(compiledNodes.length); // 3 + console.log(compiledNodes.text()); // {{'foo'}} + + // After: + console.log(compiledNodes.length); // 1 + console.log(compiledNodes.text()); // foo + + // To get the old behavior, compile each node separately: + var textNodes = [ + document.createTextNode('{{'), + document.createTextNode('"foo"'), + document.createTextNode('}}') + ]; + var compiledNodes = angular.element(textNodes.map(function (node) { + return $compile(node)($rootScope)[0]; + })); + ``` + +2. Using multi-slot transclusion with non-consecutive, default-content text nodes (that form + interpolated expressions when merged): + + ```js + // Assuming the following component: + .component('someThing', { + template: '' + transclude: { + ignored: 'veryImportantContent' + } + }) + ``` + + ```html + + + {{ + Nooot + 'foo'}} + + + + + + {{ <-- Two separate + 'foo'}} <-- text nodes + + + + + + + foo <-- The text nodes were merged into `{{'foo'}}`, which was then interpolated + + + + + + + {{ + Nooot + 'foo'}} + + + + + + {{ <-- Two separate + 'foo'}} <-- nodes + + + ``` + +- **[b89c21](https://github.com/angular/angular.js/commit/b89c2181a9a165e06c027390164e08635ec449f4)**: + move check for interpolation of `on-"event"` attributes to compile time + +Using interpolation in any on* event attributes (e.g. ` ``` -For this reason, Angular provides special `ng`-prefixed directives for the following boolean attributes: +For this reason, AngularJS provides special `ng`-prefixed directives for the following boolean attributes: {@link ngDisabled `disabled`}, {@link ngRequired `required`}, {@link ngSelected `selected`}, {@link ngChecked `checked`}, {@link ngReadonly `readOnly`} , and {@link ngOpen `open`}. @@ -75,7 +75,7 @@ For example, considering this template: ``` -We would expect Angular to be able to bind to this, but when we check the console we see +We would expect AngularJS to be able to bind to this, but when we check the console we see something like `Error: Invalid value for attribute cx="{{cx}}"`. Because of the SVG DOM API's restrictions, you cannot simply write `cx="{{cx}}"`. @@ -131,7 +131,7 @@ directive that changes the content of that attribute, such as `ngStyle`. ### Embedding interpolation markup inside expressions
    -**Note:** Angular directive attributes take either expressions *or* interpolation markup with embedded expressions. +**Note:** AngularJS directive attributes take either expressions *or* interpolation markup with embedded expressions. It is considered **bad practice** to embed interpolation markup inside an expression:
    @@ -165,4 +165,4 @@ If another directive accesses attribute data before interpolation has run, it wi interpolation markup and not data. - It impacts performance, as interpolation adds another watcher to the scope. - Since this is not recommended usage, we do not test for this, and changes to -Angular core may break your code. +AngularJS core may break your code. diff --git a/docs/content/guide/introduction.ngdoc b/docs/content/guide/introduction.ngdoc index 0772ef851916..05704e5302f6 100644 --- a/docs/content/guide/introduction.ngdoc +++ b/docs/content/guide/introduction.ngdoc @@ -4,15 +4,15 @@ @description -# What Is Angular? +# What Is AngularJS? AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your template language and lets you extend HTML's syntax to express your application's components clearly and -succinctly. Angular's data binding and dependency injection eliminate much of the code you +succinctly. AngularJS's data binding and dependency injection eliminate much of the code you would otherwise have to write. And it all happens within the browser, making it an ideal partner with any server technology. -Angular is what HTML would have been, had it been designed for applications. HTML is a great +AngularJS is what HTML would have been, had it been designed for applications. HTML is a great declarative language for static documents. It does not contain much in the way of creating applications, and as a result building web applications is an exercise in *what do I have to do to trick the browser into doing what I want?* @@ -26,8 +26,8 @@ The impedance mismatch between dynamic applications and static documents is ofte app specific. E.g., `durandal`, `ember`, etc. -Angular takes another approach. It attempts to minimize the impedance mismatch between document -centric HTML and what an application needs by creating new HTML constructs. Angular teaches the +AngularJS takes another approach. It attempts to minimize the impedance mismatch between document +centric HTML and what an application needs by creating new HTML constructs. AngularJS teaches the browser new syntax through a construct we call *directives*. Examples include: * Data binding, as in `{{}}`. @@ -40,11 +40,11 @@ browser new syntax through a construct we call *directives*. Examples include: ## A complete client-side solution -Angular is not a single piece in the overall puzzle of building the client-side of a web +AngularJS is not a single piece in the overall puzzle of building the client-side of a web application. It handles all of the DOM and AJAX glue code you once wrote by hand and puts it in a -well-defined structure. This makes Angular opinionated about how a CRUD (Create, Read, Update, Delete) -application should be built. But while it is opinionated, it also tries to make sure that its opinion -is just a starting point you can easily change. Angular comes with the following out-of-the-box: +well-defined structure. This makes AngularJS opinionated about how a CRUD (Create, Read, Update, Delete) +application should be built. But while it is opinionated, it also tries to make sure that its opinion +is just a starting point you can easily change. AngularJS comes with the following out-of-the-box: * Everything you need to build a CRUD app in a cohesive set: Data-binding, basic templating directives, form validation, routing, deep-linking, reusable components and dependency injection. @@ -52,21 +52,21 @@ is just a starting point you can easily change. Angular comes with the following * Seed application with directory layout and test scripts as a starting point. -## Angular's sweet spot +## AngularJS's sweet spot -Angular simplifies application development by presenting a higher level of abstraction to the +AngularJS simplifies application development by presenting a higher level of abstraction to the developer. Like any abstraction, it comes at a cost of flexibility. In other words, not every app -is a good fit for Angular. Angular was built with the CRUD application in mind. Luckily CRUD -applications represent the majority of web applications. To understand what Angular is -good at, though, it helps to understand when an app is not a good fit for Angular. +is a good fit for AngularJS. AngularJS was built with the CRUD application in mind. Luckily CRUD +applications represent the majority of web applications. To understand what AngularJS is +good at, though, it helps to understand when an app is not a good fit for AngularJS. Games and GUI editors are examples of applications with intensive and tricky DOM manipulation. -These kinds of apps are different from CRUD apps, and as a result are probably not a good fit for Angular. +These kinds of apps are different from CRUD apps, and as a result are probably not a good fit for AngularJS. In these cases it may be better to use a library with a lower level of abstraction, such as `jQuery`. -# The Zen of Angular +# The Zen of AngularJS -Angular is built around the belief that declarative code is better than imperative when it comes +AngularJS is built around the belief that declarative code is better than imperative when it comes to building UIs and wiring software components together, while imperative code is excellent for expressing business logic. @@ -83,7 +83,7 @@ expressing business logic. -Angular frees you from the following pains: +AngularJS frees you from the following pains: * **Registering callbacks:** Registering callbacks clutters your code, making it hard to see the forest for the trees. Removing common boilerplate code such as callbacks is a good thing. It @@ -92,16 +92,16 @@ Angular frees you from the following pains: * **Manipulating HTML DOM programmatically:** Manipulating HTML DOM is a cornerstone of AJAX applications, but it's cumbersome and error-prone. By declaratively describing how the UI should change as your application state changes, you are freed from low-level DOM manipulation - tasks. Most applications written with Angular never have to programmatically manipulate the + tasks. Most applications written with AngularJS never have to programmatically manipulate the DOM, although you can if you want to. * **Marshaling data to and from the UI:** CRUD operations make up the majority of AJAX applications' tasks. The flow of marshaling data from the server to an internal object to an HTML form, allowing users to modify the form, validating the form, displaying validation errors, returning to an internal model, and then back to the server, creates a lot of boilerplate - code. Angular eliminates almost all of this boilerplate, leaving code that describes the + code. AngularJS eliminates almost all of this boilerplate, leaving code that describes the overall flow of the application rather than all of the implementation details. * **Writing tons of initialization code just to get started:** Typically you need to write a lot - of plumbing just to get a basic "Hello World" AJAX app working. With Angular you can bootstrap + of plumbing just to get a basic "Hello World" AJAX app working. With AngularJS you can bootstrap your app easily using services, which are auto-injected into your application in a [Guice](https://github.com/google/guice)-like dependency-injection style. This allows you to get started developing features quickly. As a bonus, you get full control over the diff --git a/docs/content/guide/migration.ngdoc b/docs/content/guide/migration.ngdoc index faec2dedf32a..69f164bfaf70 100644 --- a/docs/content/guide/migration.ngdoc +++ b/docs/content/guide/migration.ngdoc @@ -33,7 +33,7 @@ which drives many of these changes. ## Migrating from 1.5 to 1.6 -Angular 1.6 fixes numerous bugs and adds new features, both in core and in external modules. +AngularJS 1.6 fixes numerous bugs and adds new features, both in core and in external modules. In addition, it includes several security and performance improvements in commonly used services, such as `$compile`, `$injector`, `$parse`, `$animate`, and directives, such as `input`, `ngModel` and `select`. @@ -611,7 +611,7 @@ HTTP requests now update the outstanding request count synchronously. Previously would not have been updated until the request to the server was actually in flight. Now the request count is updated before any async interceptor is called. -The new behavior will also allow end-2-end tests to more correctly detect when Angular is stable, +The new behavior will also allow end-2-end tests to more correctly detect when AngularJS is stable, but there is a chance it may change the observed behaviour in cases where an async request interceptor is being used. @@ -824,11 +824,11 @@ elem.data('foo-bar'); // 2 **Due to [73050c](https://github.com/angular/angular.js/commit/73050cdda04675bfa6705dc841ddbbb6919eb048)**, the way jqLite camelCases keys passed to `.css()` is aligned with jQuery. Previously, when using -Angular without jQuery, `.css()` would camelCase keys more aggressively. Now, only a single hyphen +AngularJS without jQuery, `.css()` would camelCase keys more aggressively. Now, only a single hyphen followed by a lowercase letter is getting transformed. This change also affects other APIs that rely on the `.css()` method, such as `ngStyle`. -If you are using Angular with jQuery, your application is not affected by this change. If you are +If you are using AngularJS with jQuery, your application is not affected by this change. If you are not using jQuery, then you need to update your code as shown in the following examples: Before: @@ -888,7 +888,7 @@ var bgColor = elem.css('backgroundColor'); getting/setting boolean attributes will no longer take the corresponding properties into account. Previously, all boolean attributes were reflected into the corresponding property when calling a setter and from the corresponding property when calling a getter, even on elements that don't treat -those attributes in a special way. Now Angular doesn't do it by itself, but relies on browsers to +those attributes in a special way. Now AngularJS doesn't do it by itself, but relies on browsers to know when to reflect the property. Note that this browser-level conversion differs between browsers; if you need to dynamically change the state of an element, you should modify the property, not the attribute. See https://jquery.com/upgrade-guide/1.9/#attr-versus-prop- for a more detailed @@ -1237,10 +1237,10 @@ the `$route` service will no longer instantiate controllers nor call `resolve` o ## Migrating from 1.4 to 1.5 -Angular 1.5 takes a big step towards preparing developers for a smoother transition to Angular 2 in +AngularJS 1.5 takes a big step towards preparing developers for a smoother transition to Angular in the future. Architecting your applications using components, multi-slot transclusion, one-way bindings in isolate scopes, using lifecycle hooks in directive controllers and relying on native ES6 -features (such as classes and arrow functions) are now all possible with Angular 1.5. +features (such as classes and arrow functions) are now all possible with AngularJS 1.5. This release includes numerous bug and security fixes, as well as performance improvements to core @@ -1252,7 +1252,7 @@ New features have been added to more than a dozen services, directives and filte Among them, a few stand out: * `angular.component()`: Introducing "components", a special sort of directive that are easy to - configure and promote best practices (plus can bring Angular 1 applications closer to Angular 2's + configure and promote best practices (plus can bring AngularJS applications closer to Angular's style of architecture). * Multi-slot transclusion: Enabling the design of more powerful and complex UI elements with a much simpler configuration and reduced boilerplate. @@ -1430,7 +1430,7 @@ angular.module('myApp').config(function($touchProvider) { ``` Going forward, we recommend using [FastClick](https://github.com/ftlabs/fastclick) or perhaps one of -the [Angular 3rd party touch-related modules](http://ngmodules.org/tags/touch) that provide similar +the [AngularJS 3rd party touch-related modules](http://ngmodules.org/tags/touch) that provide similar functionality. Also note that modern browsers already remove the 300ms delay under some circumstances: @@ -1454,7 +1454,7 @@ For more info on the topic, you can take a look at this ## Migrating from 1.3 to 1.4 -Angular 1.4 fixes major animation issues and introduces a new API for `ngCookies`. Further, there +AngularJS 1.4 fixes major animation issues and introduces a new API for `ngCookies`. Further, there are changes to `ngMessages`, `$compile`, `ngRepeat`, `ngOptions `and some fixes to core filters: `limitTo` and `filter`. @@ -1490,7 +1490,7 @@ possibilities, can be achieved by injecting `$animateCss` into a JavaScript-defined animation and creating custom CSS-based animations from there. -By using `$animateCss` inside of a JavaScript animation in Angular 1.4, we can trigger custom CSS-based animations +By using `$animateCss` inside of a JavaScript animation in AngularJS 1.4, we can trigger custom CSS-based animations directly from our JavaScript code. ```js @@ -1659,7 +1659,7 @@ the `select` directive will now use strict comparison of the `ngModel` scope val values to determine which option is selected. This means non-string scope values (such as `Number` or `Boolean`) will not be matched against equivalent option strings (such as the strings `"123"`, `"true"` or `"false"`). -In Angular 1.3.x, setting `scope.x = 200` would select the option with the value 200 in the following `select`: +In AngularJS 1.3.x, setting `scope.x = 200` would select the option with the value 200 in the following `select`: ``` ``` -In Angular 1.4.x, the 'unknown option' will be selected. +In AngularJS 1.4.x, the 'unknown option' will be selected. To remedy this, you can initialize the model as a string: `scope.x = '200'`, or if you want to keep the model as a `Number`, you can do the conversion via `$formatters` and `$parsers` on `ngModel`: @@ -1688,11 +1688,11 @@ ngModelCtrl.$formatters.push(function(value) { Due to [94533e57](https://github.com/angular/angular.js/commit/94533e570673e6b2eb92073955541fa289aabe02), the `name` attribute of `form` elements can now only contain characters that can be evaluated as part -of an Angular expression. This is because Angular uses the value of `name` as an assignable expression +of an AngularJS expression. This is because AngularJS uses the value of `name` as an assignable expression to set the form on the `$scope`. For example, `name="myForm"` assigns the form to `$scope.myForm` and `name="myObj.myForm"` assigns it to `$scope.myObj.myForm`. -Previously, it was possible to also use names such `name="my:name"`, because Angular used a special setter +Previously, it was possible to also use names such `name="my:name"`, because AngularJS used a special setter function for the form name. Now the general, more robust `$parse` setter is used. The easiest way to migrate your code is therefore to remove all special characters from the `name` attribute. @@ -1920,30 +1920,30 @@ angular.module('myModule').config(['$controllerProvider', function($controllerPr }]); ``` -### Angular Expression Parsing (`$parse` + `$interpolate`) +### AngularJS Expression Parsing (`$parse` + `$interpolate`) - due to [77ada4c8](https://github.com/angular/angular.js/commit/77ada4c82d6b8fc6d977c26f3cdb48c2f5fbe5a5), -You can no longer invoke .bind, .call or .apply on a function in angular expressions. +You can no longer invoke .bind, .call or .apply on a function in AngularJS expressions. This is to disallow changing the behaviour of existing functions in an unforeseen fashion. - due to [6081f207](https://github.com/angular/angular.js/commit/6081f20769e64a800ee8075c168412b21f026d99), -The (deprecated) __proto__ property does not work inside angular expressions +The (deprecated) __proto__ property does not work inside AngularJS expressions anymore. - due to [48fa3aad](https://github.com/angular/angular.js/commit/48fa3aadd546036c7e69f71046f659ab1de244c6), -This prevents the use of __{define,lookup}{Getter,Setter}__ inside angular +This prevents the use of __{define,lookup}{Getter,Setter}__ inside AngularJS expressions. If you really need them for some reason, please wrap/bind them to make them less dangerous, then make them available through the scope object. - due to [528be29d](https://github.com/angular/angular.js/commit/528be29d1662122a34e204dd607e1c0bd9c16bbc), -This prevents the use of `Object` inside angular expressions. +This prevents the use of `Object` inside AngularJS expressions. If you need Object.keys, make it accessible in the scope. @@ -1978,7 +1978,7 @@ expression parser; there are six of them: false, null, undefined, NaN, 0 and "". -### Miscellaneous Angular helpers +### Miscellaneous AngularJS helpers - **Angular.copy:** due to [b59b04f9](https://github.com/angular/angular.js/commit/b59b04f98a0b59eead53f6a53391ce1bbcbe9b57), @@ -2026,13 +2026,13 @@ jQuery. We don't expect that app code actually depends on this accidental featur - **jqLite:** due to [d71dbb1a](https://github.com/angular/angular.js/commit/d71dbb1ae50f174680533492ce4c7db3ff74df00), the jQuery `detach()` method does not trigger the `$destroy` event. - If you want to destroy Angular data attached to the element, use `remove()`. + If you want to destroy AngularJS data attached to the element, use `remove()`. -### Angular HTML Compiler (`$compile`) +### AngularJS HTML Compiler (`$compile`) - due to [2ee29c5d](https://github.com/angular/angular.js/commit/2ee29c5da81ffacdc1cabb438f5d125d5e116cb9), @@ -2060,7 +2060,7 @@ to request both an isolate and a non-isolate scope and fix your code. - due to [eec6394a](https://github.com/angular/angular.js/commit/eec6394a342fb92fba5270eee11c83f1d895e9fb), The `replace` flag for defining directives that - replace the element that they are on will be removed in the next major angular version. + replace the element that they are on will be removed in the next major AngularJS version. This feature has difficult semantics (e.g. how attributes are merged) and leads to more problems compared to what it solves. Also, with Web Components it is normal to have custom elements in the DOM. @@ -2283,7 +2283,7 @@ More details on the new interceptors API (which has been around as of v1.1.4) ca - **$httpBackend:** due to [6680b7b9](https://github.com/angular/angular.js/commit/6680b7b97c0326a80bdccaf0a35031e4af641e0e), the JSONP behavior for erroneous and empty responses changed: - Previously, a JSONP response was regarded as erroneous if it was empty. Now Angular is listening to the + Previously, a JSONP response was regarded as erroneous if it was empty. Now AngularJS is listening to the correct events to detect errors, i.e. even empty responses can be successful. @@ -2577,7 +2577,7 @@ See [04cebcc1](https://github.com/angular/angular.js/commit/04cebcc133c8b433a3ac With the exception of `` and `` elements, you cannot bind more than one expression to the `src` or `action` attribute of elements. -This is one of several improvements to security introduces by Angular 1.2. +This is one of several improvements to security introduces by AngularJS 1.2. Concatenating expressions makes it hard to understand whether some combination of concatenated values are unsafe to use and potentially subject to XSS vulnerabilities. To simplify the task of @@ -2652,7 +2652,7 @@ See [38deedd6](https://github.com/angular/angular.js/commit/38deedd6e3d806eb8262 DOM event handlers execute arbitrary JavaScript code. Using an interpolation for such handlers means that the interpolated value is a JS string that is evaluated. Storing or generating such strings is error prone and leads to XSS vulnerabilities. On the other hand, `ngClick` and other -Angular specific event handlers evaluate Angular expressions in non-window (Scope) context which +AngularJS specific event handlers evaluate AngularJS expressions in non-window (Scope) context which makes them much safer. To migrate the code follow the example below: @@ -2979,7 +2979,7 @@ See [1adf29af](https://github.com/angular/angular.js/commit/1adf29af13890d612868 ### Isolate scope only exposed to directives with `scope` property If you declare a scope option on a directive, that directive will have an -[isolate scope](https://github.com/angular/angular.js/wiki/Understanding-Scopes). In Angular 1.0, if a +[isolate scope](https://github.com/angular/angular.js/wiki/Understanding-Scopes). In AngularJS 1.0, if a directive with an isolate scope is used on an element, all directives on that same element have access to the same isolate scope. For example, say we have the following directives: @@ -3010,12 +3010,12 @@ Now what happens if we use both directives on the same element?
    ``` -In Angular 1.0, the nonIsolateScope directive will have access to the isolateScope directive’s scope. The -log statements will print the same id, because the scope is the same. But in Angular 1.2, the nonIsolateScope +In AngularJS 1.0, the nonIsolateScope directive will have access to the isolateScope directive’s scope. The +log statements will print the same id, because the scope is the same. But in AngularJS 1.2, the nonIsolateScope will not use the same scope as isolateScope. Instead, it will inherit the parent scope. The log statements will print different id’s. -If your code depends on the Angular 1.0 behavior (non-isolate directive needs to access state +If your code depends on the AngularJS 1.0 behavior (non-isolate directive needs to access state from within the isolate scope), change the isolate directive to use scope locals to pass these explicitly: **Before** @@ -3070,13 +3070,13 @@ See [79223eae](https://github.com/angular/angular.js/commit/79223eae502283889334 This change introduces the notion of "private" properties (properties whose names begin and/or end with an underscore) on the scope chain. -These properties will not be available to Angular expressions (i.e. {{ +These properties will not be available to AngularJS expressions (i.e. {{ }} interpolation in templates and strings passed to `$parse`) They are freely available to JavaScript code (as before). **Motivation** -Angular expressions execute in a limited context. They do not have +AngularJS expressions execute in a limited context. They do not have direct access to the global scope, `window`, `document` or the Function constructor. However, they have direct access to names/properties on the scope chain. It has been a long standing best practice to keep @@ -3085,17 +3085,17 @@ controller.) That's easier said than done for two reasons: 1. JavaScript does not have a notion of private properties so if you need someone on the scope chain for JavaScript use, you also expose it to -Angular expressions +AngularJS expressions 2. The new `controller as` syntax that's now in increased usage exposes the entire controller on the scope chain greatly increasing the exposed surface. -Though Angular expressions are written and controlled by the developer, they: +Though AngularJS expressions are written and controlled by the developer, they: 1. Typically deal with user input 2. Don't get the kind of test coverage that JavaScript code would This commit provides a way, via a naming convention, to allow restricting properties from -controllers/scopes. This means Angular expressions can access only those properties that +controllers/scopes. This means AngularJS expressions can access only those properties that are actually needed by the expressions. See [3d6a89e8](https://github.com/angular/angular.js/commit/3d6a89e8888b14ae5cb5640464e12b7811853c7e). @@ -3114,7 +3114,7 @@ See [d87fa004](https://github.com/angular/angular.js/commit/d87fa0042375b025b98c ### Uncommon region-specific local files were removed from i18n AngularJS uses the Google Closure library's locale files. The following locales were removed from -Closure, so Angular is not able to continue to support them: +Closure, so AngularJS is not able to continue to support them: `chr`, `cy`, `el-polyton`, `en-zz`, `fr-rw`, `fr-sn`, `fr-td`, `fr-tg`, `haw`, `it-ch`, `ln-cg`, `mo`, `ms-bn`, `nl-aw`, `nl-be`, `pt-ao`, `pt-gw`, `pt-mz`, `pt-st`, `ro-md`, `ru-md`, `ru-ua`, diff --git a/docs/content/guide/module.ngdoc b/docs/content/guide/module.ngdoc index 62ab1c51f73f..359dd19cca8a 100644 --- a/docs/content/guide/module.ngdoc +++ b/docs/content/guide/module.ngdoc @@ -13,7 +13,7 @@ services, filters, directives, etc. Most applications have a main method that instantiates and wires together the different parts of the application. -Angular apps don't have a main method. Instead modules declaratively specify how an application +AngularJS apps don't have a main method. Instead modules declaratively specify how an application should be bootstrapped. There are several advantages to this approach: * The declarative process is easier to understand. @@ -189,13 +189,13 @@ angular.module('myModule', []). ```
    -When bootstrapping, first Angular applies all constant definitions. -Then Angular applies configuration blocks in the same order they were registered. +When bootstrapping, first AngularJS applies all constant definitions. +Then AngularJS applies configuration blocks in the same order they were registered.
    ## Run Blocks -Run blocks are the closest thing in Angular to the main method. A run block is the code which +Run blocks are the closest thing in AngularJS to the main method. A run block is the code which needs to run to kickstart the application. It is executed after all of the services have been configured and the injector has been created. Run blocks typically contain code which is hard to unit-test, and for this reason should be declared in isolated modules, so that they can be @@ -213,7 +213,7 @@ modules require it. Modules are a way of managing $injector configuration, and have nothing to do with loading of scripts into a VM. There are existing projects which deal with script loading, which may be used -with Angular. Because modules do nothing at load time they can be loaded into the VM in any order +with AngularJS. Because modules do nothing at load time they can be loaded into the VM in any order and thus script loaders can take advantage of this property and parallelize the loading process. ## Creation versus Retrieval @@ -242,7 +242,7 @@ Small, structured modules help keep unit tests concise and focused.
    Each module can only be loaded once per injector. -Usually an Angular app has only one injector and modules are only loaded once. +Usually an AngularJS app has only one injector and modules are only loaded once. Each test has its own injector and modules are loaded multiple times.
    diff --git a/docs/content/guide/production.ngdoc b/docs/content/guide/production.ngdoc index 7b09d97e59cd..10621884bf39 100644 --- a/docs/content/guide/production.ngdoc +++ b/docs/content/guide/production.ngdoc @@ -78,13 +78,13 @@ For more information, see the ## Disable comment and css class directives By default AngularJS compiles and executes all directives inside comments and element classes. -In order to perform this task, angular compiler must look for directives by: +In order to perform this task, the AngularJS compiler must look for directives by: - Parse all your application element classes. - Parse all your application html comments. -Nowadays most of the Angular projects are using only element and attribute directives, +Nowadays most of the AngularJS projects are using only element and attribute directives, and in such projects there is no need to compile comments and classes. If you are sure that your project only uses element and attribute directives, diff --git a/docs/content/guide/providers.ngdoc b/docs/content/guide/providers.ngdoc index 4e36ac266d21..e8c80025cff6 100644 --- a/docs/content/guide/providers.ngdoc +++ b/docs/content/guide/providers.ngdoc @@ -6,7 +6,7 @@ # Providers Each web application you build is composed of objects that collaborate to get stuff done. These -objects need to be instantiated and wired together for the app to work. In Angular apps most of +objects need to be instantiated and wired together for the app to work. In AngularJS apps most of these objects are instantiated and wired together automatically by the {@link auto.$injector injector service}. @@ -14,7 +14,7 @@ The injector creates two types of objects, **services** and **specialized object Services are objects whose API is defined by the developer writing the service. -Specialized objects conform to a specific Angular framework API. These objects are one of +Specialized objects conform to a specific AngularJS framework API. These objects are one of controllers, directives, filters or animations. The injector needs to know how to create these objects. You tell it by registering a "recipe" for @@ -35,11 +35,11 @@ In order for the injector to know how to create and wire together all of these o a registry of "recipes". Each recipe has an identifier of the object and the description of how to create this object. -Each recipe belongs to an {@link angular.Module Angular module}. An Angular module is a bag +Each recipe belongs to an {@link angular.Module AngularJS module}. An AngularJS module is a bag that holds one or more recipes. And since manually keeping track of module dependencies is no fun, a module can contain information about dependencies on other modules as well. -When an Angular application starts with a given application module, Angular creates a new instance +When an AngularJS application starts with a given application module, AngularJS creates a new instance of injector, which in turn creates a registry of recipes as a union of all recipes defined in the core "ng" module, application module and its dependencies. The injector then consults the recipe registry when it needs to create an object for your application. @@ -55,10 +55,10 @@ var myApp = angular.module('myApp', []); myApp.value('clientId', 'a12345654321x'); ``` -Notice how we created an Angular module called `myApp`, and specified that this module definition +Notice how we created an AngularJS module called `myApp`, and specified that this module definition contains a "recipe" for constructing the `clientId` service, which is a simple string in this case. -And this is how you would display it via Angular's data-binding: +And this is how you would display it via AngularJS's data-binding: ```javascript @@ -95,7 +95,7 @@ The Factory recipe constructs a new service using a function with zero or more a are dependencies on other services). The return value of this function is the service instance created by this recipe. -Note: All services in Angular are singletons. That means that the injector uses each recipe at most +Note: All services in AngularJS are singletons. That means that the injector uses each recipe at most once to create the object. The injector then caches the reference for all future needs. Since a Factory is a more powerful version of the Value recipe, the same service can be constructed with it. @@ -246,7 +246,7 @@ Notice that the unicorn provider is injected into the config function. This inje provider injector which is different from the regular instance injector, in that it instantiates and wires (injects) all provider instances only. -During application bootstrap, before Angular goes off creating all services, it configures and +During application bootstrap, before AngularJS goes off creating all services, it configures and instantiates all providers. We call this the configuration phase of the application life-cycle. During this phase, services aren't accessible because they haven't been created yet. @@ -256,7 +256,7 @@ creating services starts. We call this part of the application life-cycle the ru ## Constant Recipe -We've just learned how Angular splits the life-cycle into configuration phase and run phase and how +We've just learned how AngularJS splits the life-cycle into configuration phase and run phase and how you can provide configuration to your application via the config function. Since the config function runs in the configuration phase when no services are available, it doesn't have access even to simple value objects created via the Value recipe. @@ -308,7 +308,7 @@ myApp.controller('DemoController', ["clientId", "planetName", function DemoContr Earlier we mentioned that we also have special purpose objects that are different from services. These objects extend the framework as plugins and therefore must implement interfaces specified by -Angular. These interfaces are Controller, Directive, Filter and Animation. +AngularJS. These interfaces are Controller, Directive, Filter and Animation. The instructions for the injector to create these special objects (with the exception of the Controller objects) use the Factory recipe behind the scenes. @@ -340,7 +340,7 @@ We can then use the component like this: ``` -Using Factory recipes, you can also define Angular's filters and animations, but the controllers +Using Factory recipes, you can also define AngularJS's filters and animations, but the controllers are a bit special. You create a controller as a custom type that declares its dependencies as arguments for its constructor function. This constructor is then registered with a module. Let's take a look at the `DemoController`, created in one of the early examples: diff --git a/docs/content/guide/scope.ngdoc b/docs/content/guide/scope.ngdoc index 6c1606f85f28..3a4c2089275f 100644 --- a/docs/content/guide/scope.ngdoc +++ b/docs/content/guide/scope.ngdoc @@ -16,8 +16,8 @@ watch {@link guide/expression expressions} and propagate events. model mutations. - Scopes provide APIs ({@link ng.$rootScope.Scope#$apply $apply}) to - propagate any model changes through the system into the view from outside of the "Angular - realm" (controllers, services, Angular event handlers). + propagate any model changes through the system into the view from outside of the "AngularJS + realm" (controllers, services, AngularJS event handlers). - Scopes can be nested to limit access to the properties of application components while providing access to shared model properties. Nested scopes are either "child scopes" or "isolate scopes". @@ -108,7 +108,7 @@ to test the behavior without being distracted by the rendering details. ## Scope Hierarchies -Each Angular application has exactly one {@link ng.$rootScope root scope}, but +Each AngularJS application has exactly one {@link ng.$rootScope root scope}, but may have several child scopes. The application can have multiple scopes, because some {@link guide/directive directives} create @@ -116,7 +116,7 @@ new child scopes (refer to directive documentation to see which directives creat When new scopes are created, they are added as children of their parent scope. This creates a tree structure which parallels the DOM where they're attached. -When Angular evaluates `{{name}}`, it first looks at the scope associated with the given +When AngularJS evaluates `{{name}}`, it first looks at the scope associated with the given element for the `name` property. If no such property is found, it searches the parent scope and so on until the root scope is reached. In JavaScript this behavior is known as prototypical inheritance, and child scopes prototypically inherit from their parents. @@ -141,7 +141,7 @@ a diagram depicting the scope boundaries. angular.module('scopeExample', []) .controller('GreetController', ['$scope', '$rootScope', function($scope, $rootScope) { $scope.name = 'World'; - $rootScope.department = 'Angular'; + $rootScope.department = 'AngularJS'; }]) .controller('ListController', ['$scope', function($scope) { $scope.names = ['Igor', 'Misko', 'Vojta']; @@ -158,7 +158,7 @@ a diagram depicting the scope boundaries. -Notice that Angular automatically places `ng-scope` class on elements where scopes are +Notice that AngularJS automatically places `ng-scope` class on elements where scopes are attached. The ` + + +
    +

    404

    +

    Page Not Found

    +

    The specified file was not found on this website. Please check the URL for mistakes and try again.

    +

    Why am I seeing this?

    +

    This page was generated by the Firebase Command-Line Interface. To modify it, edit the 404.html file in your project's configured public directory.

    +
    + + From 2ea1e49cd646874d3427344853c695c28a473d84 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Fri, 19 Jan 2018 13:40:34 +0100 Subject: [PATCH 458/849] chore(code.angularjs.org): don't gzip the zip file before uploading --- Gruntfile.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index 0f40af0ab054..1fb1ec92f4cf 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -311,6 +311,17 @@ module.exports = function(grunt) { } ] }, + deployFirebaseCode: { + files: [ + // the zip file should not be compressed again. + { + src: 'build/*.zip', + dest: 'uploadCode/' + deployVersion + '/', + expand: true, + flatten: true + } + ] + }, deployFirebaseDocs: { files: [ // The source files are needed by the embedded examples in the docs app. @@ -344,7 +355,7 @@ module.exports = function(grunt) { options: { mode: 'gzip' }, - src: ['**'], + src: ['**', '!*.zip'], cwd: 'build', expand: true, dest: 'uploadCode/' + deployVersion + '/' @@ -450,6 +461,7 @@ module.exports = function(grunt) { grunt.registerTask('prepareFirebaseDeploy', [ 'package', 'compress:deployFirebaseCode', + 'copy:deployFirebaseCode', 'copy:deployFirebaseDocs' ]); grunt.registerTask('default', ['package']); From 4c97df5852ffe9e1f295d9d96fca9d02aeb8758a Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Fri, 19 Jan 2018 13:41:35 +0100 Subject: [PATCH 459/849] chore(code.angularjs.org): don't use trailing slashes, and don't set headers after response was sent --- scripts/code.angularjs.org-firebase/firebase.json | 1 + scripts/code.angularjs.org-firebase/functions/index.js | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/scripts/code.angularjs.org-firebase/firebase.json b/scripts/code.angularjs.org-firebase/firebase.json index a4d299f9a105..b246bd040c20 100644 --- a/scripts/code.angularjs.org-firebase/firebase.json +++ b/scripts/code.angularjs.org-firebase/firebase.json @@ -1,6 +1,7 @@ { "hosting": { "public": "public", + "trailingSlash": false, "redirects": [ { "source": "/:version/docs", diff --git a/scripts/code.angularjs.org-firebase/functions/index.js b/scripts/code.angularjs.org-firebase/functions/index.js index 47dffc0ce81e..4bf6c80d84e6 100644 --- a/scripts/code.angularjs.org-firebase/functions/index.js +++ b/scripts/code.angularjs.org-firebase/functions/index.js @@ -78,6 +78,10 @@ function sendStoredFile(request, response) { } function sendErrorResponse(error) { + if (response.headersSent) { + return response; + } + let code = 500; let message = `General error. Please try again later. If the error persists, please create an issue in the From 7300a5311c74a377db64db580e2e4ad3aa63570e Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Mon, 22 Jan 2018 17:08:44 +0100 Subject: [PATCH 460/849] chore(docs.angularjs.org): fix firebase deploy Travis looks for the firebase.json in the repo root, but we moved each firebase project in its own sub-folder. To fix, we create a symlink before deployment. --- .travis.yml | 1 + Gruntfile.js | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/.travis.yml b/.travis.yml index e425d58ec8b7..4c226f02fe85 100644 --- a/.travis.yml +++ b/.travis.yml @@ -81,6 +81,7 @@ jobs: - provider: firebase # the upload folder for firebase is configured in /firebase.json skip_cleanup: true + project: docs-angularjs-org-9p2 token: secure: $FIREBASE_TOKEN on: diff --git a/Gruntfile.js b/Gruntfile.js index 1fb1ec92f4cf..6d5b9e09b3df 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -363,6 +363,10 @@ module.exports = function(grunt) { }, shell: { + // Travis expects the firebase.json in the repository root, but we have it in a sub-folder + 'symlink-firebase-docs': { + command: 'ln -s ./scripts/docs.angularjs.org-firebase/firebase.json ./firebase.json' + }, 'install-node-dependencies': { command: 'yarn' }, @@ -462,6 +466,7 @@ module.exports = function(grunt) { 'package', 'compress:deployFirebaseCode', 'copy:deployFirebaseCode', + 'shell:symlink-firebase-docs', 'copy:deployFirebaseDocs' ]); grunt.registerTask('default', ['package']); From 40c49902b6dcd2d836f760c65289580a9593a719 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Thu, 25 Jan 2018 12:12:46 +0100 Subject: [PATCH 461/849] docs(*): fix headings and links --- docs/content/guide/component-router.ngdoc | 54 +++++++++++------------ docs/content/guide/component.ngdoc | 2 +- docs/content/guide/di.ngdoc | 2 +- docs/content/guide/introduction.ngdoc | 2 +- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/content/guide/component-router.ngdoc b/docs/content/guide/component-router.ngdoc index f0bac32b869e..2230e2e94f97 100644 --- a/docs/content/guide/component-router.ngdoc +++ b/docs/content/guide/component-router.ngdoc @@ -138,7 +138,7 @@ The result is that we end up with a hierarchy of **Routing Components** rendered ![Component Hierarchy](img/guide/component-hierarchy.svg) -# Example Heroes App +## Example Heroes App You can see the complete application running below. @@ -459,12 +459,12 @@ You can see the complete application running below. -# Getting Started +### Getting Started In the following sections we will step through building this application. The finished application has views to display list and detail views of Heroes and Crises. -## Install the libraries +#### Install the libraries It is easier to use [Yarn](https://yarnpkg.com) or [npm](https://www.npmjs.com) to install the **Component Router** module. For this guide we will also install AngularJS itself via Yarn: @@ -475,7 +475,7 @@ yarn add angular@1.5.x @angular/router@0.2.0 ``` -## Load the scripts +#### Load the scripts Just like any AngularJS application, we load the JavaScript files into our `index.html`: @@ -494,7 +494,7 @@ You also need to include ES6 shims for browsers that do not support ES6 code (In ``` -## Create the `app` module +#### Create the `app` module In the app.js file, create the main application module `app` which depends on the `ngComponentRouter` module, which is provided by the **Component Router** script. @@ -547,7 +547,7 @@ must have a base URL. ... ``` -## Bootstrap AngularJS +#### Bootstrap AngularJS Bootstrap the AngularJS application and add the top level App Component. @@ -559,7 +559,7 @@ Bootstrap the AngularJS application and add the top level App Component. ``` -# Implementing the AppComponent +### Implementing the AppComponent In the previous section we have created a single top level **App Component**. Let's now create some more **Routing Components** and wire up **Route Config** for those. We start with a Heroes Feature, which @@ -577,7 +577,7 @@ We are going to have a `Heroes` Component for the Heroes feature of our applicat and `HeroDetail` **Components** that will actually display the two different views. -## App Component +#### App Component Configure the **App Component** with a template and **Route Config**: @@ -598,7 +598,7 @@ Configure the **App Component** with a template and **Route Config**: The **App Component** has an `` directive in its template. This is where the child **Components** of this view will be rendered. -### ngLink +#### ngLink We have used the `ng-link` directive to create a link to navigate to the Heroes Component. By using this directive we don't need to know what the actual URL will be. We can let the Router generate that for us. @@ -607,7 +607,7 @@ We have included a link to the Crisis Center but have not included the `ng-link` implemented the CrisisCenter component. -### Non-terminal Routes +#### Non-terminal Routes We need to tell the **Router** that the `Heroes` **Route Definition** is **non-terminal**, that it should continue to match **Routes** in its child **Components**. We do this by adding a **continuation ellipsis @@ -616,14 +616,14 @@ Without the **continuation ellipsis** the `HeroList` **Route** will never be mat stop at the `Heroes` **Routing Component** and not try to match the rest of the URL. -## Heroes Feature +### Heroes Feature Now we can implement our Heroes Feature which consists of three **Components**: `Heroes`, `HeroList` and `HeroDetail`. The `Heroes` **Routing Component** simply provides a template containing the {@link ngOutlet} directive and a **Route Config** that defines a set of child **Routes** which delegate through to the `HeroList` and `HeroDetail` **Components**. -## HeroesComponent +### HeroesComponent Create a new file `heroes.js`, which defines a new AngularJS module for the **Components** of this feature and registers the Heroes **Component**. @@ -651,20 +651,20 @@ and also to add the module as a dependency of the `app` module: angular.module('app', ['ngComponentRouter', 'heroes']) ``` -### Use As Default +#### Use As Default The `useAsDefault` property on the `HeroList` **Route Definition**, indicates that if no other **Route Definition** matches the URL, then this **Route Definition** should be used by default. -### Route Parameters +#### Route Parameters The `HeroDetail` Route has a named parameter (`id`), indicated by prefixing the URL segment with a colon, as part of its `path` property. The **Router** will match anything in this segment and make that value available to the HeroDetail **Component**. -### Terminal Routes +#### Terminal Routes Both the Routes in the `HeroesComponent` are terminal, i.e. their routes do not end with `...`. This is because the `HeroList` and `HeroDetail` will not contain any child routes. -### Route Names +#### Route Names **What is the difference between the `name` and `component` properties on a Route Definition?** The `component` property in a **Route Definition** defines the **Component** directive that will be rendered @@ -676,7 +676,7 @@ The `name` property is used to reference the **Route Definition** when generatin that has the `name` property of `"Heroes"`. -## HeroList Component +### HeroList Component The HeroList **Component** is the first component in the application that actually contains significant functionality. It loads up a list of heroes from a `heroService` and displays them using `ng-repeat`. @@ -705,7 +705,7 @@ The template iterates through each `hero` object of the array in the `$ctrl.hero the `$ctrl` property on the scope of the template.* -## HeroService +### HeroService Our HeroService simulates requesting a list of heroes from a server. In a real application this would be making an actual server request, perhaps over HTTP. @@ -735,7 +735,7 @@ Note that both the `getHeroes()` and `getHero(id)` methods return a promise for in real-life we would have to wait for the server to respond with the data. -## Router Lifecycle Hooks +### Router Lifecycle Hooks **How do I know when my Component is active?** @@ -780,7 +780,7 @@ By returning a promise for the list of heroes from `$routerOnActivate()` we can Route until the heroes have arrived successfully. This is similar to how a `resolve` works in {@link ngRoute}. -## Route Parameters +### Route Parameters **How do I access parameters for the current route?** @@ -811,7 +811,7 @@ by the **Router**. In this code it is used to identify a specific Hero to retrie This hero is then attached to the **Component** so that it can be accessed in the template. -## Access to the Current Router +### Access to the Current Router **How do I get hold of the current router for my component?** @@ -882,7 +882,7 @@ Other options for generating this navigation are: ``` this form gives you the possibility of caching the instruction, but is more verbose. -### Absolute vs Relative Navigation +#### Absolute vs Relative Navigation **Why not use `$rootRouter` to do the navigation?** @@ -894,7 +894,7 @@ to the `HeroListComponent` with the `$rootRouter`, we would have to provide a co `['App','Heroes','HeroList']`. -## Extra Parameters +### Extra Parameters We can also pass additional optional parameters to routes, which get encoded into the URL and are again available to the `$routerOnActivate(next, previous)` hook. If we pass the current `id` from the @@ -936,7 +936,7 @@ Finally, we can use this information to highlight the current hero in the templa ``` -## Crisis Center +### Crisis Center Let's implement the Crisis Center feature, which displays a list if crises that need to be dealt with by a hero. The detailed crisis view has an additional feature where it blocks you from navigating if you have not saved @@ -951,7 +951,7 @@ changes to the crisis being edited. ![Crisis Detail View](img/guide/crisis-detail.png) -## Crisis Feature +### Crisis Feature This feature is very similar to the Heroes feature. It contains the following **Components**: @@ -962,7 +962,7 @@ This feature is very similar to the Heroes feature. It contains the following ** CrisisService and CrisisListComponent are basically the same as HeroService and HeroListComponent respectively. -## Navigation Control Hooks +### Navigation Control Hooks **How do I prevent navigation from occurring?** @@ -979,7 +979,7 @@ can complete, all the **Components** must agree that they can be deactivated or The **Router** will call the `$routerCanDeactivate` and `$canActivate` hooks, if they are provided. If any of the hooks resolve to `false` then the navigation is cancelled. -### Dialog Box Service +#### Dialog Box Service We can implement a very simple dialog box that will prompt the user whether they are happy to lose changes they have made. The result of the prompt is a promise that can be used in a `$routerCanDeactivate` hook. diff --git a/docs/content/guide/component.ngdoc b/docs/content/guide/component.ngdoc index f2f99b95a44f..6d378ee51997 100644 --- a/docs/content/guide/component.ngdoc +++ b/docs/content/guide/component.ngdoc @@ -445,7 +445,7 @@ angular.module('docsTabsExample', []) -# Unit-testing Component Controllers +## Unit-testing Component Controllers The easiest way to unit-test a component controller is by using the {@link ngMock.$componentController $componentController} that is included in {@link ngMock}. The diff --git a/docs/content/guide/di.ngdoc b/docs/content/guide/di.ngdoc index 58fc09c3bc67..f0ac64c8c290 100644 --- a/docs/content/guide/di.ngdoc +++ b/docs/content/guide/di.ngdoc @@ -39,7 +39,7 @@ into `run` blocks. However, only those that have been **registered beforehand** can be injected. This is different from services, where the order of registration does not matter. -See {@link module#module-loading-dependencies Modules} for more details about `run` and `config` +See {@link module#module-loading Modules} for more details about `run` and `config` blocks and {@link guide/providers Providers} for more information about the different provider types. diff --git a/docs/content/guide/introduction.ngdoc b/docs/content/guide/introduction.ngdoc index 05704e5302f6..e43dcd30e72b 100644 --- a/docs/content/guide/introduction.ngdoc +++ b/docs/content/guide/introduction.ngdoc @@ -64,7 +64,7 @@ Games and GUI editors are examples of applications with intensive and tricky DOM These kinds of apps are different from CRUD apps, and as a result are probably not a good fit for AngularJS. In these cases it may be better to use a library with a lower level of abstraction, such as `jQuery`. -# The Zen of AngularJS +## The Zen of AngularJS AngularJS is built around the belief that declarative code is better than imperative when it comes to building UIs and wiring software components together, while imperative code is excellent for From 1d804645f7656d592c90216a0355b4948807f6b8 Mon Sep 17 00:00:00 2001 From: Frederik Prijck Date: Sun, 1 Oct 2017 22:35:21 +0200 Subject: [PATCH 462/849] feat(orderBy): consider `null` and `undefined` greater than other values Previously, `null` values where sorted using type `string` resulting in a string comparison. `undefined` values where compared to other values by type and were usually considered greater than other values (since their type happens to start with a `u`), but this was coincidental. This commit ensures that `null` and `undefined ` values are explicitly considered greater than other values (with `undefined` > `null`) and will effectively be put at the end of the sorted list (for ascending order sorting). Closes #15294 Closes #16376 BREAKING CHANGE: When using `orderBy` to sort arrays containing `null` values, the `null` values will be considered "greater than" all other values, except for `undefined`. Previously, they were sorted as strings. This will result in different (but more intuitive) sorting order. Before: ```js orderByFilter(['a', undefined, 'o', null, 'z']); //--> 'a', null, 'o', 'z', undefined ``` After: ```js orderByFilter(['a', undefined, 'o', null, 'z']); //--> 'a', 'o', 'z', null, undefined ``` --- src/ng/filter/orderBy.js | 25 +++++++++++++++++-------- test/ng/filter/orderBySpec.js | 16 +++++++++++++--- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/ng/filter/orderBy.js b/src/ng/filter/orderBy.js index 93e6424d804e..57c374735d5d 100644 --- a/src/ng/filter/orderBy.js +++ b/src/ng/filter/orderBy.js @@ -40,6 +40,7 @@ * index: ... * } * ``` + * **Note:** `null` values use `'null'` as their type. * 2. The comparator function is used to sort the items, based on the derived values, types and * indices. * @@ -74,11 +75,15 @@ * * The default, built-in comparator should be sufficient for most usecases. In short, it compares * numbers numerically, strings alphabetically (and case-insensitively), for objects falls back to - * using their index in the original collection, and sorts values of different types by type. + * using their index in the original collection, sorts values of different types by type and puts + * `undefined` and `null` values at the end of the sorted list. * * More specifically, it follows these steps to determine the relative order of items: * - * 1. If the compared values are of different types, compare the types themselves alphabetically. + * 1. If the compared values are of different types: + * - If one of the values is undefined, consider it "greater than" the other. + * - Else if one of the values is null, consider it "greater than" the other. + * - Else compare the types themselves alphabetically. * 2. If both values are of type `string`, compare them alphabetically in a case- and * locale-insensitive way. * 3. If both values are objects, compare their indices instead. @@ -89,9 +94,10 @@ * * **Note:** If you notice numbers not being sorted as expected, make sure they are actually being * saved as numbers and not strings. - * **Note:** For the purpose of sorting, `null` values are treated as the string `'null'` (i.e. - * `type: 'string'`, `value: 'null'`). This may cause unexpected sort order relative to - * other values. + * **Note:** For the purpose of sorting, `null` and `undefined` are considered "greater than" + * any other value (with undefined "greater than" null). This effectively means that `null` + * and `undefined` values end up at the end of a list sorted in ascending order. + * **Note:** `null` values use `'null'` as their type to be able to distinguish them from objects. * * @param {Array|ArrayLike} collection - The collection (array or array-like object) to sort. * @param {(Function|string|Array.)=} expression - A predicate (or list of @@ -658,8 +664,7 @@ function orderByFilter($parse) { function getPredicateValue(value, index) { var type = typeof value; if (value === null) { - type = 'string'; - value = 'null'; + type = 'null'; } else if (type === 'object') { value = objectValue(value); } @@ -690,7 +695,11 @@ function orderByFilter($parse) { result = value1 < value2 ? -1 : 1; } } else { - result = type1 < type2 ? -1 : 1; + result = (type1 === 'undefined') ? 1 : + (type2 === 'undefined') ? -1 : + (type1 === 'null') ? 1 : + (type2 === 'null') ? -1 : + (type1 < type2) ? -1 : 1; } return result; diff --git a/test/ng/filter/orderBySpec.js b/test/ng/filter/orderBySpec.js index e8f0a4126eff..cab5cb678063 100644 --- a/test/ng/filter/orderBySpec.js +++ b/test/ng/filter/orderBySpec.js @@ -309,6 +309,16 @@ describe('Filter: orderBy', function() { expect(orderBy(items, expr)).toEqual(sorted); }); + + it('should consider null and undefined greater than any other value', function() { + var items = [undefined, null, 'z', {}, 999, false]; + var expr = null; + var sorted = [false, 999, {}, 'z', null, undefined]; + var reversed = [undefined, null, 'z', {}, 999, false]; + + expect(orderBy(items, expr)).toEqual(sorted); + expect(orderBy(items, expr, true)).toEqual(reversed); + }); }); describe('(custom comparator)', function() { @@ -376,7 +386,7 @@ describe('Filter: orderBy', function() { }); - it('should treat a value of `null` as `"null"`', function() { + it('should treat a value of `null` as type `"null"`', function() { var items = [null, null]; var expr = null; var reverse = null; @@ -386,8 +396,8 @@ describe('Filter: orderBy', function() { var arg = comparator.calls.argsFor(0)[0]; expect(arg).toEqual(jasmine.objectContaining({ - type: 'string', - value: 'null' + type: 'null', + value: null })); }); From 8d9984e530873497c39acf7726d51f17d60df909 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Fri, 26 Jan 2018 12:02:56 +0100 Subject: [PATCH 463/849] chore(docs-gen): generate list of versions in correct order Closes #16419 --- docs/config/processors/versions-data.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/config/processors/versions-data.js b/docs/config/processors/versions-data.js index 22b4570cc326..d52b6c420f69 100644 --- a/docs/config/processors/versions-data.js +++ b/docs/config/processors/versions-data.js @@ -55,9 +55,6 @@ module.exports = function generateVersionDocProcessor(gitData) { if (missesCurrentVersion) versions.push(currentVersion.version); - // Get the stable release with the highest version - var highestStableRelease = versions.reverse().find(semverIsStable); - versions = versions .filter(function(versionStr) { return blacklist.indexOf(versionStr) === -1; @@ -85,6 +82,9 @@ module.exports = function generateVersionDocProcessor(gitData) { var latest = sortObject(latestMap, reverse(semver.compare)) .map(function(version) { return makeOption(version, 'Latest'); }); + // Get the stable release with the highest version + var highestStableRelease = versions.find(semverIsStable); + // Generate master and stable snapshots var snapshots = [ makeOption( @@ -130,14 +130,15 @@ module.exports = function generateVersionDocProcessor(gitData) { return Object.keys(obj).map(function(key) { return obj[key]; }).sort(cmp); } + // Adapted from // https://github.com/kaelzhang/node-semver-stable/blob/34dd29842409295d49889d45871bec55a992b7f6/index.js#L25 function semverIsStable(version) { - var semverObj = semver.parse(version); + var semverObj = version.version; return semverObj === null ? false : !semverObj.prerelease.length; } function createSnapshotStableLabel(version) { - var label = 'v' + version.replace(/.$/, 'x') + '-snapshot'; + var label = version.label.replace(/.$/, 'x') + '-snapshot'; return label; } From a8830d2be402764225dd1108b992965a5f8b1f4d Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Sun, 28 Jan 2018 14:24:00 +0300 Subject: [PATCH 464/849] feat(input): add `drop` event support (#16420) --- src/ng/directive/input.js | 4 ++-- test/ng/directive/inputSpec.js | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js index 228f5fb2366a..7d1bec7cfe9d 100644 --- a/src/ng/directive/input.js +++ b/src/ng/directive/input.js @@ -1306,9 +1306,9 @@ function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) { deferListener(event, this, this.value); }); - // if user modifies input value using context menu in IE, we need "paste" and "cut" events to catch it + // if user modifies input value using context menu in IE, we need "paste", "cut" and "drop" events to catch it if ($sniffer.hasEvent('paste')) { - element.on('paste cut', deferListener); + element.on('paste cut drop', deferListener); } } diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js index 9c58807345d3..93d2184f969d 100644 --- a/test/ng/directive/inputSpec.js +++ b/test/ng/directive/inputSpec.js @@ -439,7 +439,7 @@ describe('input', function() { } }); - describe('"keydown", "paste" and "cut" events', function() { + describe('"keydown", "paste", "cut" and "drop" events', function() { beforeEach(function() { // Force browser to report a lack of an 'input' event $sniffer.hasEvent = function(eventName) { @@ -461,6 +461,18 @@ describe('input', function() { expect($rootScope.name).toEqual('mark'); }); + it('should update the model on "drop" event if the input value changes', function() { + var inputElm = helper.compileInput(''); + + browserTrigger(inputElm, 'keydown'); + $browser.defer.flush(); + expect(inputElm).toBePristine(); + + inputElm.val('mark'); + browserTrigger(inputElm, 'drop'); + $browser.defer.flush(); + expect($rootScope.name).toEqual('mark'); + }); it('should update the model on "cut" event', function() { var inputElm = helper.compileInput(''); From 1e9eadcd72dbbd5c67dae8328a63e535cfa91ff9 Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Tue, 30 Jan 2018 14:07:27 +0000 Subject: [PATCH 465/849] feat($sce): handle URL sanitization through the `$sce` service Thanks to @rjamet for the original work on this feature. This is a large patch to handle URLs with the $sce service, similarly to HTML context. Where we previously sanitized URL attributes when setting attribute value inside the `$compile` service, we now only apply an `$sce` context requirement and leave the `$interpolate` service to deal with sanitization. This commit introduces a new `$sce` context called `MEDIA_URL`, which represents a URL used as a source for a media element that is not expected to execute code, such as image, video, audio, etc. The context hierarchy is setup so that a value trusted as `URL` is also trusted in the `MEDIA_URL` context, in the same way that the a value trusted as `RESOURCE_URL` is also trusted in the `URL` context (and transitively also the `MEDIA_URL` context). The `$sce` service will now automatically attempt to sanitize non-trusted values that require the `URL` or `MEDIA_URL` context: * When calling `getTrustedMediaUrl()` a value that is not already a trusted `MEDIA_URL` will be sanitized using the `imgSrcSanitizationWhitelist`. * When calling `getTrustedUrl()` a value that is not already a trusted `URL` will be sanitized using the `aHrefSanitizationWhitelist`. This results in behaviour that closely matches the previous sanitization behaviour. To keep rough compatibility with existing apps, we need to allow concatenation of values that may contain trusted contexts. The following approach is taken for situations that require a `URL` or `MEDIA_URL` secure context: * A single trusted value is trusted, e.g. `"{{trustedUrl}}"` and will not be sanitized. * A single non-trusted value, e.g. `"{{ 'javascript:foo' }}"`, will be handled by `getTrustedMediaUrl` or `getTrustedUrl)` and sanitized. * Any concatenation of values (which may or may not be trusted) results in a non-trusted type that will be handled by `getTrustedMediaUrl` or `getTrustedUrl` once the concatenation is complete. E.g. `"javascript:{{safeType}}"` is a concatenation of a non-trusted and a trusted value, which will be sanitized as a whole after unwrapping the `safeType` value. * An interpolation containing no expressions will still be handled by `getTrustedMediaUrl` or `getTrustedUrl`, whereas before this would have been short-circuited in the `$interpolate` service. E.g. `"some/hard/coded/url"`. This ensures that `ngHref` and similar directives still securely, even if the URL is hard-coded into a template or index.html (perhaps by server-side rendering). BREAKING CHANGES: If you use `attrs.$set` for URL attributes (a[href] and img[src]) there will no longer be any automated sanitization of the value. This is in line with other programmatic operations, such as writing to the innerHTML of an element. If you are programmatically writing URL values to attributes from untrusted input then you must sanitize it yourself. You could write your own sanitizer or copy the private `$$sanitizeUri` service. Note that values that have been passed through the `$interpolate` service within the `URL` or `MEDIA_URL` will have already been sanitized, so you would not need to sanitize these values again. --- docs/content/error/$compile/srcset.ngdoc | 12 + src/ng/compile.js | 48 ++- src/ng/directive/attrs.js | 2 +- src/ng/interpolate.js | 75 ++-- src/ng/sanitizeUri.js | 38 +- src/ng/sce.js | 97 +++-- src/ngSanitize/sanitize.js | 5 +- test/ng/compileSpec.js | 440 +++++++++++++++-------- test/ng/directive/booleanAttrsSpec.js | 208 ----------- test/ng/directive/ngHrefSpec.js | 105 ++++++ test/ng/directive/ngSrcSpec.js | 94 ++++- test/ng/directive/ngSrcsetSpec.js | 15 +- test/ng/interpolateSpec.js | 70 ++-- test/ng/sceSpecs.js | 81 ++++- test/ngSanitize/sanitizeSpec.js | 4 +- 15 files changed, 824 insertions(+), 470 deletions(-) create mode 100644 docs/content/error/$compile/srcset.ngdoc create mode 100644 test/ng/directive/ngHrefSpec.js diff --git a/docs/content/error/$compile/srcset.ngdoc b/docs/content/error/$compile/srcset.ngdoc new file mode 100644 index 000000000000..cab3de5f4d79 --- /dev/null +++ b/docs/content/error/$compile/srcset.ngdoc @@ -0,0 +1,12 @@ +@ngdoc error +@name $compile:srcset +@fullName Invalid value passed to `attr.$set('srcset', value)` +@description + +This error occurs if you try to programmatically set the `srcset` attribute with a non-string value. + +This can be the case if you tried to avoid the automatic sanitization of the `srcset` value by +passing a "trusted" value provided by calls to `$sce.trustAsMediaUrl(value)`. + +If you want to programmatically set explicitly trusted unsafe URLs, you should use `$sce.trustAsHtml` +on the whole `img` tag and inject it into the DOM using the `ng-bind-html` directive. diff --git a/src/ng/compile.js b/src/ng/compile.js index 4ec3ea5d6d94..6ae2722a6fde 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -1528,9 +1528,9 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { this.$get = [ '$injector', '$interpolate', '$exceptionHandler', '$templateRequest', '$parse', - '$controller', '$rootScope', '$sce', '$animate', '$$sanitizeUri', + '$controller', '$rootScope', '$sce', '$animate', function($injector, $interpolate, $exceptionHandler, $templateRequest, $parse, - $controller, $rootScope, $sce, $animate, $$sanitizeUri) { + $controller, $rootScope, $sce, $animate) { var SIMPLE_ATTR_NAME = /^\w/; var specialAttrHolder = window.document.createElement('div'); @@ -1679,8 +1679,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { */ $set: function(key, value, writeAttr, attrName) { // TODO: decide whether or not to throw an error if "class" - //is set through this function since it may cause $updateClass to - //become unstable. + // is set through this function since it may cause $updateClass to + // become unstable. var node = this.$$element[0], booleanKey = getBooleanAttrName(node, key), @@ -1710,13 +1710,20 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { nodeName = nodeName_(this.$$element); - if ((nodeName === 'a' && (key === 'href' || key === 'xlinkHref')) || - (nodeName === 'img' && key === 'src') || - (nodeName === 'image' && key === 'xlinkHref')) { - // sanitize a[href] and img[src] values - this[key] = value = $$sanitizeUri(value, nodeName === 'img' || nodeName === 'image'); - } else if (nodeName === 'img' && key === 'srcset' && isDefined(value)) { - // sanitize img[srcset] values + // Sanitize img[srcset] values. + if (nodeName === 'img' && key === 'srcset' && value) { + if (!isString(value)) { + throw $compileMinErr('srcset', 'Can\'t pass trusted values to `$set(\'srcset\', value)`: "{0}"', value.toString()); + } + + // Such values are a bit too complex to handle automatically inside $sce. + // Instead, we sanitize each of the URIs individually, which works, even dynamically. + + // It's not possible to work around this using `$sce.trustAsMediaUrl`. + // If you want to programmatically set explicitly trusted unsafe URLs, you should use + // `$sce.trustAsHtml` on the whole `img` tag and inject it into the DOM using the + // `ng-bind-html` directive. + var result = ''; // first check if there are spaces because it's not the same pattern @@ -1733,16 +1740,16 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { for (var i = 0; i < nbrUrisWith2parts; i++) { var innerIdx = i * 2; // sanitize the uri - result += $$sanitizeUri(trim(rawUris[innerIdx]), true); + result += $sce.getTrustedMediaUrl(trim(rawUris[innerIdx])); // add the descriptor - result += (' ' + trim(rawUris[innerIdx + 1])); + result += ' ' + trim(rawUris[innerIdx + 1]); } // split the last item into uri and descriptor var lastTuple = trim(rawUris[i * 2]).split(/\s/); // sanitize the last uri - result += $$sanitizeUri(trim(lastTuple[0]), true); + result += $sce.getTrustedMediaUrl(trim(lastTuple[0])); // and add the last descriptor if any if (lastTuple.length === 2) { @@ -3268,14 +3275,18 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } var tag = nodeName_(node); // All tags with src attributes require a RESOURCE_URL value, except for - // img and various html5 media tags. + // img and various html5 media tags, which require the MEDIA_URL context. if (attrNormalizedName === 'src' || attrNormalizedName === 'ngSrc') { if (['img', 'video', 'audio', 'source', 'track'].indexOf(tag) === -1) { return $sce.RESOURCE_URL; } + return $sce.MEDIA_URL; + } else if (attrNormalizedName === 'xlinkHref') { + // Some xlink:href are okay, most aren't + if (tag === 'image') return $sce.MEDIA_URL; + if (tag === 'a') return $sce.URL; + return $sce.RESOURCE_URL; } else if ( - // Some xlink:href are okay, most aren't - (attrNormalizedName === 'xlinkHref' && (tag !== 'image' && tag !== 'a')) || // Formaction (tag === 'form' && attrNormalizedName === 'action') || // If relative URLs can go where they are not expected to, then @@ -3285,6 +3296,9 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { (tag === 'link' && attrNormalizedName === 'href') ) { return $sce.RESOURCE_URL; + } else if (tag === 'a' && (attrNormalizedName === 'href' || + attrNormalizedName === 'ngHref')) { + return $sce.URL; } } diff --git a/src/ng/directive/attrs.js b/src/ng/directive/attrs.js index af0bf14efd1f..1b646ff5d4c3 100644 --- a/src/ng/directive/attrs.js +++ b/src/ng/directive/attrs.js @@ -436,7 +436,7 @@ forEach(['src', 'srcset', 'href'], function(attrName) { // On IE, if "ng:src" directive declaration is used and "src" attribute doesn't exist // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need // to set the property as well to achieve the desired effect. - // We use attr[attrName] value since $set can sanitize the url. + // We use attr[attrName] value since $set might have sanitized the url. if (msie && propName) element.prop(propName, attr[name]); }); } diff --git a/src/ng/interpolate.js b/src/ng/interpolate.js index 30ad9e3a9ad8..77b863ddcba9 100644 --- a/src/ng/interpolate.js +++ b/src/ng/interpolate.js @@ -238,16 +238,21 @@ function $InterpolateProvider() { * - `context`: evaluation context for all expressions embedded in the interpolated text */ function $interpolate(text, mustHaveExpression, trustedContext, allOrNothing) { + var contextAllowsConcatenation = trustedContext === $sce.URL || trustedContext === $sce.MEDIA_URL; + // Provide a quick exit and simplified result function for text with no interpolation if (!text.length || text.indexOf(startSymbol) === -1) { - var constantInterp; - if (!mustHaveExpression) { - var unescapedText = unescapeText(text); - constantInterp = valueFn(unescapedText); - constantInterp.exp = text; - constantInterp.expressions = []; - constantInterp.$$watchDelegate = constantWatchDelegate; + if (mustHaveExpression && !contextAllowsConcatenation) return; + + var unescapedText = unescapeText(text); + if (contextAllowsConcatenation) { + unescapedText = $sce.getTrusted(trustedContext, unescapedText); } + var constantInterp = valueFn(unescapedText); + constantInterp.exp = text; + constantInterp.expressions = []; + constantInterp.$$watchDelegate = constantWatchDelegate; + return constantInterp; } @@ -256,11 +261,13 @@ function $InterpolateProvider() { endIndex, index = 0, expressions = [], - parseFns = [], + parseFns, textLength = text.length, exp, concat = [], - expressionPositions = []; + expressionPositions = [], + singleExpression; + while (index < textLength) { if (((startIndex = text.indexOf(startSymbol, index)) !== -1) && @@ -270,10 +277,9 @@ function $InterpolateProvider() { } exp = text.substring(startIndex + startSymbolLength, endIndex); expressions.push(exp); - parseFns.push($parse(exp, parseStringifyInterceptor)); index = endIndex + endSymbolLength; expressionPositions.push(concat.length); - concat.push(''); + concat.push(''); // Placeholder that will get replaced with the evaluated expression. } else { // we did not find an interpolation, so we have to add the remainder to the separators array if (index !== textLength) { @@ -283,15 +289,25 @@ function $InterpolateProvider() { } } + singleExpression = concat.length === 1 && expressionPositions.length === 1; + // Intercept expression if we need to stringify concatenated inputs, which may be SCE trusted + // objects rather than simple strings + // (we don't modify the expression if the input consists of only a single trusted input) + var interceptor = contextAllowsConcatenation && singleExpression ? undefined : parseStringifyInterceptor; + parseFns = expressions.map(function(exp) { return $parse(exp, interceptor); }); + // Concatenating expressions makes it hard to reason about whether some combination of // concatenated values are unsafe to use and could easily lead to XSS. By requiring that a - // single expression be used for iframe[src], object[src], etc., we ensure that the value - // that's used is assigned or constructed by some JS code somewhere that is more testable or - // make it obvious that you bound the value to some user controlled value. This helps reduce - // the load when auditing for XSS issues. - if (trustedContext && concat.length > 1) { - $interpolateMinErr.throwNoconcat(text); - } + // single expression be used for some $sce-managed secure contexts (RESOURCE_URLs mostly), + // we ensure that the value that's used is assigned or constructed by some JS code somewhere + // that is more testable or make it obvious that you bound the value to some user controlled + // value. This helps reduce the load when auditing for XSS issues. + + // Note that URL and MEDIA_URL $sce contexts do not need this, since `$sce` can sanitize the values + // passed to it. In that case, `$sce.getTrusted` will be called on either the single expression + // or on the overall concatenated string (losing trusted types used in the mix, by design). + // Both these methods will sanitize plain strings. Also, HTML could be included, but since it's + // only used in srcdoc attributes, this would not be very useful. if (!mustHaveExpression || expressions.length) { var compute = function(values) { @@ -299,13 +315,16 @@ function $InterpolateProvider() { if (allOrNothing && isUndefined(values[i])) return; concat[expressionPositions[i]] = values[i]; } - return concat.join(''); - }; - var getValue = function(value) { - return trustedContext ? - $sce.getTrusted(trustedContext, value) : - $sce.valueOf(value); + if (contextAllowsConcatenation) { + // If `singleExpression` then `concat[0]` might be a "trusted" value or `null`, rather than a string + return $sce.getTrusted(trustedContext, singleExpression ? concat[0] : concat.join('')); + } else if (trustedContext && concat.length > 1) { + // This context does not allow more than one part, e.g. expr + string or exp + exp. + $interpolateMinErr.throwNoconcat(text); + } + // In an unprivileged context or only one part: just concatenate and return. + return concat.join(''); }; return extend(function interpolationFn(context) { @@ -340,7 +359,13 @@ function $InterpolateProvider() { function parseStringifyInterceptor(value) { try { - value = getValue(value); + // In concatenable contexts, getTrusted comes at the end, to avoid sanitizing individual + // parts of a full URL. We don't care about losing the trustedness here. + // In non-concatenable contexts, where there is only one expression, this interceptor is + // not applied to the expression. + value = (trustedContext && !contextAllowsConcatenation) ? + $sce.getTrusted(trustedContext, value) : + $sce.valueOf(value); return allOrNothing && !isDefined(value) ? value : stringify(value); } catch (err) { $exceptionHandler($interpolateMinErr.interr(text, err)); diff --git a/src/ng/sanitizeUri.js b/src/ng/sanitizeUri.js index f7dc60bf3c41..edda8244e406 100644 --- a/src/ng/sanitizeUri.js +++ b/src/ng/sanitizeUri.js @@ -6,6 +6,7 @@ * Private service to sanitize uris for links and images. Used by $compile and $sanitize. */ function $$SanitizeUriProvider() { + var aHrefSanitizationWhitelist = /^\s*(https?|s?ftp|mailto|tel|file):/, imgSrcSanitizationWhitelist = /^\s*((https?|ftp|file|blob):|data:image\/)/; @@ -14,12 +15,16 @@ function $$SanitizeUriProvider() { * Retrieves or overrides the default regular expression that is used for whitelisting of safe * urls during a[href] sanitization. * - * The sanitization is a security measure aimed at prevent XSS attacks via html links. + * The sanitization is a security measure aimed at prevent XSS attacks via HTML anchor links. + * + * Any url due to be assigned to an `a[href]` attribute via interpolation is marked as requiring + * the $sce.URL security context. When interpolation occurs a call is made to `$sce.trustAsUrl(url)` + * which in turn may call `$$sanitizeUri(url, isMedia)` to sanitize the potentially malicious URL. + * + * If the URL matches the `aHrefSanitizationWhitelist` regular expression, it is returned unchanged. * - * Any url about to be assigned to a[href] via data-binding is first normalized and turned into - * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist` - * regular expression. If a match is found, the original url is written into the dom. Otherwise, - * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM. + * If there is no match the URL is returned prefixed with `'unsafe:'` to ensure that when it is written + * to the DOM it is inactive and potentially malicious code will not be executed. * * @param {RegExp=} regexp New regexp to whitelist urls with. * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for @@ -39,12 +44,17 @@ function $$SanitizeUriProvider() { * Retrieves or overrides the default regular expression that is used for whitelisting of safe * urls during img[src] sanitization. * - * The sanitization is a security measure aimed at prevent XSS attacks via html links. + * The sanitization is a security measure aimed at prevent XSS attacks via HTML image src links. + * + * Any URL due to be assigned to an `img[src]` attribute via interpolation is marked as requiring + * the $sce.MEDIA_URL security context. When interpolation occurs a call is made to + * `$sce.trustAsMediaUrl(url)` which in turn may call `$$sanitizeUri(url, isMedia)` to sanitize + * the potentially malicious URL. + * + * If the URL matches the `aImgSanitizationWhitelist` regular expression, it is returned unchanged. * - * Any url about to be assigned to img[src] via data-binding is first normalized and turned into - * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist` - * regular expression. If a match is found, the original url is written into the dom. Otherwise, - * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM. + * If there is no match the URL is returned prefixed with `'unsafe:'` to ensure that when it is written + * to the DOM it is inactive and potentially malicious code will not be executed. * * @param {RegExp=} regexp New regexp to whitelist urls with. * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for @@ -59,10 +69,10 @@ function $$SanitizeUriProvider() { }; this.$get = function() { - return function sanitizeUri(uri, isImage) { - var regex = isImage ? imgSrcSanitizationWhitelist : aHrefSanitizationWhitelist; - var normalizedVal; - normalizedVal = urlResolve(uri && uri.trim()).href; + return function sanitizeUri(uri, isMediaUrl) { + // if (!uri) return uri; + var regex = isMediaUrl ? imgSrcSanitizationWhitelist : aHrefSanitizationWhitelist; + var normalizedVal = urlResolve(uri && uri.trim()).href; if (normalizedVal !== '' && !normalizedVal.match(regex)) { return 'unsafe:' + normalizedVal; } diff --git a/src/ng/sce.js b/src/ng/sce.js index 4dc0279fb61e..a5f618ef8fe4 100644 --- a/src/ng/sce.js +++ b/src/ng/sce.js @@ -22,12 +22,17 @@ var SCE_CONTEXTS = { // Style statements or stylesheets. Currently unused in AngularJS. CSS: 'css', - // An URL used in a context where it does not refer to a resource that loads code. Currently - // unused in AngularJS. + // An URL used in a context where it refers to the source of media, which are not expected to be run + // as scripts, such as an image, audio, video, etc. + MEDIA_URL: 'mediaUrl', + + // An URL used in a context where it does not refer to a resource that loads code. + // A value that can be trusted as a URL can also trusted as a MEDIA_URL. URL: 'url', // RESOURCE_URL is a subtype of URL used where the referred-to resource could be interpreted as // code. (e.g. ng-include, script src binding, templateUrl) + // A value that can be trusted as a RESOURCE_URL, can also trusted as a URL and a MEDIA_URL. RESOURCE_URL: 'resourceUrl', // Script. Currently unused in AngularJS. @@ -242,7 +247,7 @@ function $SceDelegateProvider() { return resourceUrlBlacklist; }; - this.$get = ['$injector', function($injector) { + this.$get = ['$injector', '$$sanitizeUri', function($injector, $$sanitizeUri) { var htmlSanitizer = function htmlSanitizer(html) { throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.'); @@ -307,7 +312,8 @@ function $SceDelegateProvider() { byType[SCE_CONTEXTS.HTML] = generateHolderType(trustedValueHolderBase); byType[SCE_CONTEXTS.CSS] = generateHolderType(trustedValueHolderBase); - byType[SCE_CONTEXTS.URL] = generateHolderType(trustedValueHolderBase); + byType[SCE_CONTEXTS.MEDIA_URL] = generateHolderType(trustedValueHolderBase); + byType[SCE_CONTEXTS.URL] = generateHolderType(byType[SCE_CONTEXTS.MEDIA_URL]); byType[SCE_CONTEXTS.JS] = generateHolderType(trustedValueHolderBase); byType[SCE_CONTEXTS.RESOURCE_URL] = generateHolderType(byType[SCE_CONTEXTS.URL]); @@ -386,15 +392,27 @@ function $SceDelegateProvider() { * @name $sceDelegate#getTrusted * * @description - * Takes any input, and either returns a value that's safe to use in the specified context, or - * throws an exception. + * Given an object and a security context in which to assign it, returns a value that's safe to + * use in this context, which was represented by the parameter. To do so, this function either + * unwraps the safe type it has been given (for instance, a {@link ng.$sceDelegate#trustAs + * `$sceDelegate.trustAs`} result), or it might try to sanitize the value given, depending on + * the context and sanitizer availablility. + * + * The contexts that can be sanitized are $sce.MEDIA_URL, $sce.URL and $sce.HTML. The first two are available + * by default, and the third one relies on the `$sanitize` service (which may be loaded through + * the `ngSanitize` module). Furthermore, for $sce.RESOURCE_URL context, a plain string may be + * accepted if the resource url policy defined by {@link ng.$sceDelegateProvider#resourceUrlWhitelist + * `$sceDelegateProvider.resourceUrlWhitelist`} and {@link ng.$sceDelegateProvider#resourceUrlBlacklist + * `$sceDelegateProvider.resourceUrlBlacklist`} accepts that resource. + * + * This function will throw if the safe type isn't appropriate for this context, or if the + * value given cannot be accepted in the context (which might be caused by sanitization not + * being available, or the value not being recognized as safe). * - * In practice, there are several cases. When given a string, this function runs checks - * and sanitization to make it safe without prior assumptions. When given the result of a {@link - * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`} call, it returns the originally supplied - * value if that value's context is valid for this call's context. Finally, this function can - * also throw when there is no way to turn `maybeTrusted` in a safe value (e.g., no sanitization - * is available or possible.) + *
    + * Disabling auto-escaping is extremely dangerous, it usually creates a Cross Site Scripting + * (XSS) vulnerability in your application. + *
    * * @param {string} type The context in which this value is to be used (such as `$sce.HTML`). * @param {*} maybeTrusted The result of a prior {@link ng.$sceDelegate#trustAs @@ -412,12 +430,18 @@ function $SceDelegateProvider() { if (constructor && maybeTrusted instanceof constructor) { return maybeTrusted.$$unwrapTrustedValue(); } - // Otherwise, if we get here, then we may either make it safe, or throw an exception. This - // depends on the context: some are sanitizatible (HTML), some use whitelists (RESOURCE_URL), - // some are impossible to do (JS). This step isn't implemented for CSS and URL, as AngularJS - // has no corresponding sinks. - if (type === SCE_CONTEXTS.RESOURCE_URL) { - // RESOURCE_URL uses a whitelist. + + // If maybeTrusted is a trusted class instance but not of the correct trusted type + // then unwrap it and allow it to pass through to the rest of the checks + if (isFunction(maybeTrusted.$$unwrapTrustedValue)) { + maybeTrusted = maybeTrusted.$$unwrapTrustedValue(); + } + + // If we get here, then we will either sanitize the value or throw an exception. + if (type === SCE_CONTEXTS.MEDIA_URL || type === SCE_CONTEXTS.URL) { + // we attempt to sanitize non-resource URLs + return $$sanitizeUri(maybeTrusted, type === SCE_CONTEXTS.MEDIA_URL); + } else if (type === SCE_CONTEXTS.RESOURCE_URL) { if (isResourceUrlAllowedByPolicy(maybeTrusted)) { return maybeTrusted; } else { @@ -572,9 +596,10 @@ function $SceDelegateProvider() { * * If your expressions are constant literals, they're automatically trusted and you don't need to * call `$sce.trustAs` on them (e.g. - * `
    `) just works. The `$sceDelegate` will - * also use the `$sanitize` service if it is available when binding untrusted values to - * `$sce.HTML` context. AngularJS provides an implementation in `angular-sanitize.js`, and if you + * `
    `) just works (remember to include the + * `ngSanitize` module). The `$sceDelegate` will also use the `$sanitize` service if it is available + * when binding untrusted values to `$sce.HTML` context. + * AngularJS provides an implementation in `angular-sanitize.js`, and if you * wish to use it, you will also need to depend on the {@link ngSanitize `ngSanitize`} module in * your application. * @@ -594,17 +619,27 @@ function $SceDelegateProvider() { * * | Context | Notes | * |---------------------|----------------| - * | `$sce.HTML` | For HTML that's safe to source into the application. The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. If an unsafe value is encountered, and the {@link ngSanitize.$sanitize $sanitize} service is available (implemented by the {@link ngSanitize ngSanitize} module) this will sanitize the value instead of throwing an error. | - * | `$sce.CSS` | For CSS that's safe to source into the application. Currently, no bindings require this context. Feel free to use it in your own directives. | - * | `$sce.URL` | For URLs that are safe to follow as links. Currently unused (`

    Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does (it's not just the URL that matters, but also what is at the end of it), and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. | - * | `$sce.JS` | For JavaScript that is safe to execute in your application's context. Currently, no bindings require this context. Feel free to use it in your own directives. | + * | `$sce.HTML` | For HTML that's safe to source into the application. The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. If an unsafe value is encountered and the {@link ngSanitize $sanitize} module is present this will sanitize the value instead of throwing an error. | + * | `$sce.CSS` | For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives. | + * | `$sce.MEDIA_URL` | For URLs that are safe to render as media. Is automatically converted from string by sanitizing when needed. | + * | `$sce.URL` | For URLs that are safe to follow as links. Is automatically converted from string by sanitizing when needed. Note that `$sce.URL` makes a stronger statement about the URL than `$sce.MEDIA_URL` does and therefore contexts requiring values trusted for `$sce.URL` can be used anywhere that values trusted for `$sce.MEDIA_URL` are required.| + * | `$sce.RESOURCE_URL` | For URLs that are not only safe to follow as links, but whose contents are also safe to include in your application. Examples include `ng-include`, `src` / `ngSrc` bindings for tags other than `IMG` (e.g. `IFRAME`, `OBJECT`, etc.)

    Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` or `$sce.MEDIA_URL` do and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` or `$sce.MEDIA_URL` are required. | + * | `$sce.JS` | For JavaScript that is safe to execute in your application's context. Currently unused. Feel free to use it in your own directives. | + * + * + *
    + * Be aware that, before AngularJS 1.7.0, `a[href]` and `img[src]` used to sanitize their + * interpolated values directly rather than rely upon {@link ng.$sce#getTrusted `$sce.getTrusted`}. * + * **As of 1.7.0, this is no longer the case.** + * + * Now such interpolations are marked as requiring `$sce.URL` (for `a[href]`) or `$sce.MEDIA_URL` + * (for `img[src]`), so that the sanitization happens (via `$sce.getTrusted...`) when the `$interpolate` + * service evaluates the expressions. + *
    * - * Be aware that `a[href]` and `img[src]` automatically sanitize their URLs and do not pass them - * through {@link ng.$sce#getTrusted $sce.getTrusted}. There's no CSS-, URL-, or JS-context bindings - * in AngularJS currently, so their corresponding `$sce.trustAs` functions aren't useful yet. This - * might evolve. + * There are no CSS or JS context bindings in AngularJS currently, so their corresponding `$sce.trustAs` + * functions aren't useful yet. This might evolve. * * ### Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist}
    * @@ -778,7 +813,7 @@ function $SceProvider() { * such a value. * * - getTrusted(contextEnum, value) - * This function should return the a value that is safe to use in the context specified by + * This function should return the value that is safe to use in the context specified by * contextEnum or throw and exception otherwise. * * NOTE: This contract deliberately does NOT state that values returned by trustAs() must be diff --git a/src/ngSanitize/sanitize.js b/src/ngSanitize/sanitize.js index 4920a5756765..b08850fba065 100644 --- a/src/ngSanitize/sanitize.js +++ b/src/ngSanitize/sanitize.js @@ -41,12 +41,11 @@ var htmlSanitizeWriter; * Sanitizes an html string by stripping all potentially dangerous tokens. * * The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are - * then serialized back to properly escaped html string. This means that no unsafe input can make + * then serialized back to a properly escaped HTML string. This means that no unsafe input can make * it into the returned string. * * The whitelist for URL sanitization of attribute values is configured using the functions - * `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider - * `$compileProvider`}. + * `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link $compileProvider}. * * The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}. * diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index 05a911ac6169..acda50470485 100644 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -151,13 +151,34 @@ describe('$compile', function() { describe('configuration', function() { - it('should allow aHrefSanitizationWhitelist to be configured', function() { - module(function($compileProvider) { - expect($compileProvider.aHrefSanitizationWhitelist()).toEqual(/^\s*(https?|s?ftp|mailto|tel|file):/); // the default - $compileProvider.aHrefSanitizationWhitelist(/other/); - expect($compileProvider.aHrefSanitizationWhitelist()).toEqual(/other/); + it('should use $$sanitizeUriProvider for reconfiguration of the `aHrefSanitizationWhitelist`', function() { + module(function($compileProvider, $$sanitizeUriProvider) { + var newRe = /safe:/, returnVal; + + expect($compileProvider.aHrefSanitizationWhitelist()).toBe($$sanitizeUriProvider.aHrefSanitizationWhitelist()); + returnVal = $compileProvider.aHrefSanitizationWhitelist(newRe); + expect(returnVal).toBe($compileProvider); + expect($$sanitizeUriProvider.aHrefSanitizationWhitelist()).toBe(newRe); + expect($compileProvider.aHrefSanitizationWhitelist()).toBe(newRe); + }); + inject(function() { + // needed to the module definition above is run... + }); + }); + + it('should use $$sanitizeUriProvider for reconfiguration of the `imgSrcSanitizationWhitelist`', function() { + module(function($compileProvider, $$sanitizeUriProvider) { + var newRe = /safe:/, returnVal; + + expect($compileProvider.imgSrcSanitizationWhitelist()).toBe($$sanitizeUriProvider.imgSrcSanitizationWhitelist()); + returnVal = $compileProvider.imgSrcSanitizationWhitelist(newRe); + expect(returnVal).toBe($compileProvider); + expect($$sanitizeUriProvider.imgSrcSanitizationWhitelist()).toBe(newRe); + expect($compileProvider.imgSrcSanitizationWhitelist()).toBe(newRe); + }); + inject(function() { + // needed to the module definition above is run... }); - inject(); }); it('should allow debugInfoEnabled to be configured', function() { @@ -3393,6 +3414,15 @@ describe('$compile', function() { }) ); + it('should interpolate a multi-part expression for regular attributes', inject(function($compile, $rootScope) { + element = $compile('
    ')($rootScope); + $rootScope.$digest(); + expect(element.attr('foo')).toBe('some/'); + $rootScope.$apply(function() { + $rootScope.id = 1; + }); + expect(element.attr('foo')).toEqual('some/1'); + })); it('should process attribute interpolation in pre-linking phase at priority 100', function() { module(function() { @@ -4135,12 +4165,15 @@ describe('$compile', function() { var attr; beforeEach(function() { module(function() { - directive('input', valueFn({ - restrict: 'ECA', - link: function(scope, element, attr) { - scope.attr = attr; - } - })); + // Create directives that capture the `attr` object + ['input', 'a', 'img'].forEach(function(tag) { + directive(tag, valueFn({ + restrict: 'ECA', + link: function(scope, element, attr) { + scope.attr = attr; + } + })); + }); }); inject(function($compile, $rootScope) { element = $compile('')($rootScope); @@ -4187,6 +4220,37 @@ describe('$compile', function() { expect(element.attr('test')).toBeUndefined(); expect(attr.test).toBe('value'); }); + + it('should not automatically sanitize a[href]', inject(function($compile, $rootScope) { + // Breaking change in https://github.com/angular/angular.js/pull/16378 + element = $compile('')($rootScope); + $rootScope.attr.$set('href', 'evil:foo()'); + expect(element.attr('href')).toEqual('evil:foo()'); + expect($rootScope.attr.href).toEqual('evil:foo()'); + })); + + it('should not automatically sanitize img[src]', inject(function($compile, $rootScope) { + // Breaking change in https://github.com/angular/angular.js/pull/16378 + element = $compile('')($rootScope); + $rootScope.attr.$set('img', 'evil:foo()'); + expect(element.attr('img')).toEqual('evil:foo()'); + expect($rootScope.attr.img).toEqual('evil:foo()'); + })); + + it('should automatically sanitize img[srcset]', inject(function($compile, $rootScope) { + element = $compile('')($rootScope); + $rootScope.attr.$set('srcset', 'evil:foo()'); + expect(element.attr('srcset')).toEqual('unsafe:evil:foo()'); + expect($rootScope.attr.srcset).toEqual('unsafe:evil:foo()'); + })); + + it('should not accept trusted values for img[srcset]', inject(function($compile, $rootScope, $sce) { + var trusted = $sce.trustAsMediaUrl('trustme:foo()'); + element = $compile('')($rootScope); + expect(function() { + $rootScope.attr.$set('srcset', trusted); + }).toThrowMinErr('$compile', 'srcset', 'Can\'t pass trusted values to `$set(\'srcset\', value)`: "trustme:foo()"'); + })); }); }); @@ -11071,91 +11135,114 @@ describe('$compile', function() { ); }); - describe('*[src] context requirement', function() { - - it('should NOT require trusted values for img src', inject(function($rootScope, $compile, $sce) { - element = $compile('')($rootScope); - $rootScope.testUrl = 'http://example.com/image.png'; - $rootScope.$digest(); - expect(element.attr('src')).toEqual('http://example.com/image.png'); - // But it should accept trusted values anyway. - $rootScope.testUrl = $sce.trustAsUrl('http://example.com/image2.png'); - $rootScope.$digest(); - expect(element.attr('src')).toEqual('http://example.com/image2.png'); - })); - + ['img', 'audio', 'video'].forEach(function(tag) { // Support: IE 9 only - // IE9 rejects the video / audio tag with "Error: Not implemented" and the source tag with - // "Unable to get value of the property 'childNodes': object is null or undefined" - if (msie !== 9) { - they('should NOT require trusted values for $prop src', ['video', 'audio'], - function(tag) { - inject(function($rootScope, $compile, $sce) { + // IE9 rejects the `video` / `audio` tags with "Error: Not implemented" + if (msie !== 9 || tag === 'img') { + describe(tag + '[src] context requirement', function() { + it('should NOT require trusted values for whitelisted URIs', inject(function($rootScope, $compile) { element = $compile('<' + tag + ' src="https://github.com/%7B%7BtestUrl%7D%7D">')($rootScope); - $rootScope.testUrl = 'http://example.com/image.mp4'; + $rootScope.testUrl = 'http://example.com/image.mp4'; // `http` is whitelisted $rootScope.$digest(); expect(element.attr('src')).toEqual('http://example.com/image.mp4'); + })); + + it('should accept trusted values', inject(function($rootScope, $compile, $sce) { + // As a MEDIA_URL URL + element = $compile('<' + tag + ' src="https://github.com/%7B%7BtestUrl%7D%7D">')($rootScope); + // Some browsers complain if you try to write `javascript:` into an `img[src]` + // So for the test use something different + $rootScope.testUrl = $sce.trustAsMediaUrl('untrusted:foo()'); + $rootScope.$digest(); + expect(element.attr('src')).toEqual('untrusted:foo()'); - // But it should accept trusted values anyway. - $rootScope.testUrl = $sce.trustAsUrl('http://example.com/image2.mp4'); + // As a URL + element = $compile('<' + tag + ' src="https://github.com/%7B%7BtestUrl%7D%7D">')($rootScope); + $rootScope.testUrl = $sce.trustAsUrl('untrusted:foo()'); $rootScope.$digest(); - expect(element.attr('src')).toEqual('http://example.com/image2.mp4'); + expect(element.attr('src')).toEqual('untrusted:foo()'); - // and trustedResourceUrls for retrocompatibility - $rootScope.testUrl = $sce.trustAsResourceUrl('http://example.com/image3.mp4'); + // As a RESOURCE URL + element = $compile('<' + tag + ' src="https://github.com/%7B%7BtestUrl%7D%7D">')($rootScope); + $rootScope.testUrl = $sce.trustAsResourceUrl('untrusted:foo()'); $rootScope.$digest(); - expect(element.attr('src')).toEqual('http://example.com/image3.mp4'); - }); + expect(element.attr('src')).toEqual('untrusted:foo()'); + })); }); + } + }); - they('should NOT require trusted values for $prop src', ['source', 'track'], - function(tag) { - inject(function($rootScope, $compile, $sce) { + // Support: IE 9 only + // IE 9 rejects the `source` / `track` tags with + // "Unable to get value of the property 'childNodes': object is null or undefined" + if (msie !== 9) { + ['source', 'track'].forEach(function(tag) { + describe(tag + '[src]', function() { + it('should NOT require trusted values for whitelisted URIs', inject(function($rootScope, $compile) { element = $compile('')($rootScope); - $rootScope.testUrl = 'http://example.com/image.mp4'; + $rootScope.testUrl = 'http://example.com/image.mp4'; // `http` is whitelisted $rootScope.$digest(); expect(element.find(tag).attr('src')).toEqual('http://example.com/image.mp4'); + })); - // But it should accept trusted values anyway. - $rootScope.testUrl = $sce.trustAsUrl('http://example.com/image2.mp4'); + it('should accept trusted values', inject(function($rootScope, $compile, $sce) { + // As a MEDIA_URL URL + element = $compile('')($rootScope); + $rootScope.testUrl = $sce.trustAsMediaUrl('javascript:foo()'); $rootScope.$digest(); - expect(element.find(tag).attr('src')).toEqual('http://example.com/image2.mp4'); + expect(element.find(tag).attr('src')).toEqual('javascript:foo()'); - // and trustedResourceUrls for retrocompatibility - $rootScope.testUrl = $sce.trustAsResourceUrl('http://example.com/image3.mp4'); + // As a URL + element = $compile('')($rootScope); + $rootScope.testUrl = $sce.trustAsUrl('javascript:foo()'); $rootScope.$digest(); - expect(element.find(tag).attr('src')).toEqual('http://example.com/image3.mp4'); - }); + expect(element.find(tag).attr('src')).toEqual('javascript:foo()'); + + // As a RESOURCE URL + element = $compile('')($rootScope); + $rootScope.testUrl = $sce.trustAsResourceUrl('javascript:foo()'); + $rootScope.$digest(); + expect(element.find(tag).attr('src')).toEqual('javascript:foo()'); + })); }); - } - }); + }); + } describe('img[src] sanitization', function() { + it('should accept trusted values', inject(function($rootScope, $compile, $sce) { + element = $compile('')($rootScope); + // Some browsers complain if you try to write `javascript:` into an `img[src]` + // So for the test use something different + $rootScope.testUrl = $sce.trustAsMediaUrl('someUntrustedThing:foo();'); + $rootScope.$digest(); + expect(element.attr('src')).toEqual('someUntrustedThing:foo();'); + })); + + it('should sanitize concatenated values even if they are trusted', inject(function($rootScope, $compile, $sce) { + element = $compile('')($rootScope); + $rootScope.testUrl = $sce.trustAsUrl('untrusted:foo();'); + $rootScope.$digest(); + expect(element.attr('src')).toEqual('unsafe:untrusted:foo();ponies'); + + element = $compile('')($rootScope); + $rootScope.testUrl2 = $sce.trustAsUrl('xyz;'); + $rootScope.$digest(); + expect(element.attr('src')).toEqual('http://xyz;/'); + + element = $compile('')($rootScope); + $rootScope.testUrl3 = $sce.trustAsUrl('untrusted:foo();'); + $rootScope.$digest(); + expect(element.attr('src')).toEqual('unsafe:untrusted:foo();untrusted:foo();'); + })); + it('should not sanitize attributes other than src', inject(function($compile, $rootScope) { element = $compile('')($rootScope); $rootScope.testUrl = 'javascript:doEvilStuff()'; $rootScope.$apply(); - expect(element.attr('title')).toBe('javascript:doEvilStuff()'); })); - it('should use $$sanitizeUriProvider for reconfiguration of the src whitelist', function() { - module(function($compileProvider, $$sanitizeUriProvider) { - var newRe = /javascript:/, - returnVal; - expect($compileProvider.imgSrcSanitizationWhitelist()).toBe($$sanitizeUriProvider.imgSrcSanitizationWhitelist()); - - returnVal = $compileProvider.imgSrcSanitizationWhitelist(newRe); - expect(returnVal).toBe($compileProvider); - expect($$sanitizeUriProvider.imgSrcSanitizationWhitelist()).toBe(newRe); - expect($compileProvider.imgSrcSanitizationWhitelist()).toBe(newRe); - }); - inject(function() { - // needed to the module definition above is run... - }); - }); - it('should use $$sanitizeUri', function() { var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri'); module(function($provide) { @@ -11171,55 +11258,113 @@ describe('$compile', function() { expect($$sanitizeUri).toHaveBeenCalledWith($rootScope.testUrl, true); }); }); + + + it('should use $$sanitizeUri on concatenated trusted values', function() { + var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri').and.returnValue('someSanitizedUrl'); + module(function($provide) { + $provide.value('$$sanitizeUri', $$sanitizeUri); + }); + inject(function($compile, $rootScope, $sce) { + element = $compile('')($rootScope); + $rootScope.testUrl = $sce.trustAsUrl('javascript:foo();'); + $rootScope.$digest(); + expect(element.attr('src')).toEqual('someSanitizedUrl'); + + element = $compile('')($rootScope); + $rootScope.testUrl = $sce.trustAsUrl('xyz'); + $rootScope.$digest(); + expect(element.attr('src')).toEqual('someSanitizedUrl'); + }); + }); + + it('should not use $$sanitizeUri with trusted values', function() { + var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri').and.throwError('Should not have been called'); + module(function($provide) { + $provide.value('$$sanitizeUri', $$sanitizeUri); + }); + inject(function($compile, $rootScope, $sce) { + element = $compile('')($rootScope); + // Assigning javascript:foo to src makes at least IE9-11 complain, so use another + // protocol name. + $rootScope.testUrl = $sce.trustAsMediaUrl('untrusted:foo();'); + $rootScope.$apply(); + expect(element.attr('src')).toEqual('untrusted:foo();'); + }); + }); }); describe('img[srcset] sanitization', function() { - - it('should not error if undefined', function() { + it('should not error if srcset is undefined', function() { var linked = false; module(function() { directive('setter', valueFn(function(scope, elem, attrs) { + // Set srcset to a value attrs.$set('srcset', 'http://example.com/'); expect(attrs.srcset).toBe('http://example.com/'); - + // Now set it to undefined attrs.$set('srcset', undefined); expect(attrs.srcset).toBeUndefined(); - linked = true; })); }); inject(function($compile, $rootScope) { element = $compile('')($rootScope); - expect(linked).toBe(true); expect(element.attr('srcset')).toBeUndefined(); }); }); - it('should NOT require trusted values for img srcset', inject(function($rootScope, $compile, $sce) { + it('should NOT require trusted values for whitelisted values', inject(function($rootScope, $compile, $sce) { element = $compile('')($rootScope); - $rootScope.testUrl = 'http://example.com/image.png'; + $rootScope.testUrl = 'http://example.com/image.png'; // `http` is whitelisted $rootScope.$digest(); expect(element.attr('srcset')).toEqual('http://example.com/image.png'); - // But it should accept trusted values anyway. - $rootScope.testUrl = $sce.trustAsUrl('http://example.com/image2.png'); + })); + + it('should accept trusted values, if they are also whitelisted', inject(function($rootScope, $compile, $sce) { + element = $compile('')($rootScope); + $rootScope.testUrl = $sce.trustAsUrl('http://example.com/'); $rootScope.$digest(); - expect(element.attr('srcset')).toEqual('http://example.com/image2.png'); + expect(element.attr('srcset')).toEqual('http://example.com/'); + })); + + it('does not work with trusted values', inject(function($rootScope, $compile, $sce) { + // A limitation of the approach used for srcset is that you cannot use `trustAsUrl`. + // Use trustAsHtml and ng-bind-html to work around this. + element = $compile('')($rootScope); + $rootScope.testUrl = $sce.trustAsUrl('javascript:something'); + $rootScope.$digest(); + expect(element.attr('srcset')).toEqual('unsafe:javascript:something'); + + element = $compile('')($rootScope); + $rootScope.testUrl = $sce.trustAsUrl('javascript:something'); + $rootScope.$digest(); + expect(element.attr('srcset')).toEqual( + 'unsafe:javascript:something ,unsafe:javascript:something'); })); it('should use $$sanitizeUri', function() { - var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri'); + var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri').and.returnValue('someSanitizedUrl'); module(function($provide) { $provide.value('$$sanitizeUri', $$sanitizeUri); }); inject(function($compile, $rootScope) { element = $compile('')($rootScope); $rootScope.testUrl = 'someUrl'; - - $$sanitizeUri.and.returnValue('someSanitizedUrl'); $rootScope.$apply(); expect(element.attr('srcset')).toBe('someSanitizedUrl'); expect($$sanitizeUri).toHaveBeenCalledWith($rootScope.testUrl, true); + + element = $compile('')($rootScope); + $rootScope.testUrl = 'javascript:yay'; + $rootScope.$apply(); + expect(element.attr('srcset')).toEqual('someSanitizedUrl ,someSanitizedUrl'); + + element = $compile('')($rootScope); + $rootScope.testUrl = 'script:yay, javascript:nay'; + $rootScope.$apply(); + expect(element.attr('srcset')).toEqual('someSanitizedUrl ,someSanitizedUrl'); }); }); @@ -11263,6 +11408,38 @@ describe('$compile', function() { }); describe('a[href] sanitization', function() { + it('should NOT require trusted values for whitelisted values', inject(function($rootScope, $compile) { + $rootScope.testUrl = 'http://example.com/image.png'; // `http` is whitelisted + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('href')).toEqual('http://example.com/image.png'); + + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('ng-href')).toEqual('http://example.com/image.png'); + })); + + it('should accept trusted values for non-whitelisted values', inject(function($rootScope, $compile, $sce) { + $rootScope.testUrl = $sce.trustAsUrl('javascript:foo()'); // `javascript` is not whitelisted + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('href')).toEqual('javascript:foo()'); + + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('ng-href')).toEqual('javascript:foo()'); + })); + + it('should sanitize non-whitelisted values', inject(function($rootScope, $compile) { + $rootScope.testUrl = 'javascript:foo()'; // `javascript` is not whitelisted + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('href')).toEqual('unsafe:javascript:foo()'); + + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('href')).toEqual('unsafe:javascript:foo()'); + })); it('should not sanitize href on elements other than anchor', inject(function($compile, $rootScope) { element = $compile('
    ')($rootScope); @@ -11272,7 +11449,7 @@ describe('$compile', function() { expect(element.attr('href')).toBe('javascript:doEvilStuff()'); })); - it('should not sanitize attributes other than href', inject(function($compile, $rootScope) { + it('should not sanitize attributes other than href/ng-href', inject(function($compile, $rootScope) { element = $compile('')($rootScope); $rootScope.testUrl = 'javascript:doEvilStuff()'; $rootScope.$apply(); @@ -11280,48 +11457,21 @@ describe('$compile', function() { expect(element.attr('title')).toBe('javascript:doEvilStuff()'); })); - it('should use $$sanitizeUriProvider for reconfiguration of the href whitelist', function() { - module(function($compileProvider, $$sanitizeUriProvider) { - var newRe = /javascript:/, - returnVal; - expect($compileProvider.aHrefSanitizationWhitelist()).toBe($$sanitizeUriProvider.aHrefSanitizationWhitelist()); - - returnVal = $compileProvider.aHrefSanitizationWhitelist(newRe); - expect(returnVal).toBe($compileProvider); - expect($$sanitizeUriProvider.aHrefSanitizationWhitelist()).toBe(newRe); - expect($compileProvider.aHrefSanitizationWhitelist()).toBe(newRe); - }); - inject(function() { - // needed to the module definition above is run... - }); - }); - it('should use $$sanitizeUri', function() { - var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri'); + var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri').and.returnValue('someSanitizedUrl'); module(function($provide) { $provide.value('$$sanitizeUri', $$sanitizeUri); }); inject(function($compile, $rootScope) { element = $compile('')($rootScope); $rootScope.testUrl = 'someUrl'; - - $$sanitizeUri.and.returnValue('someSanitizedUrl'); $rootScope.$apply(); expect(element.attr('href')).toBe('someSanitizedUrl'); expect($$sanitizeUri).toHaveBeenCalledWith($rootScope.testUrl, false); - }); - }); - it('should use $$sanitizeUri when declared via ng-href', function() { - var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri'); - module(function($provide) { - $provide.value('$$sanitizeUri', $$sanitizeUri); - }); - inject(function($compile, $rootScope) { - element = $compile('')($rootScope); - $rootScope.testUrl = 'someUrl'; + $$sanitizeUri.calls.reset(); - $$sanitizeUri.and.returnValue('someSanitizedUrl'); + element = $compile('')($rootScope); $rootScope.$apply(); expect(element.attr('href')).toBe('someSanitizedUrl'); expect($$sanitizeUri).toHaveBeenCalledWith($rootScope.testUrl, false); @@ -11329,72 +11479,72 @@ describe('$compile', function() { }); it('should use $$sanitizeUri when working with svg and xlink:href', function() { - var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri'); + var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri').and.returnValue('https://clean.example.org/'); module(function($provide) { $provide.value('$$sanitizeUri', $$sanitizeUri); }); inject(function($compile, $rootScope) { - var elementA = $compile('')($rootScope); - var elementImage = $compile('')($rootScope); - - //both of these fail the RESOURCE_URL test, that shouldn't be run + // This URL would fail the RESOURCE_URL whitelist, but that test shouldn't be run + // because these interpolations will be resolved against the URL context instead $rootScope.testUrl = 'https://bad.example.org/'; - $$sanitizeUri.and.returnValue('https://clean.example.org/'); + var elementA = $compile('')($rootScope); $rootScope.$apply(); expect(elementA.find('a').attr('xlink:href')).toBe('https://clean.example.org/'); + expect($$sanitizeUri).toHaveBeenCalledWith($rootScope.testUrl + 'aTag', false); + + var elementImage = $compile('')($rootScope); + $rootScope.$apply(); expect(elementImage.find('image').attr('xlink:href')).toBe('https://clean.example.org/'); - // is navigational, so the second argument should be false to reach the aHref whitelist - expect($$sanitizeUri).toHaveBeenCalledWith($rootScope.testUrl + 'aTag' , false); - // is media inclusion, it should use the imgSrc whitelist expect($$sanitizeUri).toHaveBeenCalledWith($rootScope.testUrl + 'imageTag', true); }); }); it('should use $$sanitizeUri when working with svg and xlink:href through ng-href', function() { - var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri'); + var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri').and.returnValue('https://clean.example.org/'); module(function($provide) { $provide.value('$$sanitizeUri', $$sanitizeUri); }); inject(function($compile, $rootScope) { - element = $compile('')($rootScope); - //both of these fail the RESOURCE_URL test, that shouldn't be run + // This URL would fail the RESOURCE_URL whitelist, but that test shouldn't be run + // because these interpolations will be resolved against the URL context instead $rootScope.testUrl = 'https://bad.example.org/'; - $$sanitizeUri.and.returnValue('https://clean.example.org/'); - - $rootScope.$apply(); - expect(element.find('a').prop('href').baseVal).toBe('https://clean.example.org/'); - expect($$sanitizeUri).toHaveBeenCalledWith($rootScope.testUrl, false); - }); - }); - - it('should use $$sanitizeUri when working with svg and xlink:href through ng-href', function() { - var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri'); - module(function($provide) { - $provide.value('$$sanitizeUri', $$sanitizeUri); - }); - inject(function($compile, $rootScope) { element = $compile('')($rootScope); - $rootScope.testUrl = 'evilUrl'; - - $$sanitizeUri.and.returnValue('someSanitizedUrl'); $rootScope.$apply(); - expect(element.find('a').prop('href').baseVal).toBe('someSanitizedUrl'); + expect(element.find('a').prop('href').baseVal).toBe('https://clean.example.org/'); expect($$sanitizeUri).toHaveBeenCalledWith($rootScope.testUrl, false); }); }); - it('should have a RESOURCE_URL context for xlink:href by default', function() { + it('should require a RESOURCE_URL context for xlink:href by if not on an anchor or image', function() { inject(function($compile, $rootScope) { element = $compile('')($rootScope); $rootScope.testUrl = 'https://bad.example.org/'; expect(function() { $rootScope.$apply(); - }).toThrowError(/\$sce:insecurl/); + }).toThrowMinErr('$interpolate', 'interr', 'Can\'t interpolate: {{ testUrl }}\n' + + 'Error: [$sce:insecurl] Blocked loading resource from url not allowed by $sceDelegate policy. ' + + 'URL: https://bad.example.org'); }); }); + + it('should not have endless digests when given arrays in concatenable context', inject(function($compile, $rootScope) { + element = $compile('' + + '')($rootScope); + $rootScope.testUrl = [1]; + $rootScope.$digest(); + + $rootScope.testUrl = []; + $rootScope.$digest(); + + $rootScope.testUrl = {a:'b'}; + $rootScope.$digest(); + + $rootScope.testUrl = {}; + $rootScope.$digest(); + })); }); describe('interpolation on HTML DOM event handler attributes onclick, onXYZ, formaction', function() { diff --git a/test/ng/directive/booleanAttrsSpec.js b/test/ng/directive/booleanAttrsSpec.js index ac6cbdcbfd04..8d68ab999666 100644 --- a/test/ng/directive/booleanAttrsSpec.js +++ b/test/ng/directive/booleanAttrsSpec.js @@ -118,211 +118,3 @@ describe('boolean attr directives', function() { })); }); }); - - -describe('ngSrc', function() { - it('should interpolate the expression and bind to src with raw same-domain value', - inject(function($compile, $rootScope) { - var element = $compile('
    ')($rootScope); - - $rootScope.$digest(); - expect(element.attr('src')).toBeUndefined(); - - $rootScope.$apply(function() { - $rootScope.id = '/somewhere/here'; - }); - expect(element.attr('src')).toEqual('/somewhere/here'); - - dealoc(element); - })); - - - it('should interpolate the expression and bind to src with a trusted value', inject(function($compile, $rootScope, $sce) { - var element = $compile('
    ')($rootScope); - - $rootScope.$digest(); - expect(element.attr('src')).toBeUndefined(); - - $rootScope.$apply(function() { - $rootScope.id = $sce.trustAsResourceUrl('http://somewhere/'); - }); - expect(element.attr('src')).toEqual('http://somewhere/'); - - dealoc(element); - })); - - - it('should NOT interpolate a multi-part expression for non-img src attribute', inject(function($compile, $rootScope) { - expect(function() { - var element = $compile('
    ')($rootScope); - dealoc(element); - }).toThrowMinErr( - '$interpolate', 'noconcat', 'Error while interpolating: some/{{id}}\nStrict ' + - 'Contextual Escaping disallows interpolations that concatenate multiple expressions ' + - 'when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce'); - })); - - - it('should interpolate a multi-part expression for regular attributes', inject(function($compile, $rootScope) { - var element = $compile('
    ')($rootScope); - $rootScope.$digest(); - expect(element.attr('foo')).toBe('some/'); - $rootScope.$apply(function() { - $rootScope.id = 1; - }); - expect(element.attr('foo')).toEqual('some/1'); - })); - - - it('should NOT interpolate a wrongly typed expression', inject(function($compile, $rootScope, $sce) { - expect(function() { - var element = $compile('
    ')($rootScope); - $rootScope.$apply(function() { - $rootScope.id = $sce.trustAsUrl('http://somewhere/'); - }); - element.attr('src'); - }).toThrowMinErr( - '$interpolate', 'interr', 'Can\'t interpolate: {{id}}\nError: [$sce:insecurl] Blocked ' + - 'loading resource from url not allowed by $sceDelegate policy. URL: http://somewhere'); - })); - - - // Support: IE 9-11 only - if (msie) { - it('should update the element property as well as the attribute', inject( - function($compile, $rootScope, $sce) { - // on IE, if "ng:src" directive declaration is used and "src" attribute doesn't exist - // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need - // to set the property as well to achieve the desired effect - - var element = $compile('
    ')($rootScope); - - $rootScope.$digest(); - expect(element.prop('src')).toBeUndefined(); - dealoc(element); - - element = $compile('
    ')($rootScope); - - $rootScope.$digest(); - expect(element.prop('src')).toEqual('some/'); - dealoc(element); - - element = $compile('
    ')($rootScope); - $rootScope.$apply(function() { - $rootScope.id = $sce.trustAsResourceUrl('http://somewhere/'); - }); - expect(element.prop('src')).toEqual('http://somewhere/'); - - dealoc(element); - })); - } -}); - - -describe('ngSrcset', function() { - it('should interpolate the expression and bind to srcset', inject(function($compile, $rootScope) { - var element = $compile('
    ')($rootScope); - - $rootScope.$digest(); - expect(element.attr('srcset')).toBeUndefined(); - - $rootScope.$apply(function() { - $rootScope.id = 1; - }); - expect(element.attr('srcset')).toEqual('some/1 2x'); - - dealoc(element); - })); -}); - - -describe('ngHref', function() { - var element; - - afterEach(function() { - dealoc(element); - }); - - - it('should interpolate the expression and bind to href', inject(function($compile, $rootScope) { - element = $compile('
    ')($rootScope); - $rootScope.$digest(); - expect(element.attr('href')).toEqual('some/'); - - $rootScope.$apply(function() { - $rootScope.id = 1; - }); - expect(element.attr('href')).toEqual('some/1'); - })); - - - it('should bind href and merge with other attrs', inject(function($rootScope, $compile) { - element = $compile('
    ')($rootScope); - $rootScope.url = 'http://server/'; - $rootScope.rel = 'REL'; - $rootScope.$digest(); - expect(element.attr('href')).toEqual('http://server/'); - expect(element.attr('rel')).toEqual('REL'); - })); - - - it('should bind href even if no interpolation', inject(function($rootScope, $compile) { - element = $compile('')($rootScope); - $rootScope.$digest(); - expect(element.attr('href')).toEqual('http://server/'); - })); - - it('should not set the href if ng-href is empty', inject(function($rootScope, $compile) { - $rootScope.url = null; - element = $compile('')($rootScope); - $rootScope.$digest(); - expect(element.attr('href')).toEqual(undefined); - })); - - it('should remove the href if ng-href changes to empty', inject(function($rootScope, $compile) { - $rootScope.url = 'http://www.google.com/'; - element = $compile('')($rootScope); - $rootScope.$digest(); - - $rootScope.url = null; - $rootScope.$digest(); - expect(element.attr('href')).toEqual(undefined); - })); - - // Support: IE 9-11 only, Edge 12-15+ - if (msie || /\bEdge\/[\d.]+\b/.test(window.navigator.userAgent)) { - // IE/Edge fail when setting a href to a URL containing a % that isn't a valid escape sequence - // See https://github.com/angular/angular.js/issues/13388 - it('should throw error if ng-href contains a non-escaped percent symbol', inject(function($rootScope, $compile) { - element = $compile('')($rootScope); - - expect(function() { - $rootScope.$digest(); - }).toThrow(); - })); - } - - if (isDefined(window.SVGElement)) { - describe('SVGAElement', function() { - it('should interpolate the expression and bind to xlink:href', inject(function($compile, $rootScope) { - element = $compile('')($rootScope); - var child = element.children('a'); - $rootScope.$digest(); - expect(child.attr('xlink:href')).toEqual('some/'); - - $rootScope.$apply(function() { - $rootScope.id = 1; - }); - expect(child.attr('xlink:href')).toEqual('some/1'); - })); - - - it('should bind xlink:href even if no interpolation', inject(function($rootScope, $compile) { - element = $compile('')($rootScope); - var child = element.children('a'); - $rootScope.$digest(); - expect(child.attr('xlink:href')).toEqual('http://server/'); - })); - }); - } -}); diff --git a/test/ng/directive/ngHrefSpec.js b/test/ng/directive/ngHrefSpec.js new file mode 100644 index 000000000000..6d44ac8b5631 --- /dev/null +++ b/test/ng/directive/ngHrefSpec.js @@ -0,0 +1,105 @@ +'use strict'; + +describe('ngHref', function() { + var element; + + afterEach(function() { + dealoc(element); + }); + + + it('should interpolate the expression and bind to href', inject(function($compile, $rootScope) { + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('href')).toEqual('some/'); + + $rootScope.$apply(function() { + $rootScope.id = 1; + }); + expect(element.attr('href')).toEqual('some/1'); + })); + + + it('should bind href and merge with other attrs', inject(function($rootScope, $compile) { + element = $compile('')($rootScope); + $rootScope.url = 'http://server/'; + $rootScope.rel = 'REL'; + $rootScope.$digest(); + expect(element.attr('href')).toEqual('http://server/'); + expect(element.attr('rel')).toEqual('REL'); + })); + + + it('should bind href even if no interpolation', inject(function($rootScope, $compile) { + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('href')).toEqual('http://server/'); + })); + + it('should not set the href if ng-href is empty', inject(function($rootScope, $compile) { + $rootScope.url = null; + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('href')).toEqual(undefined); + })); + + it('should remove the href if ng-href changes to empty', inject(function($rootScope, $compile) { + $rootScope.url = 'http://www.google.com/'; + element = $compile('')($rootScope); + $rootScope.$digest(); + + $rootScope.url = null; + $rootScope.$digest(); + expect(element.attr('href')).toEqual(undefined); + })); + + it('should sanitize interpolated url', inject(function($rootScope, $compile) { + /* eslint no-script-url: "off" */ + $rootScope.imageUrl = 'javascript:alert(1);'; + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('href')).toBe('unsafe:javascript:alert(1);'); + })); + + it('should sanitize non-interpolated url', inject(function($rootScope, $compile) { + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('href')).toBe('unsafe:javascript:alert(1);'); + })); + + + // Support: IE 9-11 only, Edge 12-15+ + if (msie || /\bEdge\/[\d.]+\b/.test(window.navigator.userAgent)) { + // IE/Edge fail when setting a href to a URL containing a % that isn't a valid escape sequence + // See https://github.com/angular/angular.js/issues/13388 + it('should throw error if ng-href contains a non-escaped percent symbol', inject(function($rootScope, $compile) { + expect(function() { + element = $compile('')($rootScope); + }).toThrow(); + })); + } + + if (isDefined(window.SVGElement)) { + describe('SVGAElement', function() { + it('should interpolate the expression and bind to xlink:href', inject(function($compile, $rootScope) { + element = $compile('')($rootScope); + var child = element.children('a'); + $rootScope.$digest(); + expect(child.attr('xlink:href')).toEqual('some/'); + + $rootScope.$apply(function() { + $rootScope.id = 1; + }); + expect(child.attr('xlink:href')).toEqual('some/1'); + })); + + + it('should bind xlink:href even if no interpolation', inject(function($rootScope, $compile) { + element = $compile('')($rootScope); + var child = element.children('a'); + $rootScope.$digest(); + expect(child.attr('xlink:href')).toEqual('http://server/'); + })); + }); + } +}); diff --git a/test/ng/directive/ngSrcSpec.js b/test/ng/directive/ngSrcSpec.js index 6c971a0b0419..5d2a067026b8 100644 --- a/test/ng/directive/ngSrcSpec.js +++ b/test/ng/directive/ngSrcSpec.js @@ -18,12 +18,66 @@ describe('ngSrc', function() { expect(element.attr('src')).toBeUndefined(); })); - it('should sanitize url', inject(function($rootScope, $compile) { + it('should sanitize interpolated url', inject(function($rootScope, $compile) { $rootScope.imageUrl = 'javascript:alert(1);'; element = $compile('')($rootScope); $rootScope.$digest(); expect(element.attr('src')).toBe('unsafe:javascript:alert(1);'); })); + + it('should sanitize non-interpolated url', inject(function($rootScope, $compile) { + element = $compile('')($rootScope); + $rootScope.$digest(); + expect(element.attr('src')).toBe('unsafe:javascript:alert(1);'); + })); + + it('should interpolate the expression and bind to src with raw same-domain value', inject(function($compile, $rootScope) { + element = $compile('')($rootScope); + + $rootScope.$digest(); + expect(element.attr('src')).toBeUndefined(); + + $rootScope.$apply(function() { + $rootScope.id = '/somewhere/here'; + }); + expect(element.attr('src')).toEqual('/somewhere/here'); + })); + + it('should interpolate a multi-part expression for img src attribute (which requires the MEDIA_URL context)', inject(function($compile, $rootScope) { + element = $compile('')($rootScope); + expect(element.attr('src')).toBe(undefined); // URL concatenations are all-or-nothing + $rootScope.$apply(function() { + $rootScope.id = 1; + }); + expect(element.attr('src')).toEqual('some/1'); + })); + + // Support: IE 9-11 only + if (msie) { + it('should update the element property as well as the attribute', inject(function($compile, $rootScope, $sce) { + // on IE, if "ng:src" directive declaration is used and "src" attribute doesn't exist + // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need + // to set the property as well to achieve the desired effect + + element = $compile('')($rootScope); + + $rootScope.$digest(); + expect(element.prop('src')).toBe(''); + dealoc(element); + + element = $compile('')($rootScope); + + $rootScope.$digest(); + expect(element.prop('src')).toMatch('/some/$'); + dealoc(element); + + element = $compile('')($rootScope); + $rootScope.$apply(function() { + $rootScope.id = $sce.trustAsResourceUrl('http://somewhere/abc'); + }); + expect(element.prop('src')).toEqual('http://somewhere/abc'); + })); + } }); describe('iframe[ng-src]', function() { @@ -68,5 +122,43 @@ describe('ngSrc', function() { expect(element.attr('src')).toEqual('javascript:doTrustedStuff()'); })); + + it('should interpolate the expression and bind to src with a trusted value', inject(function($compile, $rootScope, $sce) { + element = $compile('')($rootScope); + + $rootScope.$digest(); + expect(element.attr('src')).toBeUndefined(); + + $rootScope.$apply(function() { + $rootScope.id = $sce.trustAsResourceUrl('http://somewhere/'); + }); + expect(element.attr('src')).toEqual('http://somewhere/'); + })); + + + it('should NOT interpolate a multi-part expression in a `src` attribute that requires a non-MEDIA_URL context', inject(function($compile, $rootScope) { + expect(function() { + element = $compile('')($rootScope); + $rootScope.$apply(function() { + $rootScope.id = 1; + }); + }).toThrowMinErr( + '$interpolate', 'noconcat', 'Error while interpolating: some/{{id}}\nStrict ' + + 'Contextual Escaping disallows interpolations that concatenate multiple expressions ' + + 'when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce'); + })); + + + it('should NOT interpolate a wrongly typed expression', inject(function($compile, $rootScope, $sce) { + expect(function() { + element = $compile('')($rootScope); + $rootScope.$apply(function() { + $rootScope.id = $sce.trustAsUrl('http://somewhere/'); + }); + element.attr('src'); + }).toThrowMinErr( + '$interpolate', 'interr', 'Can\'t interpolate: {{id}}\nError: [$sce:insecurl] Blocked ' + + 'loading resource from url not allowed by $sceDelegate policy. URL: http://somewhere'); + })); }); }); diff --git a/test/ng/directive/ngSrcsetSpec.js b/test/ng/directive/ngSrcsetSpec.js index 15aba45b5749..b8032a77cba5 100644 --- a/test/ng/directive/ngSrcsetSpec.js +++ b/test/ng/directive/ngSrcsetSpec.js @@ -34,5 +34,18 @@ describe('ngSrcset', function() { element = $compile('')($rootScope); $rootScope.$digest(); })); -}); + it('should interpolate the expression and bind to srcset', inject(function($compile, $rootScope) { + var element = $compile('')($rootScope); + + $rootScope.$digest(); + expect(element.attr('srcset')).toBeUndefined(); + + $rootScope.$apply(function() { + $rootScope.id = 1; + }); + expect(element.attr('srcset')).toEqual('some/1 2x'); + + dealoc(element); + })); +}); diff --git a/test/ng/interpolateSpec.js b/test/ng/interpolateSpec.js index 2ed9b31b7f5f..43c5fc4ac275 100644 --- a/test/ng/interpolateSpec.js +++ b/test/ng/interpolateSpec.js @@ -1,5 +1,7 @@ 'use strict'; +/* eslint-disable no-script-url */ + describe('$interpolate', function() { it('should return the interpolation object when there are no bindings and textOnly is undefined', @@ -267,7 +269,9 @@ describe('$interpolate', function() { expect(function() { $interpolate('{{foo}}', true, sce.CSS)(scope); - }).toThrowMinErr('$interpolate', 'interr'); + }).toThrowMinErr( + '$interpolate', 'interr', 'Can\'t interpolate: {{foo}}\nError: [$sce:unsafe] ' + + 'Attempting to use an unsafe value in a safe context.'); })); it('should NOT interpolate mistyped expressions', inject(function($interpolate, $rootScope) { @@ -276,7 +280,9 @@ describe('$interpolate', function() { expect(function() { $interpolate('{{foo}}', true, sce.HTML)(scope); - }).toThrowMinErr('$interpolate', 'interr'); + }).toThrowMinErr( + '$interpolate', 'interr', 'Can\'t interpolate: {{foo}}\nError: [$sce:unsafe] ' + + 'Attempting to use an unsafe value in a safe context.'); })); it('should interpolate trusted expressions in a regular context', inject(function($interpolate) { @@ -291,17 +297,16 @@ describe('$interpolate', function() { // The concatenation of trusted values does not necessarily result in a trusted value. (For // instance, you can construct evil JS code by putting together pieces of JS strings that are by - // themselves safe to execute in isolation.) + // themselves safe to execute in isolation). Therefore, some contexts disable it, such as CSS. it('should NOT interpolate trusted expressions with multiple parts', inject(function($interpolate) { var foo = sce.trustAsCss('foo'); var bar = sce.trustAsCss('bar'); expect(function() { return $interpolate('{{foo}}{{bar}}', true, sce.CSS)({foo: foo, bar: bar}); }).toThrowMinErr( - '$interpolate', 'noconcat', 'Error while interpolating: {{foo}}{{bar}}\n' + + '$interpolate', 'interr', 'Error while interpolating: {{foo}}{{bar}}\n' + 'Strict Contextual Escaping disallows interpolations that concatenate multiple ' + - 'expressions when a trusted value is required. See ' + - 'http://docs.angularjs.org/api/ng.$sce'); + 'expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce'); })); }); @@ -380,26 +385,32 @@ describe('$interpolate', function() { describe('isTrustedContext', function() { - it('should NOT interpolate a multi-part expression when isTrustedContext is true', inject(function($interpolate) { - var isTrustedContext = true; + it('should NOT interpolate a multi-part expression when isTrustedContext is RESOURCE_URL', inject(function($sce, $interpolate) { + var isTrustedContext = $sce.RESOURCE_URL; expect(function() { - $interpolate('constant/{{var}}', true, isTrustedContext); + $interpolate('constant/{{var}}', true, isTrustedContext)('val'); }).toThrowMinErr( - '$interpolate', 'noconcat', 'Error while interpolating: constant/{{var}}\nStrict ' + - 'Contextual Escaping disallows interpolations that concatenate multiple expressions ' + - 'when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce'); + '$interpolate', 'interr', + 'Can\'t interpolate: constant/{{var}}\nError: [$interpolate:noconcat] Error while ' + + 'interpolating: constant/{{var}}\nStrict Contextual Escaping disallows interpolations ' + + 'that concatenate multiple expressions when a trusted value is required. ' + + 'See http://docs.angularjs.org/api/ng.$sce'); expect(function() { - $interpolate('{{var}}/constant', true, isTrustedContext); + $interpolate('{{var}}/constant', true, isTrustedContext)('val'); }).toThrowMinErr( - '$interpolate', 'noconcat', 'Error while interpolating: {{var}}/constant\nStrict ' + - 'Contextual Escaping disallows interpolations that concatenate multiple expressions ' + - 'when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce'); - expect(function() { - $interpolate('{{foo}}{{bar}}', true, isTrustedContext); + '$interpolate', 'interr', + 'Can\'t interpolate: {{var}}/constant\nError: [$interpolate:noconcat] Error while ' + + 'interpolating: {{var}}/constant\nStrict Contextual Escaping disallows interpolations ' + + 'that concatenate multiple expressions when a trusted value is required. ' + + 'See http://docs.angularjs.org/api/ng.$sce'); + expect(function() { + $interpolate('{{foo}}{{bar}}', true, isTrustedContext)('val'); }).toThrowMinErr( - '$interpolate', 'noconcat', 'Error while interpolating: {{foo}}{{bar}}\nStrict ' + - 'Contextual Escaping disallows interpolations that concatenate multiple expressions ' + - 'when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce'); + '$interpolate', 'interr', + 'Can\'t interpolate: {{foo}}{{bar}}\nError: [$interpolate:noconcat] Error while ' + + 'interpolating: {{foo}}{{bar}}\nStrict Contextual Escaping disallows interpolations ' + + 'that concatenate multiple expressions when a trusted value is required. ' + + 'See http://docs.angularjs.org/api/ng.$sce'); })); it('should interpolate a multi-part expression when isTrustedContext is false', inject(function($interpolate) { @@ -407,6 +418,23 @@ describe('$interpolate', function() { expect($interpolate('some/{{id}}')({id: 1})).toEqual('some/1'); expect($interpolate('{{foo}}{{bar}}')({foo: 1, bar: 2})).toEqual('12'); })); + + + it('should interpolate a multi-part expression when isTrustedContext is URL', inject(function($sce, $interpolate) { + expect($interpolate('some/{{id}}', true, $sce.URL)({})).toEqual('some/'); + expect($interpolate('some/{{id}}', true, $sce.URL)({id: 1})).toEqual('some/1'); + expect($interpolate('{{foo}}{{bar}}', true, $sce.URL)({foo: 1, bar: 2})).toEqual('12'); + })); + + + it('should interpolate and sanitize a multi-part expression when isTrustedContext is URL', inject(function($sce, $interpolate) { + expect($interpolate('some/{{id}}', true, $sce.URL)({})).toEqual('some/'); + expect($interpolate('some/{{id}}', true, $sce.URL)({id: 'javascript:'})).toEqual('some/javascript:'); + expect($interpolate('{{foo}}{{bar}}', true, $sce.URL)({foo: 'javascript:', bar: 'javascript:'})).toEqual('unsafe:javascript:javascript:'); + })); + + + }); diff --git a/test/ng/sceSpecs.js b/test/ng/sceSpecs.js index f7c654df296a..fb169925c9ff 100644 --- a/test/ng/sceSpecs.js +++ b/test/ng/sceSpecs.js @@ -1,5 +1,7 @@ 'use strict'; +/* eslint-disable no-script-url */ + describe('SCE', function() { describe('when disabled', function() { @@ -211,7 +213,7 @@ describe('SCE', function() { expect($sce.parseAsJs('"string"')()).toBe('string'); })); - it('should be possible to do one-time binding', function() { + it('should be possible to do one-time binding on a non-concatenable context', function() { module(provideLog); inject(function($sce, $rootScope, log) { $rootScope.$watch($sce.parseAsHtml('::foo'), function(value) { @@ -236,6 +238,31 @@ describe('SCE', function() { }); }); + it('should be possible to do one-time binding on a concatenable context', function() { + module(provideLog); + inject(function($sce, $rootScope, log) { + $rootScope.$watch($sce.parseAsUrl('::foo'), function(value) { + log(value + ''); + }); + + $rootScope.$digest(); + expect(log).toEqual('undefined'); // initial listener call + log.reset(); + + $rootScope.foo = $sce.trustAs($sce.URL, 'trustedValue'); + expect($rootScope.$$watchers.length).toBe(1); + $rootScope.$digest(); + + expect($rootScope.$$watchers.length).toBe(0); + expect(log).toEqual('trustedValue'); + log.reset(); + + $rootScope.foo = $sce.trustAs($sce.URL, 'anotherTrustedValue'); + $rootScope.$digest(); + expect(log).toEqual(''); // watcher no longer active + }); + }); + it('should NOT parse constant non-literals', inject(function($sce) { // Until there's a real world use case for this, we're disallowing // constant non-literals. See $SceParseProvider. @@ -525,6 +552,44 @@ describe('SCE', function() { )); }); + describe('URL-context sanitization', function() { + it('should sanitize values that are not whitelisted', inject(function($sce) { + expect($sce.getTrustedMediaUrl('javascript:foo')).toEqual('unsafe:javascript:foo'); + expect($sce.getTrustedUrl('javascript:foo')).toEqual('unsafe:javascript:foo'); + })); + + it('should not sanitize values that are whitelisted', inject(function($sce) { + expect($sce.getTrustedMediaUrl('http://example.com/')).toEqual('http://example.com/'); + expect($sce.getTrustedUrl('http://example.com/')).toEqual('http://example.com/'); + })); + + it('should not sanitize trusted values', inject(function($sce) { + expect($sce.getTrustedMediaUrl($sce.trustAsMediaUrl('javascript:foo'))).toEqual('javascript:foo'); + expect($sce.getTrustedMediaUrl($sce.trustAsUrl('javascript:foo'))).toEqual('javascript:foo'); + expect($sce.getTrustedMediaUrl($sce.trustAsResourceUrl('javascript:foo'))).toEqual('javascript:foo'); + + expect($sce.getTrustedUrl($sce.trustAsMediaUrl('javascript:foo'))).toEqual('unsafe:javascript:foo'); + expect($sce.getTrustedUrl($sce.trustAsUrl('javascript:foo'))).toEqual('javascript:foo'); + expect($sce.getTrustedUrl($sce.trustAsResourceUrl('javascript:foo'))).toEqual('javascript:foo'); + })); + + it('should use the $$sanitizeUri', function() { + var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri').and.returnValue('someSanitizedUrl'); + module(function($provide) { + $provide.value('$$sanitizeUri', $$sanitizeUri); + }); + inject(function($sce) { + expect($sce.getTrustedMediaUrl('someUrl')).toEqual('someSanitizedUrl'); + expect($$sanitizeUri).toHaveBeenCalledOnceWith('someUrl', true); + + $$sanitizeUri.calls.reset(); + + expect($sce.getTrustedUrl('someUrl')).toEqual('someSanitizedUrl'); + expect($$sanitizeUri).toHaveBeenCalledOnceWith('someUrl', false); + }); + }); + }); + describe('sanitizing html', function() { describe('when $sanitize is NOT available', function() { it('should throw an exception for getTrusted(string) values', inject(function($sce) { @@ -535,9 +600,23 @@ describe('SCE', function() { describe('when $sanitize is available', function() { beforeEach(function() { module('ngSanitize'); }); + it('should sanitize html using $sanitize', inject(function($sce) { expect($sce.getTrustedHtml('abc')).toBe('abc'); })); + + // Note: that test only passes if HTML is added to the concatenable contexts list. + // See isConcatenableSecureContext in interpolate.js for that. + // + // if (!msie || msie >= 11) { + // it('can set dynamic srcdocs with concatenations and sanitize the result', + // inject(function($compile, $rootScope) { + // var element = $compile('')($rootScope); + // $rootScope.html = 'noyes'; + // $rootScope.$digest(); + // expect(angular.lowercase(element.attr('srcdoc'))).toEqual('yes'); + // })); + // } }); }); }); diff --git a/test/ngSanitize/sanitizeSpec.js b/test/ngSanitize/sanitizeSpec.js index 812ca4fa867d..69cb6abc9fda 100644 --- a/test/ngSanitize/sanitizeSpec.js +++ b/test/ngSanitize/sanitizeSpec.js @@ -495,7 +495,7 @@ describe('HTML', function() { }); }); - it('should use $$sanitizeUri for links', function() { + it('should use $$sanitizeUri for a[href] links', function() { var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri'); module(function($provide) { $provide.value('$$sanitizeUri', $$sanitizeUri); @@ -511,7 +511,7 @@ describe('HTML', function() { }); }); - it('should use $$sanitizeUri for links', function() { + it('should use $$sanitizeUri for img[src] links', function() { var $$sanitizeUri = jasmine.createSpy('$$sanitizeUri'); module(function($provide) { $provide.value('$$sanitizeUri', $$sanitizeUri); From 3fc684352815108688de411717d11239f4d789c9 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Mon, 29 Jan 2018 13:30:45 +0100 Subject: [PATCH 466/849] chore(code.angularjs.org): improve output of directory listing --- .../functions/index.js | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/scripts/code.angularjs.org-firebase/functions/index.js b/scripts/code.angularjs.org-firebase/functions/index.js index 4bf6c80d84e6..90f02fc786eb 100644 --- a/scripts/code.angularjs.org-firebase/functions/index.js +++ b/scripts/code.angularjs.org-firebase/functions/index.js @@ -31,7 +31,7 @@ function sendStoredFile(request, response) { } if (!fileName) { - //Root + // Root return getDirectoryListing('/').catch(sendErrorResponse); } @@ -111,6 +111,11 @@ function sendStoredFile(request, response) { return getContent(getFilesOptions).then(() => { let contentList = ''; + if (path === '/') { + // Let the latest versions appear first + directoryList.reverse(); + } + directoryList.forEach(directoryPath => { const dirName = directoryPath.split('/').reverse()[1]; contentList += `${dirName}/
    `; @@ -125,11 +130,20 @@ function sendStoredFile(request, response) { // without trailing slash const base = request.originalUrl.endsWith('/') ? request.originalUrl : request.originalUrl + '/'; - let directoryListing = ` - -

    Index of ${path}

    -
    -
    ${contentList}
    `; + const directoryListing = ` + + + + + + + + +

    Index of ${path}

    +
    +
    ${contentList}
    + + `; return response .status(200) From 67f54b660038de2b4346b3e76d66a8dc8ccb1f9b Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Thu, 1 Feb 2018 10:31:32 +0100 Subject: [PATCH 467/849] fix(ngTouch): deprecate the module and its contents Closes #16427 Closes #16431 --- src/ngTouch/directive/ngSwipe.js | 10 ++++++++++ src/ngTouch/swipe.js | 5 +++++ src/ngTouch/touch.js | 7 +++++++ 3 files changed, 22 insertions(+) diff --git a/src/ngTouch/directive/ngSwipe.js b/src/ngTouch/directive/ngSwipe.js index e05632044747..5f31fa96470c 100644 --- a/src/ngTouch/directive/ngSwipe.js +++ b/src/ngTouch/directive/ngSwipe.js @@ -6,6 +6,11 @@ * @ngdoc directive * @name ngSwipeLeft * + * @deprecated + * sinceVersion="1.7.0" + * + * See the {@link ngTouch module} documentation for more information. + * * @description * Specify custom behavior when an element is swiped to the left on a touchscreen device. * A leftward swipe is a quick, right-to-left slide of the finger. @@ -42,6 +47,11 @@ * @ngdoc directive * @name ngSwipeRight * + * @deprecated + * sinceVersion="1.7.0" + * + * See the {@link ngTouch module} documentation for more information. + * * @description * Specify custom behavior when an element is swiped to the right on a touchscreen device. * A rightward swipe is a quick, left-to-right slide of the finger. diff --git a/src/ngTouch/swipe.js b/src/ngTouch/swipe.js index 013eea3dc6bc..617747f77fab 100644 --- a/src/ngTouch/swipe.js +++ b/src/ngTouch/swipe.js @@ -6,6 +6,11 @@ * @ngdoc service * @name $swipe * + * @deprecated + * sinceVersion="1.7.0" + * + * See the {@link ngTouch module} documentation for more information. + * * @description * The `$swipe` service is a service that abstracts the messier details of hold-and-drag swipe * behavior, to make implementing swipe-related directives more convenient. diff --git a/src/ngTouch/touch.js b/src/ngTouch/touch.js index 676f6f4a6c9b..d0c2745a876b 100644 --- a/src/ngTouch/touch.js +++ b/src/ngTouch/touch.js @@ -11,6 +11,13 @@ * * See {@link ngTouch.$swipe `$swipe`} for usage. * + * @deprecated + * sinceVersion="1.7.0" + * The ngTouch module with the {@link ngTouch.$swipe `$swipe`} service and + * the {@link ngTouch.ngSwipeLeft} and {@link ngTouch.ngSwipeRight} directives are + * deprecated. Instead, stand-alone libraries for touch handling and gesture interaction + * should be used, for example [HammerJS](https://hammerjs.github.io/) (which is also used by + * Angular). */ // define ngTouch module From e3ece2fad9e1e6d47b5f06815ff186d7e6f44948 Mon Sep 17 00:00:00 2001 From: Georgii Dolzhykov Date: Thu, 22 Dec 2016 19:17:06 +0300 Subject: [PATCH 468/849] feat(isArray): support Array subclasses in `angular.isArray()` Closes #15533 Closes #15541 BREAKING CHANGE: Previously, `angular.isArray()` was an alias for `Array.isArray()`. Therefore, objects that prototypally inherit from `Array` where not considered arrays. Now such objects are considered arrays too. This change affects several other methods that use `angular.isArray()` under the hood, such as `angular.copy()`, `angular.equals()`, `angular.forEach()`, and `angular.merge()`. This in turn affects how dirty checking treats objects that prototypally inherit from `Array` (e.g. MobX observable arrays). AngularJS will now be able to handle these objects better when copying or watching. --- src/Angular.js | 9 +++++---- test/AngularSpec.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/Angular.js b/src/Angular.js index 7c424897ff18..f5ab043dc8a3 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -219,8 +219,7 @@ function isArrayLike(obj) { // NodeList objects (with `item` method) and // other objects with suitable length characteristics are array-like - return isNumber(length) && - (length >= 0 && ((length - 1) in obj || obj instanceof Array) || typeof obj.item === 'function'); + return isNumber(length) && (length >= 0 && (length - 1) in obj || typeof obj.item === 'function'); } @@ -635,12 +634,14 @@ function isDate(value) { * @kind function * * @description - * Determines if a reference is an `Array`. Alias of Array.isArray. + * Determines if a reference is an `Array`. * * @param {*} value Reference to check. * @returns {boolean} True if `value` is an `Array`. */ -var isArray = Array.isArray; +function isArray(arr) { + return Array.isArray(arr) || arr instanceof Array; +} /** * @description diff --git a/test/AngularSpec.js b/test/AngularSpec.js index c10b92e01179..ffe157de589f 100644 --- a/test/AngularSpec.js +++ b/test/AngularSpec.js @@ -1254,6 +1254,37 @@ describe('angular', function() { }); }); + describe('isArray', function() { + + it('should return true if passed an `Array`', function() { + expect(isArray([])).toBe(true); + }); + + it('should return true if passed an `Array` from a different window context', function() { + var iframe = document.createElement('iframe'); + document.body.appendChild(iframe); // No `contentWindow` if not attached to the DOM. + var arr = new iframe.contentWindow.Array(); + document.body.removeChild(iframe); // Clean up. + + expect(arr instanceof Array).toBe(false); + expect(isArray(arr)).toBe(true); + }); + + it('should return true if passed an object prototypically inherited from `Array`', function() { + function FooArray() {} + FooArray.prototype = []; + + expect(isArray(new FooArray())).toBe(true); + }); + + it('should return false if passed non-array objects', function() { + expect(isArray(document.body.childNodes)).toBe(false); + expect(isArray({length: 0})).toBe(false); + expect(isArray({length: 2, 0: 'one', 1: 'two'})).toBe(false); + }); + + }); + describe('isArrayLike', function() { it('should return false if passed a number', function() { From 16b82c6afe0ab916fef1d6ca78053b00bf5ada83 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Fri, 2 Feb 2018 10:02:06 +0100 Subject: [PATCH 469/849] fix($animate): let cancel() reject the runner promise Closes #14204 Closes #16373 BREAKING CHANGE: $animate.cancel(runner) now rejects the underlying promise and calls the catch() handler on the runner returned by $animate functions (enter, leave, move, addClass, removeClass, setClass, animate). Previously it would resolve the promise as if the animation had ended successfully. Example: ```js var runner = $animate.addClass('red'); runner.then(function() { console.log('success')}); runner.catch(function() { console.log('cancelled')}); runner.cancel(); ``` Pre-1.7.0, this logs 'success', 1.7.0 and later it logs 'cancelled'. To migrate, add a catch() handler to your animation runners. --- src/ng/animate.js | 88 +++++++++++++--- test/ngAnimate/animateSpec.js | 190 ++++++++++++++++++++++++++++++++++ 2 files changed, 266 insertions(+), 12 deletions(-) diff --git a/src/ng/animate.js b/src/ng/animate.js index 1f9bc9028cf0..60a9bc3d04a9 100644 --- a/src/ng/animate.js +++ b/src/ng/animate.js @@ -464,13 +464,77 @@ var $AnimateProvider = ['$provide', /** @this */ function($provide) { * @ngdoc method * @name $animate#cancel * @kind function - * @description Cancels the provided animation. - * - * @param {Promise} animationPromise The animation promise that is returned when an animation is started. + * @description Cancels the provided animation and applies the end state of the animation. + * Note that this does not cancel the underlying operation, e.g. the setting of classes or + * adding the element to the DOM. + * + * @param {animationRunner} animationRunner An animation runner returned by an $animate function. + * + * @example + + + angular.module('animationExample', ['ngAnimate']).component('cancelExample', { + templateUrl: 'template.html', + controller: function($element, $animate) { + this.runner = null; + + this.addClass = function() { + this.runner = $animate.addClass($element.find('div'), 'red'); + var ctrl = this; + this.runner.finally(function() { + ctrl.runner = null; + }); + }; + + this.removeClass = function() { + this.runner = $animate.removeClass($element.find('div'), 'red'); + var ctrl = this; + this.runner.finally(function() { + ctrl.runner = null; + }); + }; + + this.cancel = function() { + $animate.cancel(this.runner); + }; + } + }); + + +

    + + +
    + +
    +

    CSS-Animated Text
    +

    +
    + + + + + .red-add, .red-remove { + transition: all 4s cubic-bezier(0.250, 0.460, 0.450, 0.940); + } + + .red, + .red-add.red-add-active { + color: #FF0000; + font-size: 40px; + } + + .red-remove.red-remove-active { + font-size: 10px; + color: black; + } + + +
    */ cancel: function(runner) { - if (runner.end) { - runner.end(); + if (runner.cancel) { + runner.cancel(); } }, @@ -496,7 +560,7 @@ var $AnimateProvider = ['$provide', /** @this */ function($provide) { * - **removeClass** - `{string}` - space-separated CSS classes to remove from element * - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from` * - * @return {Promise} the animation callback promise + * @return {Runner} the animation runner */ enter: function(element, parent, after, options) { parent = parent && jqLite(parent); @@ -528,7 +592,7 @@ var $AnimateProvider = ['$provide', /** @this */ function($provide) { * - **removeClass** - `{string}` - space-separated CSS classes to remove from element * - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from` * - * @return {Promise} the animation callback promise + * @return {Runner} the animation runner */ move: function(element, parent, after, options) { parent = parent && jqLite(parent); @@ -555,7 +619,7 @@ var $AnimateProvider = ['$provide', /** @this */ function($provide) { * - **removeClass** - `{string}` - space-separated CSS classes to remove from element * - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from` * - * @return {Promise} the animation callback promise + * @return {Runner} the animation runner */ leave: function(element, options) { return $$animateQueue.push(element, 'leave', prepareAnimateOptions(options), function() { @@ -585,7 +649,7 @@ var $AnimateProvider = ['$provide', /** @this */ function($provide) { * - **removeClass** - `{string}` - space-separated CSS classes to remove from element * - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from` * - * @return {Promise} the animation callback promise + * @return {Runner} animationRunner the animation runner */ addClass: function(element, className, options) { options = prepareAnimateOptions(options); @@ -615,7 +679,7 @@ var $AnimateProvider = ['$provide', /** @this */ function($provide) { * - **removeClass** - `{string}` - space-separated CSS classes to remove from element * - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from` * - * @return {Promise} the animation callback promise + * @return {Runner} the animation runner */ removeClass: function(element, className, options) { options = prepareAnimateOptions(options); @@ -646,7 +710,7 @@ var $AnimateProvider = ['$provide', /** @this */ function($provide) { * - **removeClass** - `{string}` - space-separated CSS classes to remove from element * - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from` * - * @return {Promise} the animation callback promise + * @return {Runner} the animation runner */ setClass: function(element, add, remove, options) { options = prepareAnimateOptions(options); @@ -693,7 +757,7 @@ var $AnimateProvider = ['$provide', /** @this */ function($provide) { * - **removeClass** - `{string}` - space-separated CSS classes to remove from element * - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from` * - * @return {Promise} the animation callback promise + * @return {Runner} the animation runner */ animate: function(element, from, to, className, options) { options = prepareAnimateOptions(options); diff --git a/test/ngAnimate/animateSpec.js b/test/ngAnimate/animateSpec.js index e8c0131a8a16..484836ca66e0 100644 --- a/test/ngAnimate/animateSpec.js +++ b/test/ngAnimate/animateSpec.js @@ -790,6 +790,7 @@ describe('animations', function() { expect(element).toHaveClass('red'); })); + it('removeClass() should issue a removeClass animation with the correct DOM operation', inject(function($animate, $rootScope) { parent.append(element); element.addClass('blue'); @@ -934,6 +935,195 @@ describe('animations', function() { })); }); + + describe('$animate.cancel()', function() { + + it('should cancel enter()', inject(function($animate, $rootScope) { + expect(parent.children().length).toBe(0); + + options.foo = 'bar'; + var spy = jasmine.createSpy('cancelCatch'); + + var runner = $animate.enter(element, parent, null, options); + + runner.catch(spy); + + expect(parent.children().length).toBe(1); + + $rootScope.$digest(); + + expect(capturedAnimation[0]).toBe(element); + expect(capturedAnimation[1]).toBe('enter'); + expect(capturedAnimation[2].foo).toEqual(options.foo); + + $animate.cancel(runner); + // Since enter() immediately adds the element, we can only check if the + // element is still at the position + expect(parent.children().length).toBe(1); + + $rootScope.$digest(); + + // Catch handler is called after digest + expect(spy).toHaveBeenCalled(); + })); + + + it('should cancel move()', inject(function($animate, $rootScope) { + parent.append(element); + + expect(parent.children().length).toBe(1); + expect(parent2.children().length).toBe(0); + + options.foo = 'bar'; + var spy = jasmine.createSpy('cancelCatch'); + + var runner = $animate.move(element, parent2, null, options); + runner.catch(spy); + + expect(parent.children().length).toBe(0); + expect(parent2.children().length).toBe(1); + + $rootScope.$digest(); + + expect(capturedAnimation[0]).toBe(element); + expect(capturedAnimation[1]).toBe('move'); + expect(capturedAnimation[2].foo).toEqual(options.foo); + + $animate.cancel(runner); + // Since moves() immediately moves the element, we can only check if the + // element is still at the correct position + expect(parent.children().length).toBe(0); + expect(parent2.children().length).toBe(1); + + $rootScope.$digest(); + + // Catch handler is called after digest + expect(spy).toHaveBeenCalled(); + })); + + + it('cancel leave()', inject(function($animate, $rootScope) { + parent.append(element); + options.foo = 'bar'; + var spy = jasmine.createSpy('cancelCatch'); + + var runner = $animate.leave(element, options); + + runner.catch(spy); + $rootScope.$digest(); + + expect(capturedAnimation[0]).toBe(element); + expect(capturedAnimation[1]).toBe('leave'); + expect(capturedAnimation[2].foo).toEqual(options.foo); + + expect(element.parent().length).toBe(1); + + $animate.cancel(runner); + // Animation concludes immediately + expect(element.parent().length).toBe(0); + expect(spy).not.toHaveBeenCalled(); + + $rootScope.$digest(); + // Catch handler is called after digest + expect(spy).toHaveBeenCalled(); + })); + + it('should cancel addClass()', inject(function($animate, $rootScope) { + parent.append(element); + options.foo = 'bar'; + var runner = $animate.addClass(element, 'red', options); + var spy = jasmine.createSpy('cancelCatch'); + + runner.catch(spy); + $rootScope.$digest(); + + expect(capturedAnimation[0]).toBe(element); + expect(capturedAnimation[1]).toBe('addClass'); + expect(capturedAnimation[2].foo).toEqual(options.foo); + + $animate.cancel(runner); + expect(element).toHaveClass('red'); + expect(spy).not.toHaveBeenCalled(); + + $rootScope.$digest(); + expect(spy).toHaveBeenCalled(); + })); + + + it('should cancel setClass()', inject(function($animate, $rootScope) { + parent.append(element); + element.addClass('red'); + options.foo = 'bar'; + + var runner = $animate.setClass(element, 'blue', 'red', options); + var spy = jasmine.createSpy('cancelCatch'); + + runner.catch(spy); + $rootScope.$digest(); + + expect(capturedAnimation[0]).toBe(element); + expect(capturedAnimation[1]).toBe('setClass'); + expect(capturedAnimation[2].foo).toEqual(options.foo); + + $animate.cancel(runner); + expect(element).toHaveClass('blue'); + expect(element).not.toHaveClass('red'); + expect(spy).not.toHaveBeenCalled(); + + $rootScope.$digest(); + expect(spy).toHaveBeenCalled(); + })); + + + it('should cancel removeClass()', inject(function($animate, $rootScope) { + parent.append(element); + element.addClass('red blue'); + + options.foo = 'bar'; + var runner = $animate.removeClass(element, 'red', options); + var spy = jasmine.createSpy('cancelCatch'); + + runner.catch(spy); + $rootScope.$digest(); + + expect(capturedAnimation[0]).toBe(element); + expect(capturedAnimation[1]).toBe('removeClass'); + expect(capturedAnimation[2].foo).toEqual(options.foo); + + $animate.cancel(runner); + expect(element).not.toHaveClass('red'); + expect(element).toHaveClass('blue'); + + $rootScope.$digest(); + expect(spy).toHaveBeenCalled(); + })); + + + it('should cancel animate()', + inject(function($animate, $rootScope) { + + parent.append(element); + + var fromStyle = { color: 'blue' }; + var options = { addClass: 'red' }; + + var runner = $animate.animate(element, fromStyle, null, null, options); + var spy = jasmine.createSpy('cancelCatch'); + + runner.catch(spy); + $rootScope.$digest(); + + expect(capturedAnimation).toBeTruthy(); + + $animate.cancel(runner); + expect(element).toHaveClass('red'); + + $rootScope.$digest(); + expect(spy).toHaveBeenCalled(); + })); + }); + + describe('parent animations', function() { they('should not cancel a pre-digest parent class-based animation if a child $prop animation is set to run', ['structural', 'class-based'], function(animationType) { From b969c3e3540d05a781404beebecdd4fa4ceb2d2e Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Fri, 2 Feb 2018 11:19:32 +0100 Subject: [PATCH 470/849] docs(changelog): add changes for 1.6.9 --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fb3c1064bea..40b8fc4d4a87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,31 @@ + +# 1.6.9 fiery-basilisk (2018-02-02) + + +## Bug Fixes +- **input:** add `drop` event support for IE + ([5dc076](https://github.com/angular/angular.js/commit/5dc07667de00c5e85fd69c5b7b7fe4fb5fd65a77)) +- **ngMessages:** prevent memory leak from messages that are never attached + ([9d058d](https://github.com/angular/angular.js/commit/9d058de04bb78694b83179e9b97bc40214eca01a), + [#16389](https://github.com/angular/angular.js/issues/16389), + [#16404](https://github.com/angular/angular.js/issues/16404), + [#16406](https://github.com/angular/angular.js/issues/16406)) +- **ngTransclude:** remove terminal: true + ([1d826e](https://github.com/angular/angular.js/commit/1d826e2f1e941d14c3c56d7a0249f5796ba11f85), + [#16411](https://github.com/angular/angular.js/issues/16411), + [#16412](https://github.com/angular/angular.js/issues/16412)) +- **$sanitize:** sanitize `xml:base` attributes + ([b9ef65](https://github.com/angular/angular.js/commit/b9ef6585e10477fbbf912a971fe0b390bca692a6)) + + +## New Features +- **currencyFilter:** trim whitespace around an empty currency symbol + ([367390](https://github.com/angular/angular.js/commit/3673909896efb6ff47546caf7fc61549f193e043), + [#15018](https://github.com/angular/angular.js/issues/15018), + [#15085](https://github.com/angular/angular.js/issues/15085), + [#15105](https://github.com/angular/angular.js/issues/15105)) + + # 1.6.8 beneficial-tincture (2017-12-18) From d3bffc547697c8f2059f32402c9f02092c1a8b5c Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Fri, 2 Feb 2018 12:31:49 +0100 Subject: [PATCH 471/849] chore(docs.angularjs.org): add robots.txt --- docs/app/assets/robots.txt | 11 +++++++++++ scripts/docs.angularjs.org-firebase/firebase.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 docs/app/assets/robots.txt diff --git a/docs/app/assets/robots.txt b/docs/app/assets/robots.txt new file mode 100644 index 000000000000..a0de3bfda6b4 --- /dev/null +++ b/docs/app/assets/robots.txt @@ -0,0 +1,11 @@ +User-agent: * + +Disallow: /components/ +Disallow: /examples/ +Disallow: /img/ +Disallow: /js/ +Disallow: /partials/ +Disallow: /ptore2e/ +Disallow: /*.js$ +Disallow: /*.map$ +Disallow: /Error404.html diff --git a/scripts/docs.angularjs.org-firebase/firebase.json b/scripts/docs.angularjs.org-firebase/firebase.json index 8f82fc2d8e9c..5f5d70dc02d6 100644 --- a/scripts/docs.angularjs.org-firebase/firebase.json +++ b/scripts/docs.angularjs.org-firebase/firebase.json @@ -23,7 +23,7 @@ "destination": "/index-production.html" }, { - "source": "**/*!(.jpg|.jpeg|.gif|.png|.html|.js|.map|.json|.css|.svg|.ttf|.woff|.woff2|.eot)", + "source": "**/*!(.jpg|.jpeg|.gif|.png|.html|.js|.map|.json|.css|.svg|.ttf|.txt|.woff|.woff2|.eot)", "destination": "/index-production.html" } ] From fb00991460cf69ae8bc7f1f826363d09c73c0d5e Mon Sep 17 00:00:00 2001 From: frederikprijck Date: Sun, 4 Feb 2018 10:20:46 +0100 Subject: [PATCH 472/849] fix($templateRequest): always return the template that is stored in the cache Previously, `$templateRequest` returned the raw `$http` response data on the first request for a template and then the value from the cache for subsequent requests. If the value is transformed when being added to the cache (by decorating `$templateCache.put`) the return value of `$templateRequest` would be inconsistent depending upon when the request is made. This commit ensures the cached value is returned instead of the raw `$http` response data, thus allowing the `$templateCache` service to be decorated. Closes #16225 --- src/ng/templateRequest.js | 3 +-- test/ng/templateRequestSpec.js | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/ng/templateRequest.js b/src/ng/templateRequest.js index 7b3b04261e56..ff699d6cd0ef 100644 --- a/src/ng/templateRequest.js +++ b/src/ng/templateRequest.js @@ -99,8 +99,7 @@ function $TemplateRequestProvider() { handleRequestFn.totalPendingRequests--; }) .then(function(response) { - $templateCache.put(tpl, response.data); - return response.data; + return $templateCache.put(tpl, response.data); }, handleError); function handleError(resp) { diff --git a/test/ng/templateRequestSpec.js b/test/ng/templateRequestSpec.js index cb9c1c6f6ce8..3ca323613103 100644 --- a/test/ng/templateRequestSpec.js +++ b/test/ng/templateRequestSpec.js @@ -114,6 +114,24 @@ describe('$templateRequest', function() { expect($templateCache.get('tpl.html')).toBe('matias'); })); + it('should return the cached value on the first request', + inject(function($rootScope, $templateRequest, $templateCache, $httpBackend) { + + $httpBackend.expectGET('tpl.html').respond('matias'); + spyOn($templateCache, 'put').and.returnValue('_matias'); + + var content = []; + function tplRequestCb(html) { + content.push(html); + } + + $templateRequest('tpl.html').then(tplRequestCb); + $rootScope.$digest(); + $httpBackend.flush(); + + expect(content[0]).toBe('_matias'); + })); + it('should call `$exceptionHandler` on request error', function() { module(function($exceptionHandlerProvider) { $exceptionHandlerProvider.mode('log'); From fbe679dfbcb2108249931d44f452d09da6c98477 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Mon, 5 Feb 2018 12:35:12 +0100 Subject: [PATCH 473/849] chore(doc-gen): generate sitemap.xml --- docs/config/index.js | 1 + docs/config/processors/sitemap.js | 25 +++++++++++++++++++ .../config/templates/app/sitemap.template.xml | 7 ++++++ 3 files changed, 33 insertions(+) create mode 100644 docs/config/processors/sitemap.js create mode 100644 docs/config/templates/app/sitemap.template.xml diff --git a/docs/config/index.js b/docs/config/index.js index ab5e45a3f8dc..4ddf7922c7bd 100644 --- a/docs/config/index.js +++ b/docs/config/index.js @@ -31,6 +31,7 @@ module.exports = new Package('angularjs', [ .processor(require('./processors/keywords')) .processor(require('./processors/pages-data')) .processor(require('./processors/versions-data')) +.processor(require('./processors/sitemap')) .config(function(dgeni, log, readFilesProcessor, writeFilesProcessor) { diff --git a/docs/config/processors/sitemap.js b/docs/config/processors/sitemap.js new file mode 100644 index 000000000000..aea84da9a17a --- /dev/null +++ b/docs/config/processors/sitemap.js @@ -0,0 +1,25 @@ +'use strict'; + +var exclusionRegex = /^index|examples\/|ptore2e\//; + +module.exports = function createSitemap() { + return { + $runAfter: ['paths-computed'], + $runBefore: ['rendering-docs'], + $process: function(docs) { + docs.push({ + id: 'sitemap.xml', + path: 'sitemap.xml', + outputPath: '../sitemap.xml', + template: 'sitemap.template.xml', + urls: docs.filter(function(doc) { + return doc.path && + doc.outputPath && + !exclusionRegex.test(doc.outputPath); + }).map(function(doc) { + return doc.path; + }) + }); + } + }; +}; diff --git a/docs/config/templates/app/sitemap.template.xml b/docs/config/templates/app/sitemap.template.xml new file mode 100644 index 000000000000..56953d903920 --- /dev/null +++ b/docs/config/templates/app/sitemap.template.xml @@ -0,0 +1,7 @@ + + + {%- for url in doc.urls %} + + https://docs.angularjs.org/{$ url $} + {% endfor %} + \ No newline at end of file From ea04dbb229ec69a7ffc954d57496f058d6ce6dcb Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Mon, 5 Feb 2018 12:38:44 +0100 Subject: [PATCH 474/849] chore(code.angularjs.org): fix robots.txt - allow all-versions-data.js in snapshot, which is used by docs.angularjs.org - disallow access to folders like docs-0.9.2 etc which are used by early versions --- scripts/code.angularjs.org-firebase/public/robots.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/code.angularjs.org-firebase/public/robots.txt b/scripts/code.angularjs.org-firebase/public/robots.txt index 480082428fa1..e83f2c10453d 100644 --- a/scripts/code.angularjs.org-firebase/public/robots.txt +++ b/scripts/code.angularjs.org-firebase/public/robots.txt @@ -1,5 +1,6 @@ User-agent: * -Disallow: /*docs/ +Disallow: /*docs*/ Disallow: /*i18n/ Disallow: /*.zip$ +Allow: /snapshot/docs/js/all-versions-data.js From 7d50b2e9eea9c7e8950beffc1e139c4e05af00f5 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Mon, 5 Feb 2018 13:07:07 +0100 Subject: [PATCH 475/849] chore(docs.angularjs.org): allow robots to access js and css Otherwise, the google bot cannot execute the JS --- docs/app/assets/robots.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/app/assets/robots.txt b/docs/app/assets/robots.txt index a0de3bfda6b4..c00cb3c20320 100644 --- a/docs/app/assets/robots.txt +++ b/docs/app/assets/robots.txt @@ -1,11 +1,9 @@ User-agent: * -Disallow: /components/ Disallow: /examples/ Disallow: /img/ -Disallow: /js/ Disallow: /partials/ Disallow: /ptore2e/ -Disallow: /*.js$ -Disallow: /*.map$ +Disallow: /*.js$ # The js files in the root are used by the embedded examples, not by the app itself +Disallow: /*.map$ # The map files in the root are used by the embedded examples, not by the app itself Disallow: /Error404.html From 8d6ac5f3178cb6ead6b3b7526c50cd1c07112097 Mon Sep 17 00:00:00 2001 From: Maksim Ryzhikov Date: Sat, 11 Nov 2017 16:18:17 +0300 Subject: [PATCH 476/849] feat($sanitize): support enhancing elements/attributes white-lists Fixes #5900 Closes #16326 --- src/ngSanitize/sanitize.js | 139 +++++++++++++++++++++++++++++--- test/ngSanitize/sanitizeSpec.js | 50 ++++++++++++ 2 files changed, 176 insertions(+), 13 deletions(-) diff --git a/src/ngSanitize/sanitize.js b/src/ngSanitize/sanitize.js index b08850fba065..48ddad82341c 100644 --- a/src/ngSanitize/sanitize.js +++ b/src/ngSanitize/sanitize.js @@ -15,6 +15,7 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize'); var bind; var extend; var forEach; +var isArray; var isDefined; var lowercase; var noop; @@ -144,9 +145,11 @@ var htmlSanitizeWriter; * Creates and configures {@link $sanitize} instance. */ function $SanitizeProvider() { + var hasBeenInstantiated = false; var svgEnabled = false; this.$get = ['$$sanitizeUri', function($$sanitizeUri) { + hasBeenInstantiated = true; if (svgEnabled) { extend(validElements, svgElements); } @@ -187,7 +190,7 @@ function $SanitizeProvider() { * * * @param {boolean=} flag Enable or disable SVG support in the sanitizer. - * @returns {boolean|ng.$sanitizeProvider} Returns the currently configured value if called + * @returns {boolean|$sanitizeProvider} Returns the currently configured value if called * without an argument or self for chaining otherwise. */ this.enableSvg = function(enableSvg) { @@ -199,6 +202,105 @@ function $SanitizeProvider() { } }; + + /** + * @ngdoc method + * @name $sanitizeProvider#addValidElements + * @kind function + * + * @description + * Extends the built-in lists of valid HTML/SVG elements, i.e. elements that are considered safe + * and are not stripped off during sanitization. You can extend the following lists of elements: + * + * - `htmlElements`: A list of elements (tag names) to extend the current list of safe HTML + * elements. HTML elements considered safe will not be removed during sanitization. All other + * elements will be stripped off. + * + * - `htmlVoidElements`: This is similar to `htmlElements`, but marks the elements as + * "void elements" (similar to HTML + * [void elements](https://rawgit.com/w3c/html/html5.1-2/single-page.html#void-elements)). These + * elements have no end tag and cannot have content. + * + * - `svgElements`: This is similar to `htmlElements`, but for SVG elements. This list is only + * taken into account if SVG is {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for + * `$sanitize`. + * + *
    + * This method must be called during the {@link angular.Module#config config} phase. Once the + * `$sanitize` service has been instantiated, this method has no effect. + *
    + * + *
    + * Keep in mind that extending the built-in lists of elements may expose your app to XSS or + * other vulnerabilities. Be very mindful of the elements you add. + *
    + * + * @param {Array|Object} elements - A list of valid HTML elements or an object with one or + * more of the following properties: + * - **htmlElements** - `{Array}` - A list of elements to extend the current list of + * HTML elements. + * - **htmlVoidElements** - `{Array}` - A list of elements to extend the current list of + * void HTML elements; i.e. elements that do not have an end tag. + * - **svgElements** - `{Array}` - A list of elements to extend the current list of SVG + * elements. The list of SVG elements is only taken into account if SVG is + * {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for `$sanitize`. + * + * Passing an array (`[...]`) is equivalent to passing `{htmlElements: [...]}`. + * + * @return {$sanitizeProvider} Returns self for chaining. + */ + this.addValidElements = function(elements) { + if (!hasBeenInstantiated) { + if (isArray(elements)) { + elements = {htmlElements: elements}; + } + + addElementsTo(svgElements, elements.svgElements); + addElementsTo(voidElements, elements.htmlVoidElements); + addElementsTo(validElements, elements.htmlVoidElements); + addElementsTo(validElements, elements.htmlElements); + } + + return this; + }; + + + /** + * @ngdoc method + * @name $sanitizeProvider#addValidAttrs + * @kind function + * + * @description + * Extends the built-in list of valid attributes, i.e. attributes that are considered safe and are + * not stripped off during sanitization. + * + * **Note**: + * The new attributes will not be treated as URI attributes, which means their values will not be + * sanitized as URIs using `$compileProvider`'s + * {@link ng.$compileProvider#aHrefSanitizationWhitelist aHrefSanitizationWhitelist} and + * {@link ng.$compileProvider#imgSrcSanitizationWhitelist imgSrcSanitizationWhitelist}. + * + *
    + * This method must be called during the {@link angular.Module#config config} phase. Once the + * `$sanitize` service has been instantiated, this method has no effect. + *
    + * + *
    + * Keep in mind that extending the built-in list of attributes may expose your app to XSS or + * other vulnerabilities. Be very mindful of the attributes you add. + *
    + * + * @param {Array} attrs - A list of valid attributes. + * + * @returns {$sanitizeProvider} Returns self for chaining. + */ + this.addValidAttrs = function(attrs) { + if (!hasBeenInstantiated) { + extend(validAttrs, arrayToMap(attrs, true)); + } + return this; + }; + ////////////////////////////////////////////////////////////////////////////////////////////////// // Private stuff ////////////////////////////////////////////////////////////////////////////////////////////////// @@ -206,6 +308,7 @@ function $SanitizeProvider() { bind = angular.bind; extend = angular.extend; forEach = angular.forEach; + isArray = angular.isArray; isDefined = angular.isDefined; lowercase = angular.$$lowercase; noop = angular.noop; @@ -230,23 +333,23 @@ function $SanitizeProvider() { // Safe Void Elements - HTML5 // http://dev.w3.org/html5/spec/Overview.html#void-elements - var voidElements = toMap('area,br,col,hr,img,wbr'); + var voidElements = stringToMap('area,br,col,hr,img,wbr'); // Elements that you can, intentionally, leave open (and which close themselves) // http://dev.w3.org/html5/spec/Overview.html#optional-tags - var optionalEndTagBlockElements = toMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'), - optionalEndTagInlineElements = toMap('rp,rt'), + var optionalEndTagBlockElements = stringToMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'), + optionalEndTagInlineElements = stringToMap('rp,rt'), optionalEndTagElements = extend({}, optionalEndTagInlineElements, optionalEndTagBlockElements); // Safe Block Elements - HTML5 - var blockElements = extend({}, optionalEndTagBlockElements, toMap('address,article,' + + var blockElements = extend({}, optionalEndTagBlockElements, stringToMap('address,article,' + 'aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' + 'h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul')); // Inline Elements - HTML5 - var inlineElements = extend({}, optionalEndTagInlineElements, toMap('a,abbr,acronym,b,' + + var inlineElements = extend({}, optionalEndTagInlineElements, stringToMap('a,abbr,acronym,b,' + 'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' + 'samp,small,span,strike,strong,sub,sup,time,tt,u,var')); @@ -254,12 +357,12 @@ function $SanitizeProvider() { // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements // Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted. // They can potentially allow for arbitrary javascript to be executed. See #11290 - var svgElements = toMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' + + var svgElements = stringToMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' + 'hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,' + 'radialGradient,rect,stop,svg,switch,text,title,tspan'); // Blocked Elements (will be stripped) - var blockedElements = toMap('script,style'); + var blockedElements = stringToMap('script,style'); var validElements = extend({}, voidElements, @@ -268,9 +371,9 @@ function $SanitizeProvider() { optionalEndTagElements); //Attributes that have href and hence need to be sanitized - var uriAttrs = toMap('background,cite,href,longdesc,src,xlink:href,xml:base'); + var uriAttrs = stringToMap('background,cite,href,longdesc,src,xlink:href,xml:base'); - var htmlAttrs = toMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' + + var htmlAttrs = stringToMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' + 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' + 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' + 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' + @@ -278,7 +381,7 @@ function $SanitizeProvider() { // SVG attributes (without "id" and "name" attributes) // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes - var svgAttrs = toMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' + + var svgAttrs = stringToMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' + 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' + 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' + 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' + @@ -299,14 +402,24 @@ function $SanitizeProvider() { svgAttrs, htmlAttrs); - function toMap(str, lowercaseKeys) { - var obj = {}, items = str.split(','), i; + function stringToMap(str, lowercaseKeys) { + return arrayToMap(str.split(','), lowercaseKeys); + } + + function arrayToMap(items, lowercaseKeys) { + var obj = {}, i; for (i = 0; i < items.length; i++) { obj[lowercaseKeys ? lowercase(items[i]) : items[i]] = true; } return obj; } + function addElementsTo(elementsMap, newElements) { + if (newElements && newElements.length) { + extend(elementsMap, arrayToMap(newElements)); + } + } + /** * Create an inert document that contains the dirty HTML that needs sanitizing * Depending upon browser support we use one of three strategies for doing this. diff --git a/test/ngSanitize/sanitizeSpec.js b/test/ngSanitize/sanitizeSpec.js index 69cb6abc9fda..a047be989642 100644 --- a/test/ngSanitize/sanitizeSpec.js +++ b/test/ngSanitize/sanitizeSpec.js @@ -293,10 +293,56 @@ describe('HTML', function() { expect(doc).toEqual('

    '); })); + describe('Custom white-list support', function() { + + var $sanitizeProvider; + beforeEach(module(function(_$sanitizeProvider_) { + $sanitizeProvider = _$sanitizeProvider_; + + $sanitizeProvider.addValidElements(['foo']); + $sanitizeProvider.addValidElements({ + htmlElements: ['foo-button', 'foo-video'], + htmlVoidElements: ['foo-input'], + svgElements: ['foo-svg'] + }); + $sanitizeProvider.addValidAttrs(['foo']); + })); + + it('should allow custom white-listed element', function() { + expectHTML('').toEqual(''); + expectHTML('').toEqual(''); + expectHTML('').toEqual(''); + }); + + it('should allow custom white-listed void element', function() { + expectHTML('').toEqual(''); + }); + + it('should allow custom white-listed void element to be used with closing tag', function() { + expectHTML('').toEqual(''); + }); + + it('should allow custom white-listed attribute', function() { + expectHTML('').toEqual(''); + }); + + it('should ignore custom white-listed SVG element if SVG disabled', function() { + expectHTML('').toEqual(''); + }); + + it('should not allow add custom element after service has been instantiated', inject(function($sanitize) { + $sanitizeProvider.addValidElements(['bar']); + expectHTML('').toEqual(''); + })); + }); + describe('SVG support', function() { beforeEach(module(function($sanitizeProvider) { $sanitizeProvider.enableSvg(true); + $sanitizeProvider.addValidElements({ + svgElements: ['font-face-uri'] + }); })); it('should accept SVG tags', function() { @@ -314,6 +360,10 @@ describe('HTML', function() { }); + it('should allow custom white-listed SVG element', function() { + expectHTML('').toEqual(''); + }); + it('should sanitize SVG xlink:href attribute values', function() { expectHTML('') .toBeOneOf('', From 02f4ca4887f337e87ce668f657c32f49e18beec8 Mon Sep 17 00:00:00 2001 From: frederikprijck Date: Mon, 30 Jan 2017 22:46:22 +0100 Subject: [PATCH 477/849] docs(ngClass): add docs regarding animation for `ngClassEven` and `ngClassOdd` Previously, the documentation has no information regarding using `ngAnimate` together with the `ngClassEven` and `ngClassOdd` directives. This commit adds the same docs used by the `ngClass` directive to the `ngClassEven` and `ngClassOdd` docs and adds an extra example for both `ngClassEven` and `ngClassOdd` that showcases animations. Closes #15654 --- docs/content/guide/animations.ngdoc | 7 +- src/ng/directive/ngClass.js | 124 ++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+), 3 deletions(-) diff --git a/docs/content/guide/animations.ngdoc b/docs/content/guide/animations.ngdoc index a13661a36a68..22e4df094839 100644 --- a/docs/content/guide/animations.ngdoc +++ b/docs/content/guide/animations.ngdoc @@ -229,11 +229,12 @@ triggered: | {@link ngRoute.directive:ngView#animations ngView} | enter and leave | | {@link module:ngMessages#animations ngMessage / ngMessageExp} | enter and leave | | {@link ng.directive:ngClass#animations ngClass / {{class}​}} | add and remove | -| {@link ng.directive:ngClass#animations ngClassEven / ngClassOdd} | add and remove | +| {@link ng.directive:ngClassEven#animations ngClassEven} | add and remove | +| {@link ng.directive:ngClassOdd#animations ngClassOdd} | add and remove | | {@link ng.directive:ngHide#animations ngHide} | add and remove (the `ng-hide` class) | | {@link ng.directive:ngShow#animations ngShow} | add and remove (the `ng-hide` class) | -| {@link ng.directive:ngModel#animations ngModel} | add and remove ({@link ng.directive:ngModel#css-classes various classes}) | -| {@link ng.directive:form#animations form / ngForm} | add and remove ({@link ng.directive:form#css-classes various classes}) | +| {@link ng.directive:ngModel#animations ngModel} | add and remove ({@link ng.directive:ngModel#css-classes various classes}) | +| {@link ng.directive:form#animations form / ngForm} | add and remove ({@link ng.directive:form#css-classes various classes}) | | {@link module:ngMessages#animations ngMessages} | add and remove (the `ng-active`/`ng-inactive` classes) | For a full breakdown of the steps involved during each animation event, refer to the diff --git a/src/ng/directive/ngClass.js b/src/ng/directive/ngClass.js index e38c7c141938..7b1ca13b2915 100644 --- a/src/ng/directive/ngClass.js +++ b/src/ng/directive/ngClass.js @@ -338,6 +338,12 @@ var ngClassDirective = classDirective('', true); * This directive can be applied only within the scope of an * {@link ng.directive:ngRepeat ngRepeat}. * + * @animations + * | Animation | Occurs | + * |----------------------------------|-------------------------------------| + * | {@link ng.$animate#addClass addClass} | just before the class is applied to the element | + * | {@link ng.$animate#removeClass removeClass} | just before the class is removed from the element | + * * @element ANY * @param {expression} ngClassOdd {@link guide/expression Expression} to eval. The result * of the evaluation can be a string representing space delimited class names or an array. @@ -370,6 +376,62 @@ var ngClassDirective = classDirective('', true); }); + * + *
    + * @example + * An example on how to implement animations using `ngClassOdd`: + * + + +
    + +
    + + + + +
    {{ item }}
    +
    +
    + + .odd { + background: rgba(255, 255, 0, 0.25); + } + + .odd-add, .odd-remove { + transition: 1.5s; + } + + + it('should add new entries to the beginning of the list', function() { + var button = element(by.buttonText('Add item')); + var rows = element.all(by.repeater('item in items')); + + expect(rows.count()).toBe(4); + expect(rows.get(0).getText()).toBe('Item 3'); + expect(rows.get(1).getText()).toBe('Item 2'); + + button.click(); + + expect(rows.count()).toBe(5); + expect(rows.get(0).getText()).toBe('Item 4'); + expect(rows.get(1).getText()).toBe('Item 3'); + }); + + it('should add odd class to odd entries', function() { + var button = element(by.buttonText('Add item')); + var rows = element.all(by.repeater('item in items')); + + expect(rows.get(0).getAttribute('class')).toMatch(/odd/); + expect(rows.get(1).getAttribute('class')).not.toMatch(/odd/); + + button.click(); + + expect(rows.get(0).getAttribute('class')).toMatch(/odd/); + expect(rows.get(1).getAttribute('class')).not.toMatch(/odd/); + }); + +
    */ var ngClassOddDirective = classDirective('Odd', 0); @@ -386,6 +448,12 @@ var ngClassOddDirective = classDirective('Odd', 0); * This directive can be applied only within the scope of an * {@link ng.directive:ngRepeat ngRepeat}. * + * @animations + * | Animation | Occurs | + * |----------------------------------|-------------------------------------| + * | {@link ng.$animate#addClass addClass} | just before the class is applied to the element | + * | {@link ng.$animate#removeClass removeClass} | just before the class is removed from the element | + * * @element ANY * @param {expression} ngClassEven {@link guide/expression Expression} to eval. The * result of the evaluation can be a string representing space delimited class names or an array. @@ -418,5 +486,61 @@ var ngClassOddDirective = classDirective('Odd', 0); }); + * + *
    + * @example + * An example on how to implement animations using `ngClassEven`: + * + + +
    + +
    + + + + +
    {{ item }}
    +
    +
    + + .even { + background: rgba(255, 255, 0, 0.25); + } + + .even-add, .even-remove { + transition: 1.5s; + } + + + it('should add new entries to the beginning of the list', function() { + var button = element(by.buttonText('Add item')); + var rows = element.all(by.repeater('item in items')); + + expect(rows.count()).toBe(4); + expect(rows.get(0).getText()).toBe('Item 3'); + expect(rows.get(1).getText()).toBe('Item 2'); + + button.click(); + + expect(rows.count()).toBe(5); + expect(rows.get(0).getText()).toBe('Item 4'); + expect(rows.get(1).getText()).toBe('Item 3'); + }); + + it('should add even class to even entries', function() { + var button = element(by.buttonText('Add item')); + var rows = element.all(by.repeater('item in items')); + + expect(rows.get(0).getAttribute('class')).not.toMatch(/even/); + expect(rows.get(1).getAttribute('class')).toMatch(/even/); + + button.click(); + + expect(rows.get(0).getAttribute('class')).not.toMatch(/even/); + expect(rows.get(1).getAttribute('class')).toMatch(/even/); + }); + +
    */ var ngClassEvenDirective = classDirective('Even', 1); From e4e2024d1c0860b142a915fab3f7beff975aa048 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Thu, 8 Feb 2018 17:59:36 +0100 Subject: [PATCH 478/849] chore(code.angularjs.org): increase the cache duration This is already set, but wasn't checked in --- scripts/code.angularjs.org-firebase/functions/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/code.angularjs.org-firebase/functions/index.js b/scripts/code.angularjs.org-firebase/functions/index.js index 90f02fc786eb..33f7ba04df7d 100644 --- a/scripts/code.angularjs.org-firebase/functions/index.js +++ b/scripts/code.angularjs.org-firebase/functions/index.js @@ -6,8 +6,8 @@ const path = require('path'); const gcsBucketId = `${process.env.GCLOUD_PROJECT}.appspot.com`; -const BROWSER_CACHE_DURATION = 300; -const CDN_CACHE_DURATION = 600; +const BROWSER_CACHE_DURATION = 60 * 10; +const CDN_CACHE_DURATION = 60 * 60 * 12; function sendStoredFile(request, response) { let filePathSegments = request.path.split('/').filter((segment) => { From 3ecb00115a95bce3add50680b452436fbf213d8c Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Mon, 5 Feb 2018 19:26:19 +0100 Subject: [PATCH 479/849] chore(docs.angularjs.org): serve xml files (sitemap) --- scripts/docs.angularjs.org-firebase/firebase.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/docs.angularjs.org-firebase/firebase.json b/scripts/docs.angularjs.org-firebase/firebase.json index 5f5d70dc02d6..91f9a778b634 100644 --- a/scripts/docs.angularjs.org-firebase/firebase.json +++ b/scripts/docs.angularjs.org-firebase/firebase.json @@ -23,7 +23,7 @@ "destination": "/index-production.html" }, { - "source": "**/*!(.jpg|.jpeg|.gif|.png|.html|.js|.map|.json|.css|.svg|.ttf|.txt|.woff|.woff2|.eot)", + "source": "**/*!(.jpg|.jpeg|.gif|.png|.html|.js|.map|.json|.css|.svg|.ttf|.txt|.woff|.woff2|.eot|.xml)", "destination": "/index-production.html" } ] From 3e7a87d7d1be2afea16d0863040fe51e26326d6f Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Fri, 12 Jan 2018 13:30:05 +0100 Subject: [PATCH 480/849] fix(browserTrigger): support CompositionEvent --- src/ngMock/browserTrigger.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/ngMock/browserTrigger.js b/src/ngMock/browserTrigger.js index 196772d1e3e9..eb80e15964dc 100644 --- a/src/ngMock/browserTrigger.js +++ b/src/ngMock/browserTrigger.js @@ -132,6 +132,24 @@ evnt.keyCode = eventData.keyCode; evnt.charCode = eventData.charCode; evnt.which = eventData.which; + } else if (/composition/.test(eventType)) { + try { + evnt = new window.CompositionEvent(eventType, { + data: eventData.data + }); + } catch (e) { + // Support: IE9+ + evnt = window.document.createEvent('CompositionEvent', {}); + evnt.initCompositionEvent( + eventType, + eventData.bubbles, + eventData.cancelable, + window, + eventData.data, + null + ); + } + } else { evnt = window.document.createEvent('MouseEvents'); x = x || 0; From 2789ccbcf9666b64211c08b188b168175109f563 Mon Sep 17 00:00:00 2001 From: Jae Ik Lee Date: Tue, 26 Dec 2017 03:11:51 +0900 Subject: [PATCH 481/849] fix(input): fix composition mode in IE for Korean input Fixes #6656 Closes #16273 --- src/ng/directive/input.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js index 7d1bec7cfe9d..3b841d25a348 100644 --- a/src/ng/directive/input.js +++ b/src/ng/directive/input.js @@ -1248,6 +1248,16 @@ function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) { composing = true; }); + // Support: IE9+ + element.on('compositionupdate', function(ev) { + // End composition when ev.data is empty string on 'compositionupdate' event. + // When the input de-focusses (e.g. by clicking away), IE triggers 'compositionupdate' + // instead of 'compositionend'. + if (isUndefined(ev.data) || ev.data === '') { + composing = false; + } + }); + element.on('compositionend', function() { composing = false; listener(); From c484213180470c2a8044eeb09dfdc5ef11099bc8 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Fri, 12 Jan 2018 13:30:33 +0100 Subject: [PATCH 482/849] test(input): add test for IE composition bug --- test/ng/directive/inputSpec.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js index 93d2184f969d..8c86b44ceada 100644 --- a/test/ng/directive/inputSpec.js +++ b/test/ng/directive/inputSpec.js @@ -134,6 +134,20 @@ describe('input', function() { browserTrigger(inputElm, 'compositionend'); expect($rootScope.name).toEqual('caitp'); }); + + + it('should end composition on "compositionupdate" when event.data is ""', function() { + // This tests a bug workaround for IE9-11 + // During composition, when an input is de-focussed by clicking away from it, + // the compositionupdate event is called with '', followed by a change event. + var inputElm = helper.compileInput(''); + browserTrigger(inputElm, 'compositionstart'); + helper.changeInputValueTo('caitp'); + expect($rootScope.name).toBeUndefined(); + browserTrigger(inputElm, 'compositionupdate', {data: ''}); + browserTrigger(inputElm, 'change'); + expect($rootScope.name).toEqual('caitp'); + }); }); From 9a0f1abddac5670a0d6efa7689f04d594bb9f274 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Thu, 8 Feb 2018 23:43:00 +0100 Subject: [PATCH 483/849] chore(docs.angularjs.org): deploy sitemap.xml Closes #16445 --- Gruntfile.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 6d5b9e09b3df..08ff823f0145 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -162,7 +162,8 @@ module.exports = function(grunt) { clean: { build: ['build'], - tmp: ['tmp'] + tmp: ['tmp'], + deploy: ['uploadDocs', 'uploadCode'] }, eslint: { @@ -326,7 +327,7 @@ module.exports = function(grunt) { files: [ // The source files are needed by the embedded examples in the docs app. { - src: 'build/angular*.{js,js.map,min.js}', + src: ['build/angular*.{js,js.map,min.js}', 'build/sitemap.xml'], dest: 'uploadDocs/', expand: true, flatten: true @@ -363,10 +364,6 @@ module.exports = function(grunt) { }, shell: { - // Travis expects the firebase.json in the repository root, but we have it in a sub-folder - 'symlink-firebase-docs': { - command: 'ln -s ./scripts/docs.angularjs.org-firebase/firebase.json ./firebase.json' - }, 'install-node-dependencies': { command: 'yarn' }, From 32b1a0c5807a6b3148543676b920543e32162c69 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Thu, 25 Jan 2018 19:35:04 +0100 Subject: [PATCH 484/849] chore(docs.angularjs.org): actually fix deployment When a file is symlinked, relative paths obviously aren't correct anymore. This error was masked because Travis didn't fail the job when Firebase couldn't find the public folder. To fix, we copy the file and adjust the folder path --- Gruntfile.js | 2 +- lib/grunt/plugins.js | 5 +++++ lib/grunt/utils.js | 11 +++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index 08ff823f0145..19732e7e1842 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -463,7 +463,7 @@ module.exports = function(grunt) { 'package', 'compress:deployFirebaseCode', 'copy:deployFirebaseCode', - 'shell:symlink-firebase-docs', + 'firebaseDocsJsonForTravis', 'copy:deployFirebaseDocs' ]); grunt.registerTask('default', ['package']); diff --git a/lib/grunt/plugins.js b/lib/grunt/plugins.js index 2d71b85501eb..7e5dc290b533 100644 --- a/lib/grunt/plugins.js +++ b/lib/grunt/plugins.js @@ -62,4 +62,9 @@ module.exports = function(grunt) { grunt.registerTask('collect-errors', 'Combine stripped error files', function() { util.collectErrors(); }); + + grunt.registerTask('firebaseDocsJsonForTravis', function() { + util.firebaseDocsJsonForTravis(); + }); + }; diff --git a/lib/grunt/utils.js b/lib/grunt/utils.js index 52dbcde8fa5e..80e529186514 100644 --- a/lib/grunt/utils.js +++ b/lib/grunt/utils.js @@ -292,5 +292,16 @@ module.exports = { } next(); }; + }, + + // Our Firebase projects are in subfolders, but Travis expects them in the root, + // so we need to modify the upload folder path and copy the file into the root + firebaseDocsJsonForTravis: function() { + var fileName = 'scripts/docs.angularjs.org-firebase/firebase.json'; + var json = grunt.file.readJSON(fileName); + + json.hosting.public = 'uploadDocs'; + + grunt.file.write('firebase.json', JSON.stringify(json)); } }; From a7a9688962039fb5af5e073faddbc239a9479e9b Mon Sep 17 00:00:00 2001 From: George Kalpakas Date: Sun, 11 Feb 2018 18:15:23 +0200 Subject: [PATCH 485/849] fix(docs): fix `@media` breakpoints for small/extra small devices Previously, our custom styles used `@media` breakpoints for small/extra small devices that were off-by-one from [Bootstrap breakpoints](https://getbootstrap.com/docs/3.3/css/#responsive-utilities-classes) (767px vs 768px). This caused the site to not be displayed correctly on these exact sizes, which affected for example all iPad devices (whose screens are exactly 768px wide). This commit fixes it by making our breakpoints match those of Bootstrap. Fixes #16448 Closes #16449 --- docs/app/assets/css/docs.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/app/assets/css/docs.css b/docs/app/assets/css/docs.css index ba69449090eb..54d81ada753d 100644 --- a/docs/app/assets/css/docs.css +++ b/docs/app/assets/css/docs.css @@ -713,14 +713,14 @@ ul.events > li { margin-right: 5px; } -@media only screen and (min-width: 769px) { +@media only screen and (min-width: 768px) { [ng-include="partialPath"].ng-hide { display: block !important; visibility: hidden; } } -@media only screen and (min-width: 769px) and (max-width: 991px) { +@media only screen and (min-width: 768px) and (max-width: 991px) { .main-body-grid { margin-top: 160px; } @@ -729,7 +729,7 @@ ul.events > li { } } -@media only screen and (max-width : 768px) { +@media only screen and (max-width: 767px) { .picker, .picker select { width: auto; display: block; From 9f1793fd2dc92225991f9db5ec661af6f86206ca Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Mon, 12 Feb 2018 12:26:32 +0100 Subject: [PATCH 486/849] chore(eslint): allow ES6 for node scripts --- .eslintrc-node.json | 9 +++++++-- Gruntfile.js | 1 + package.json | 1 + yarn.lock | 4 ++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.eslintrc-node.json b/.eslintrc-node.json index 643f345d88e0..c16a8a883837 100644 --- a/.eslintrc-node.json +++ b/.eslintrc-node.json @@ -1,8 +1,13 @@ { "extends": "./.eslintrc-base.json", - "env": { "browser": false, "node": true - } + }, + "parserOptions": { + "ecmaVersion": 2017 + }, + "plugins": [ + "promise" + ] } diff --git a/Gruntfile.js b/Gruntfile.js index 19732e7e1842..0d6dc6b956be 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -174,6 +174,7 @@ module.exports = function(grunt) { 'docs/**/*.js', 'lib/**/*.js', 'scripts/**/*.js', + '!scripts/*/*/node_modules/**', 'src/**/*.js', 'test/**/*.js', 'i18n/**/*.js', diff --git a/package.json b/package.json index 255b569f30a6..c82bb19a829f 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "cz-conventional-changelog": "1.1.4", "dgeni": "^0.4.0", "dgeni-packages": "^0.16.4", + "eslint-plugin-promise": "^3.6.0", "event-stream": "~3.1.0", "glob": "^6.0.1", "google-code-prettify": "1.0.1", diff --git a/yarn.lock b/yarn.lock index 62016649857b..f635a238b14d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1994,6 +1994,10 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-plugin-promise@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz#54b7658c8f454813dc2a870aff8152ec4969ba75" + eslint@^3.0.0: version "3.15.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.15.0.tgz#bdcc6a6c5ffe08160e7b93c066695362a91e30f2" From e1e2100e66acf79bafed7e07fbbdf7d865b2b035 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Fri, 9 Feb 2018 20:18:29 +0100 Subject: [PATCH 487/849] chore(code.angularjs.org): don't gzip compressed image files --- Gruntfile.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 0d6dc6b956be..5cc2dd778620 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -315,12 +315,12 @@ module.exports = function(grunt) { }, deployFirebaseCode: { files: [ - // the zip file should not be compressed again. + // copy files that are not handled by compress { - src: 'build/*.zip', + cwd: 'build', + src: '**/*.{zip,jpg,jpeg,png}', dest: 'uploadCode/' + deployVersion + '/', - expand: true, - flatten: true + expand: true } ] }, @@ -357,7 +357,8 @@ module.exports = function(grunt) { options: { mode: 'gzip' }, - src: ['**', '!*.zip'], + // Already compressed files should not be compressed again + src: ['**', '!**/*.{zip,png,jpeg,jpg}'], cwd: 'build', expand: true, dest: 'uploadCode/' + deployVersion + '/' From 9196c80c3394d0afcfc4f3ab0ec881d501190fe3 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Mon, 12 Feb 2018 10:47:42 +0100 Subject: [PATCH 488/849] chore(deploy): rename deploy folders --- .gitignore | 1 + .travis.yml | 2 +- Gruntfile.js | 17 +++++++++++------ lib/grunt/utils.js | 6 ++++-- .../docs.angularjs.org-firebase/firebase.json | 2 +- scripts/travis/build.sh | 2 +- 6 files changed, 19 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 2da934151e89..588beda3f172 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /build/ +/deploy/ /benchpress-build/ .DS_Store gen_docs.disable diff --git a/.travis.yml b/.travis.yml index 4c226f02fe85..3199f7718d4b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -94,7 +94,7 @@ jobs: secret_access_key: secure: tHIFdSq55qkyZf9zT/3+VkhUrTvOTMuswxXU3KyWaBrSieZqG0UnUDyNm+n3lSfX95zEl/+rJAWbfvhVSxZi13ndOtvRF+MdI1cvow2JynP0aDSiPffEvVrZOmihD6mt2SlMfhskr5FTduQ69kZG6DfLcve1PPDaIwnbOv3phb8= bucket: code-angularjs-org-338b8.appspot.com - local-dir: uploadCode + local-dir: deploy/code detect_encoding: true # detects gzip compression on: repo: angular/angular.js diff --git a/Gruntfile.js b/Gruntfile.js index 5cc2dd778620..c42113fc2ee4 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -163,7 +163,10 @@ module.exports = function(grunt) { clean: { build: ['build'], tmp: ['tmp'], - deploy: ['uploadDocs', 'uploadCode'] + deploy: [ + 'deploy/docs', + 'deploy/code' + ] }, eslint: { @@ -319,7 +322,7 @@ module.exports = function(grunt) { { cwd: 'build', src: '**/*.{zip,jpg,jpeg,png}', - dest: 'uploadCode/' + deployVersion + '/', + dest: 'deploy/code/' + deployVersion + '/', expand: true } ] @@ -329,14 +332,16 @@ module.exports = function(grunt) { // The source files are needed by the embedded examples in the docs app. { src: ['build/angular*.{js,js.map,min.js}', 'build/sitemap.xml'], - dest: 'uploadDocs/', + dest: 'deploy/docs/', expand: true, flatten: true }, { cwd: 'build/docs', src: '**', - dest: 'uploadDocs/', + dest: 'deploy/docs/', + expand: true + } expand: true } ] @@ -361,7 +366,7 @@ module.exports = function(grunt) { src: ['**', '!**/*.{zip,png,jpeg,jpg}'], cwd: 'build', expand: true, - dest: 'uploadCode/' + deployVersion + '/' + dest: 'deploy/code/' + deployVersion + '/' } }, @@ -461,7 +466,7 @@ module.exports = function(grunt) { 'merge-conflict', 'eslint' ]); - grunt.registerTask('prepareFirebaseDeploy', [ + grunt.registerTask('prepareDeploy', [ 'package', 'compress:deployFirebaseCode', 'copy:deployFirebaseCode', diff --git a/lib/grunt/utils.js b/lib/grunt/utils.js index 80e529186514..c5b16946ba8d 100644 --- a/lib/grunt/utils.js +++ b/lib/grunt/utils.js @@ -297,10 +297,12 @@ module.exports = { // Our Firebase projects are in subfolders, but Travis expects them in the root, // so we need to modify the upload folder path and copy the file into the root firebaseDocsJsonForTravis: function() { - var fileName = 'scripts/docs.angularjs.org-firebase/firebase.json'; + var docsScriptFolder = 'scripts/docs.angularjs.org-firebase/'; + + var fileName = docsScriptFolder + 'firebase.json'; var json = grunt.file.readJSON(fileName); - json.hosting.public = 'uploadDocs'; + json.hosting.public = 'deploy/docs'; grunt.file.write('firebase.json', JSON.stringify(json)); } diff --git a/scripts/docs.angularjs.org-firebase/firebase.json b/scripts/docs.angularjs.org-firebase/firebase.json index 91f9a778b634..abb70329f815 100644 --- a/scripts/docs.angularjs.org-firebase/firebase.json +++ b/scripts/docs.angularjs.org-firebase/firebase.json @@ -1,6 +1,6 @@ { "hosting": { - "public": "../../uploadDocs", + "public": "../../deploy/docs", "ignore": [ "/index.html", "/index-debug.html", diff --git a/scripts/travis/build.sh b/scripts/travis/build.sh index fdf94d8f13de..980855388492 100755 --- a/scripts/travis/build.sh +++ b/scripts/travis/build.sh @@ -79,7 +79,7 @@ case "$JOB" in fi if [[ "$DEPLOY_DOCS" == true || "$DEPLOY_CODE" == true ]]; then - grunt prepareFirebaseDeploy + grunt prepareDeploy else echo "Skipping deployment build because conditions have not been met." fi From 75bf199421011466b799b2eeec5223c0a9143516 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Mon, 12 Feb 2018 10:49:19 +0100 Subject: [PATCH 489/849] chore(docs.angularjs.org): serve snapshots for googlebot This commit restores serving the plain partials (content) when a docs page is accessed with ?_escaped_fragment_=. The Google Ajax Crawler accesses these urls when the page has `` is set. During the migration to Firebase, this was lost, which resulted in Google dropping the docs almost completely from the index. We are using a Firebase cloud function to serve the partials. Since we cannot access the static hosted files from the function, we have to deploy them as part of the function directory instead, from which they can be read. Related to #16432 Related to #16417 --- Gruntfile.js | 17 +- lib/grunt/utils.js | 5 +- .../docs.angularjs.org-firebase/firebase.json | 11 +- .../functions/index.js | 49 + .../functions/package-lock.json | 4265 +++++++++++++++++ .../functions/package.json | 21 + .../readme.firebase.docs.md | 17 +- 7 files changed, 4376 insertions(+), 9 deletions(-) create mode 100644 scripts/docs.angularjs.org-firebase/functions/index.js create mode 100644 scripts/docs.angularjs.org-firebase/functions/package-lock.json create mode 100644 scripts/docs.angularjs.org-firebase/functions/package.json diff --git a/Gruntfile.js b/Gruntfile.js index c42113fc2ee4..ba5efa0d8f09 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -13,6 +13,8 @@ var semver = require('semver'); var exec = require('shelljs').exec; var pkg = require(__dirname + '/package.json'); +var docsScriptFolder = 'scripts/docs.angularjs.org-firebase'; + // Node.js version checks if (!semver.satisfies(process.version, pkg.engines.node)) { reportOrFail('Invalid node version (' + process.version + '). ' + @@ -165,7 +167,8 @@ module.exports = function(grunt) { tmp: ['tmp'], deploy: [ 'deploy/docs', - 'deploy/code' + 'deploy/code', + docsScriptFolder + '/functions/html' ] }, @@ -341,7 +344,17 @@ module.exports = function(grunt) { src: '**', dest: 'deploy/docs/', expand: true - } + }, + { + src: ['build/docs/index-production.html'], + dest: docsScriptFolder + '/functions/content', + expand: true, + flatten: true + }, + { + cwd: 'build/docs', + src: 'partials/**', + dest: docsScriptFolder + '/functions/content', expand: true } ] diff --git a/lib/grunt/utils.js b/lib/grunt/utils.js index c5b16946ba8d..64ddc6f185ec 100644 --- a/lib/grunt/utils.js +++ b/lib/grunt/utils.js @@ -297,12 +297,13 @@ module.exports = { // Our Firebase projects are in subfolders, but Travis expects them in the root, // so we need to modify the upload folder path and copy the file into the root firebaseDocsJsonForTravis: function() { - var docsScriptFolder = 'scripts/docs.angularjs.org-firebase/'; + var docsScriptFolder = 'scripts/docs.angularjs.org-firebase'; - var fileName = docsScriptFolder + 'firebase.json'; + var fileName = docsScriptFolder + '/firebase.json'; var json = grunt.file.readJSON(fileName); json.hosting.public = 'deploy/docs'; + json.functions.source = docsScriptFolder + '/functions'; grunt.file.write('firebase.json', JSON.stringify(json)); } diff --git a/scripts/docs.angularjs.org-firebase/firebase.json b/scripts/docs.angularjs.org-firebase/firebase.json index abb70329f815..880a5eca86de 100644 --- a/scripts/docs.angularjs.org-firebase/firebase.json +++ b/scripts/docs.angularjs.org-firebase/firebase.json @@ -23,9 +23,14 @@ "destination": "/index-production.html" }, { - "source": "**/*!(.jpg|.jpeg|.gif|.png|.html|.js|.map|.json|.css|.svg|.ttf|.txt|.woff|.woff2|.eot|.xml)", - "destination": "/index-production.html" + "source": "**/*!(.@(jpg|jpeg|gif|png|html|js|map|json|css|svg|ttf|txt|woff|woff2|eot|xml))", + "function": "sendFile" } ] + }, + "functions": { + "predeploy": [ + "npm --prefix $RESOURCE_DIR run lint" + ] } -} \ No newline at end of file +} diff --git a/scripts/docs.angularjs.org-firebase/functions/index.js b/scripts/docs.angularjs.org-firebase/functions/index.js new file mode 100644 index 000000000000..b86eb32f642a --- /dev/null +++ b/scripts/docs.angularjs.org-firebase/functions/index.js @@ -0,0 +1,49 @@ +'use strict'; + +const functions = require('firebase-functions'); +const fs = require('fs'); + +const BROWSER_CACHE_DURATION = 60 * 60; +const CDN_CACHE_DURATION = 60 * 60 * 12; + +const headers = { + 'Cache-Control': `public max-age=${BROWSER_CACHE_DURATION} s-maxage=${CDN_CACHE_DURATION}` +}; + +const buildSnapshot = data => ` + + + + + + + + ${data} + + `; + +function sendFile(request, response) { + + const snapshotRequested = typeof request.query._escaped_fragment_ !== 'undefined'; + const filePath = `content/${snapshotRequested ? `partials${request.path}` : 'index-production'}.html`; + + if (snapshotRequested) { + fs.readFile(filePath, {encoding: 'utf8'}, (error, data) => { + if (error) { + response + .status(404) + .end(); + } else { + response + .set(headers) + .send(buildSnapshot(data)); + } + }); + } else { + response + .set(headers) + .sendFile(filePath, {root: __dirname}); + } +} + +exports.sendFile = functions.https.onRequest(sendFile); diff --git a/scripts/docs.angularjs.org-firebase/functions/package-lock.json b/scripts/docs.angularjs.org-firebase/functions/package-lock.json new file mode 100644 index 000000000000..913ba90ff890 --- /dev/null +++ b/scripts/docs.angularjs.org-firebase/functions/package-lock.json @@ -0,0 +1,4265 @@ +{ + "name": "functions", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@firebase/app": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.1.8.tgz", + "integrity": "sha512-LkXMugZ2Z2S0r9zH62YNRhCscstFqJuufEjJmb/XWCTjCKzJZKdbE/6A+WNTitNSHgAkKEF0NoGsIuyhYAubkg==", + "requires": { + "@firebase/app-types": "0.1.1", + "@firebase/util": "0.1.8" + } + }, + "@firebase/app-types": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.1.1.tgz", + "integrity": "sha512-0CmY/orojHIJiTyDXUqrAtCSmk2nWw7h7qamJUPcBRgAIfc3ZsjFBLo1zj0sRVzZYbTWS9cKBC8tnpFZlEMLPw==" + }, + "@firebase/database": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.1.9.tgz", + "integrity": "sha512-w7bsItAvUDMGDX7v2NTIHmt5yRYDWAdUKqC7p152dopGw6AAFgxhR5jAikq7qB2UOPB1vRy8KHlcMk3RnF6cXw==", + "requires": { + "@firebase/database-types": "0.1.1", + "@firebase/util": "0.1.8", + "faye-websocket": "0.11.1" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "requires": { + "websocket-driver": "0.7.0" + } + } + } + }, + "@firebase/database-types": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.1.1.tgz", + "integrity": "sha512-LbLnwXFeQuxQrsuUccbiXX4j3wdajLPNcbivzypJhww+VU4W/4grnbVn/zPlRlMcG6jTwSyBnjdtJFKMSeNU+A==" + }, + "@firebase/util": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.1.8.tgz", + "integrity": "sha512-SfWLSfp1MXb5ItG3wGfdxxIDzFMcjq2E0iz9C7sstzD3mJ8/q55Sd8esAL3VQx5jD/hbfKUypsBczr5A0ML7Tw==" + }, + "@google-cloud/common": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.15.1.tgz", + "integrity": "sha512-cnVtHLvyiSQvb1RzXWDp7PA1sA8Jmc47+wp/xwHwdGOlQZfKog5iluZ0C/LB8iklFXpcTwlNMorqLuZ/qH0DDA==", + "requires": { + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "concat-stream": "1.6.0", + "create-error-class": "3.0.2", + "duplexify": "3.5.3", + "ent": "2.2.0", + "extend": "3.0.1", + "google-auto-auth": "0.8.2", + "is": "3.2.1", + "log-driver": "1.2.6", + "methmeth": "1.1.0", + "modelo": "4.2.3", + "request": "2.83.0", + "retry-request": "3.3.1", + "split-array-stream": "1.0.3", + "stream-events": "1.0.2", + "string-format-obj": "1.1.1", + "through2": "2.0.3" + } + }, + "@google-cloud/common-grpc": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@google-cloud/common-grpc/-/common-grpc-0.5.5.tgz", + "integrity": "sha512-wgtuBcgTZ7cUMGQV9MSz4y0+FReLqdsOOgzOifu+lsnRh9qsMEZJ9sBDLB6NrRxrvcAHZc4ayiBx7B7i5cDYoA==", + "requires": { + "@google-cloud/common": "0.16.1", + "dot-prop": "4.2.0", + "duplexify": "3.5.3", + "extend": "3.0.1", + "grpc": "1.7.3", + "is": "3.2.1", + "modelo": "4.2.3", + "retry-request": "3.3.1", + "through2": "2.0.3" + }, + "dependencies": { + "@google-cloud/common": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.16.1.tgz", + "integrity": "sha512-1sufDsSfgJ7fuBLq+ux8t3TlydMlyWl9kPZx2WdLINkGtf5RjvXX6EWYZiCMKe8flJ3oC0l95j5atN2uX5n3rg==", + "requires": { + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "concat-stream": "1.6.0", + "create-error-class": "3.0.2", + "duplexify": "3.5.3", + "ent": "2.2.0", + "extend": "3.0.1", + "google-auto-auth": "0.9.3", + "is": "3.2.1", + "log-driver": "1.2.5", + "methmeth": "1.1.0", + "modelo": "4.2.3", + "request": "2.83.0", + "retry-request": "3.3.1", + "split-array-stream": "1.0.3", + "stream-events": "1.0.2", + "string-format-obj": "1.1.1", + "through2": "2.0.3" + } + }, + "gcp-metadata": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.4.1.tgz", + "integrity": "sha512-yFE7v+NyoMiTOi2L6r8q87eVbiZCKooJNPKXTHhBStga8pwwgWofK9iHl00qd0XevZxcpk7ORaEL/ALuTvlaGQ==", + "requires": { + "extend": "3.0.1", + "retry-request": "3.3.1" + } + }, + "google-auto-auth": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.9.3.tgz", + "integrity": "sha512-TbOZZs0WJOolrRmdQLK5qmWdOJQFG1oPnxcIBbAwL7XCWcv3XgZ9gHJ6W4byrdEZT8TahNFgMfkHd73mqxM9dw==", + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.4.1", + "google-auth-library": "0.12.0", + "request": "2.83.0" + } + }, + "log-driver": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz", + "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=" + } + } + }, + "@google-cloud/firestore": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-0.11.2.tgz", + "integrity": "sha512-Dp5Im5y6LfJ2OuuGN/PX/w7+LdKPRhKbhgNOaUjreIULo7Ya9AyRMYn/E+w8Rm+b3CZXM7fzVpkkdg9Thq8uUQ==", + "requires": { + "@google-cloud/common": "0.15.1", + "@google-cloud/common-grpc": "0.5.5", + "bun": "0.0.12", + "extend": "3.0.1", + "functional-red-black-tree": "1.0.1", + "google-gax": "0.14.5", + "is": "3.2.1", + "safe-buffer": "5.1.1", + "through2": "2.0.3" + } + }, + "@google-cloud/storage": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-1.5.2.tgz", + "integrity": "sha512-E97x2oZr9w0N26H0LtyjR3XLFSLYXH5D8y8HwEZRWQnNVF9sO+x16MEhdHFdFclgdx687eGeCYbDVKpP+dKb6w==", + "requires": { + "@google-cloud/common": "0.15.1", + "arrify": "1.0.1", + "async": "2.6.0", + "concat-stream": "1.6.0", + "create-error-class": "3.0.2", + "duplexify": "3.5.3", + "extend": "3.0.1", + "gcs-resumable-upload": "0.8.2", + "hash-stream-validation": "0.2.1", + "is": "3.2.1", + "mime-types": "2.1.17", + "once": "1.4.0", + "pumpify": "1.4.0", + "request": "2.83.0", + "safe-buffer": "5.1.1", + "snakeize": "0.1.0", + "stream-events": "1.0.2", + "string-format-obj": "1.1.1", + "through2": "2.0.3" + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "1.1.2", + "@protobufjs/inquire": "1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@types/body-parser": { + "version": "1.16.8", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.16.8.tgz", + "integrity": "sha512-BdN2PXxOFnTXFcyONPW6t0fHjz2fvRZHVMFpaS0wYr+Y8fWEaNOs4V8LEu/fpzQlMx+ahdndgTaGTwPC+J/EeA==", + "requires": { + "@types/express": "4.11.1", + "@types/node": "8.9.3" + } + }, + "@types/events": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz", + "integrity": "sha512-y3bR98mzYOo0pAZuiLari+cQyiKk3UXRuT45h1RjhfeCzqkjaVsfZJNaxdgtk7/3tzOm1ozLTqEqMP3VbI48jw==" + }, + "@types/express": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.11.1.tgz", + "integrity": "sha512-ttWle8cnPA5rAelauSWeWJimtY2RsUf2aspYZs7xPHiWgOlPn6nnUfBMtrkcnjFJuIHJF4gNOdVvpLK2Zmvh6g==", + "requires": { + "@types/body-parser": "1.16.8", + "@types/express-serve-static-core": "4.11.1", + "@types/serve-static": "1.13.1" + } + }, + "@types/express-serve-static-core": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.11.1.tgz", + "integrity": "sha512-EehCl3tpuqiM8RUb+0255M8PhhSwTtLfmO7zBBdv0ay/VTd/zmrqDfQdZFsa5z/PVMbH2yCMZPXsnrImpATyIw==", + "requires": { + "@types/events": "1.1.0", + "@types/node": "8.9.3" + } + }, + "@types/google-cloud__storage": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@types/google-cloud__storage/-/google-cloud__storage-1.1.7.tgz", + "integrity": "sha512-010Llp+5ze+XWWmZuLDxs0pZgFjOgtJQVt9icJ0Ed67ZFLq7PnXkYx8x/k9nwDojR5/X4XoLPNqB1F627TScdQ==", + "requires": { + "@types/node": "8.9.3" + } + }, + "@types/jsonwebtoken": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-7.2.5.tgz", + "integrity": "sha512-8CIcK1Vzq4w5TJyJYkLVhqASmCo1FSO1XIPQM1qv+Xo2nnb9RoRHxx8pkIzSZ4Tm9r3V4ZyFbF/fBewNPdclwA==", + "requires": { + "@types/node": "8.9.3" + } + }, + "@types/lodash": { + "version": "4.14.102", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.102.tgz", + "integrity": "sha512-k/SxycYmVc6sYo6kzm8cABHcbMs9MXn6jYsja1hLvZ/x9e31VHRRn+1UzWdpv6doVchphvKaOsZ0VTqbF7zvNg==" + }, + "@types/long": { + "version": "3.0.32", + "resolved": "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz", + "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" + }, + "@types/mime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", + "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" + }, + "@types/node": { + "version": "8.9.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.3.tgz", + "integrity": "sha512-wqrPE4Uvj2fmL0E5JFQiY7D/5bAKvVUfWTnQ5NEV35ULkAU0j3QuqIi9Qyrytz8M5hsrh8Kijt+FsdLQaZR+IA==" + }, + "@types/serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-jDMH+3BQPtvqZVIcsH700Dfi8Q3MIcEx16g/VdxjoqiGR/NntekB10xdBpirMKnPe9z2C5cBmL0vte0YttOr3Q==", + "requires": { + "@types/express-serve-static-core": "4.11.1", + "@types/mime": "2.0.0" + } + }, + "@types/sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-Yrz4TPsm/xaw7c39aTISskNirnRJj2W9OVeHv8ooOR9SG8NHEfh4lwvGeN9euzxDyPfBdFkvL/VHIY3kM45OpQ==", + "requires": { + "@types/node": "8.9.3" + } + }, + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + }, + "acorn-es7-plugin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", + "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=" + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "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=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arguejs": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/arguejs/-/arguejs-0.2.3.tgz", + "integrity": "sha1-tvk59f4OPNHz+T4qqSYkJL8xKvc=" + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "ascli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", + "requires": { + "colour": "0.7.1", + "optjs": "3.2.2" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.5" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "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", + "js-tokens": "3.0.2" + }, + "dependencies": { + "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", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", + "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "bl": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", + "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=", + "requires": { + "readable-stream": "1.0.34" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.2.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "bun": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/bun/-/bun-0.0.12.tgz", + "integrity": "sha512-Toms18J9DqnT+IfWkwxVTB2EaBprHvjlMWrTIsfX4xbu3ZBqVBwrERU0em1IgtRe04wT+wJxMlKHZok24hrcSQ==", + "requires": { + "readable-stream": "1.0.34" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "3.2.0" + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=" + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "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=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "5.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "supports-color": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", + "integrity": "sha512-F39vS48la4YvTZUPVeTqsjsFNrvcMwrV3RLZINsmHo+7djCvuUzSIeXOnZ5hmjef4bajL1dNccN+tg5XAliO5Q==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "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" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "codecov.io": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/codecov.io/-/codecov.io-0.0.1.tgz", + "integrity": "sha1-JeorCV4enqEYcr36WEIRgTDfeLE=", + "requires": { + "request": "2.42.0", + "urlgrey": "0.4.0" + }, + "dependencies": { + "asn1": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=", + "optional": true + }, + "assert-plus": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=", + "optional": true + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "optional": true + }, + "aws-sign2": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=", + "optional": true + }, + "boom": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", + "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=", + "requires": { + "hoek": "0.9.1" + } + }, + "caseless": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.6.0.tgz", + "integrity": "sha1-gWfBq4OX+1u5X5bSjlqBxQ8kesQ=" + }, + "combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "optional": true, + "requires": { + "delayed-stream": "0.0.5" + } + }, + "cryptiles": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", + "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=", + "optional": true, + "requires": { + "boom": "0.4.2" + } + }, + "delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", + "optional": true + }, + "forever-agent": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", + "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=" + }, + "form-data": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", + "integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=", + "optional": true, + "requires": { + "async": "0.9.2", + "combined-stream": "0.0.7", + "mime": "1.2.11" + } + }, + "hawk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", + "integrity": "sha1-h81JH5tG5OKurKM1QWdmiF0tHtk=", + "optional": true, + "requires": { + "boom": "0.4.2", + "cryptiles": "0.2.2", + "hoek": "0.9.1", + "sntp": "0.2.4" + } + }, + "hoek": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", + "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=" + }, + "http-signature": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", + "optional": true, + "requires": { + "asn1": "0.1.11", + "assert-plus": "0.1.5", + "ctype": "0.5.3" + } + }, + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", + "optional": true + }, + "mime-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", + "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=" + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" + }, + "oauth-sign": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.4.0.tgz", + "integrity": "sha1-8ilW8x6nFRqCHl8vsywRPK2Ln2k=", + "optional": true + }, + "qs": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz", + "integrity": "sha1-GbV/8k3CqZzh+L32r82ln472H4g=" + }, + "request": { + "version": "2.42.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.42.0.tgz", + "integrity": "sha1-VyvQFIk4VkBArHqxSLlkI6BjMEo=", + "requires": { + "aws-sign2": "0.5.0", + "bl": "0.9.5", + "caseless": "0.6.0", + "forever-agent": "0.5.2", + "form-data": "0.1.4", + "hawk": "1.1.1", + "http-signature": "0.10.1", + "json-stringify-safe": "5.0.1", + "mime-types": "1.0.2", + "node-uuid": "1.4.8", + "oauth-sign": "0.4.0", + "qs": "1.2.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3" + } + }, + "sntp": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", + "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=", + "optional": true, + "requires": { + "hoek": "0.9.1" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" + } + } + }, + "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" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "typedarray": "0.0.6" + } + }, + "configstore": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", + "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + } + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "cross-spawn": { + "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.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "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=" + }, + "ctype": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", + "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=", + "optional": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-equal": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz", + "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "defined": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", + "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=" + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + }, + "dependencies": { + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "diff-match-patch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.0.tgz", + "integrity": "sha1-HMPIOkkNZ/ldkeOfatHy4Ia2MEg=" + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "dot-prop": { + "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==", + "requires": { + "is-obj": "1.0.1" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexify": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.3.tgz", + "integrity": "sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA==", + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "stream-shift": "1.0.0" + } + }, + "eastasianwidth": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.1.1.tgz", + "integrity": "sha1-RNZW3p2kFWlEZzNTZfsxR7hXK3w=" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", + "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", + "requires": { + "base64url": "2.0.0", + "safe-buffer": "5.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "empower": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz", + "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=", + "requires": { + "core-js": "2.5.3", + "empower-core": "0.6.2" + } + }, + "empower-core": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", + "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", + "requires": { + "call-signature": "0.0.2", + "core-js": "2.5.3" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "1.4.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "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=", + "dev": true + }, + "eslint": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.17.0.tgz", + "integrity": "sha512-AyxBUCANU/o/xC0ijGMKavo5Ls3oK6xykiOITlMdjFjrKOsqLrA7Nf5cnrDgcKrHzBirclAZt63XO7YZlVUPwA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.1", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.3", + "esquery": "1.0.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.3.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.5.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "debug": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "strip-ansi": { + "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" + } + } + } + }, + "eslint-plugin-promise": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz", + "integrity": "sha512-YQzM6TLTlApAr7Li8vWKR+K3WghjwKcYzY0d2roWap4SLK+kzuagJX/leTetIDWsFcTFnKNJXWupDCD6aZkP2Q==", + "dev": true + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.3.tgz", + "integrity": "sha512-Zy3tAJDORxQZLl2baguiRU1syPERAIg0L+JB2MWorORgTu/CplzvxS9WWA7Xh4+Q+eOQihNs/1o1Xep8cvCxWQ==", + "dev": true, + "requires": { + "acorn": "5.4.1", + "acorn-jsx": "3.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz", + "integrity": "sha512-XLmq3H/BVvW6/GbxKryGxWORz1ebilSsUDlyC27bXhWGWAZWkGwS6FLHjOlwFXNFoWFQEO/Df4u0YYd0K3BQgQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "espurify": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", + "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", + "requires": { + "core-js": "2.5.3" + } + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "external-editor": { + "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", + "tmp": "0.0.33" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.9.3.tgz", + "integrity": "sha1-SCpQWw3wrmJrlphm0710DNuWLoM=", + "requires": { + "websocket-driver": "0.7.0" + } + }, + "figures": { + "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" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "firebase-admin": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-5.8.2.tgz", + "integrity": "sha1-TDkN87b9MlZ9jUVYrASXS+vRV0k=", + "requires": { + "@firebase/app": "0.1.8", + "@firebase/database": "0.1.9", + "@google-cloud/firestore": "0.11.2", + "@google-cloud/storage": "1.5.2", + "@types/google-cloud__storage": "1.1.7", + "@types/node": "8.9.3", + "faye-websocket": "0.9.3", + "jsonwebtoken": "8.1.0", + "node-forge": "0.7.1" + } + }, + "firebase-functions": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-0.8.1.tgz", + "integrity": "sha1-pC/m0kOGLEBq8W4cFrHQqB7CTAM=", + "requires": { + "@types/express": "4.11.1", + "@types/jsonwebtoken": "7.2.5", + "@types/lodash": "4.14.102", + "@types/sha1": "1.1.1", + "express": "4.16.2", + "jsonwebtoken": "7.4.3", + "lodash": "4.17.5", + "sha1": "1.1.1" + }, + "dependencies": { + "jsonwebtoken": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz", + "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=", + "requires": { + "joi": "6.10.1", + "jws": "3.1.4", + "lodash.once": "4.1.1", + "ms": "2.1.1", + "xtend": "4.0.1" + } + } + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gcp-metadata": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.3.1.tgz", + "integrity": "sha512-5kJPX/RXuqoLmHiOOgkSDk/LI0QaXpEvZ3pvQP4ifjGGDKZKVSOjL/GcDjXA5kLxppFCOjmmsu0Uoop9d1upaQ==", + "requires": { + "extend": "3.0.1", + "retry-request": "3.3.1" + } + }, + "gcs-resumable-upload": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-0.8.2.tgz", + "integrity": "sha512-PBl1OFABYxubxfYPh000I0+JLbQzBRtNqxzgxYboIQk2tdw7BvjJ2dVukk3YH4QM6GiUwqItyNqWBuxjLH8GhA==", + "requires": { + "buffer-equal": "1.0.0", + "configstore": "3.1.1", + "google-auto-auth": "0.7.2", + "pumpify": "1.4.0", + "request": "2.83.0", + "stream-events": "1.0.2", + "through2": "2.0.3" + }, + "dependencies": { + "google-auth-library": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-0.10.0.tgz", + "integrity": "sha1-bhW6vuhf0d0U2NEoopW2g41SE24=", + "requires": { + "gtoken": "1.2.3", + "jws": "3.1.4", + "lodash.noop": "3.0.1", + "request": "2.83.0" + } + }, + "google-auto-auth": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.7.2.tgz", + "integrity": "sha512-ux2n2AE2g3+vcLXwL4dP/M12SFMRX5dzCzBfhAEkTeAB7dpyGdOIEj7nmUx0BHKaCcUQrRWg9kT63X/Mmtk1+A==", + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.3.1", + "google-auth-library": "0.10.0", + "request": "2.83.0" + } + } + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "globals": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", + "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "glob": "7.1.2", + "ignore": "3.3.7", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "google-auth-library": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-0.12.0.tgz", + "integrity": "sha512-79qCXtJ1VweBmmLr4yLq9S4clZB2p5Y+iACvuKk9gu4JitEnPc+bQFmYvtCYehVR44MQzD1J8DVmYW2w677IEw==", + "requires": { + "gtoken": "1.2.3", + "jws": "3.1.4", + "lodash.isstring": "4.0.1", + "lodash.merge": "4.6.1", + "request": "2.83.0" + } + }, + "google-auto-auth": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.8.2.tgz", + "integrity": "sha512-W91J1paFbyG45gpDWdTu9tKDxbiTDWYkOAxytNVF4oHVVgTCBV/8+lWdjj/6ldjN3eb+sEd9PKJBjm0kmCxvcw==", + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.3.1", + "google-auth-library": "0.12.0", + "request": "2.83.0" + } + }, + "google-gax": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.14.5.tgz", + "integrity": "sha512-3A6KbrtLDavrqZnnzurnSydRIJnyH+2Sm56fAvXciQ/62aEnSDaR43MCgWhtReCLVjeFjBiCEIdX5zV0LVLVBg==", + "requires": { + "extend": "3.0.1", + "globby": "7.1.1", + "google-auto-auth": "0.9.3", + "google-proto-files": "0.14.2", + "grpc": "1.7.3", + "is-stream-ended": "0.1.3", + "lodash": "4.17.5", + "protobufjs": "6.8.4", + "readable-stream": "2.3.4", + "through2": "2.0.3" + }, + "dependencies": { + "gcp-metadata": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.4.1.tgz", + "integrity": "sha512-yFE7v+NyoMiTOi2L6r8q87eVbiZCKooJNPKXTHhBStga8pwwgWofK9iHl00qd0XevZxcpk7ORaEL/ALuTvlaGQ==", + "requires": { + "extend": "3.0.1", + "retry-request": "3.3.1" + } + }, + "google-auto-auth": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.9.3.tgz", + "integrity": "sha512-TbOZZs0WJOolrRmdQLK5qmWdOJQFG1oPnxcIBbAwL7XCWcv3XgZ9gHJ6W4byrdEZT8TahNFgMfkHd73mqxM9dw==", + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.4.1", + "google-auth-library": "0.12.0", + "request": "2.83.0" + } + }, + "protobufjs": { + "version": "6.8.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.4.tgz", + "integrity": "sha512-d+WZqUDXKM+oZhr8yprAtQW07q08p9/V35AJ2J1fds+r903S/aH9P8uO1gmTwozOKugt2XCjdrre3OxuPRGkGg==", + "requires": { + "@protobufjs/aspromise": "1.1.2", + "@protobufjs/base64": "1.1.2", + "@protobufjs/codegen": "2.0.4", + "@protobufjs/eventemitter": "1.1.0", + "@protobufjs/fetch": "1.1.0", + "@protobufjs/float": "1.0.2", + "@protobufjs/inquire": "1.1.0", + "@protobufjs/path": "1.1.2", + "@protobufjs/pool": "1.1.0", + "@protobufjs/utf8": "1.1.0", + "@types/long": "3.0.32", + "@types/node": "8.9.3", + "long": "3.2.0" + } + } + } + }, + "google-p12-pem": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-0.1.2.tgz", + "integrity": "sha1-M8RqsCGqc0+gMys5YKmj/8svMXc=", + "requires": { + "node-forge": "0.7.1" + } + }, + "google-proto-files": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.14.2.tgz", + "integrity": "sha512-wwm2TIlfTgAjDbjrxAb3akznO7vBM0PRLS6Xf2QfR3L7b0p+szD3iwOW0wMSFl3B0UbLv27hUVk+clePqCVmXA==", + "requires": { + "globby": "7.1.1", + "power-assert": "1.4.4", + "prettier": "1.10.2", + "protobufjs": "6.8.4" + }, + "dependencies": { + "protobufjs": { + "version": "6.8.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.4.tgz", + "integrity": "sha512-d+WZqUDXKM+oZhr8yprAtQW07q08p9/V35AJ2J1fds+r903S/aH9P8uO1gmTwozOKugt2XCjdrre3OxuPRGkGg==", + "requires": { + "@protobufjs/aspromise": "1.1.2", + "@protobufjs/base64": "1.1.2", + "@protobufjs/codegen": "2.0.4", + "@protobufjs/eventemitter": "1.1.0", + "@protobufjs/fetch": "1.1.0", + "@protobufjs/float": "1.0.2", + "@protobufjs/inquire": "1.1.0", + "@protobufjs/path": "1.1.2", + "@protobufjs/pool": "1.1.0", + "@protobufjs/utf8": "1.1.0", + "@types/long": "3.0.32", + "@types/node": "8.9.3", + "long": "3.2.0" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "grpc": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.7.3.tgz", + "integrity": "sha512-7zXQJlDXMr/ZaDqdaIchgclViyoWo8GQxZSmFUAxR8GwSr28b6/BTgF221WG+2W693jpp74XJ/+I9DcPXsgt9Q==", + "requires": { + "arguejs": "0.2.3", + "lodash": "4.17.5", + "nan": "2.8.0", + "node-pre-gyp": "0.6.39", + "protobufjs": "5.0.2" + }, + "dependencies": { + "abbrev": { + "version": "1.0.9", + "bundled": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "co": { + "version": "4.6.0", + "bundled": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "glob": { + "version": "7.1.1", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.4", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "mime-db": { + "version": "1.30.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.17", + "bundled": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.2", + "rc": "1.2.2", + "request": "2.81.0", + "rimraf": "2.6.2", + "semver": "5.4.1", + "tar": "2.2.1", + "tar-pack": "3.4.1" + }, + "dependencies": { + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1.0.9", + "osenv": "0.1.4" + } + } + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qs": { + "version": "6.4.0", + "bundled": true + }, + "rc": { + "version": "1.2.2", + "bundled": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "readable-stream": { + "version": "2.3.3", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "7.1.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "semver": { + "version": "5.4.1", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.1", + "bundled": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.1", + "bundled": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.3.3", + "rimraf": "2.6.2", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.3", + "bundled": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.1.0", + "bundled": true + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + } + } + }, + "gtoken": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-1.2.3.tgz", + "integrity": "sha512-wQAJflfoqSgMWrSBk9Fg86q+sd6s7y6uJhIvvIPz++RElGlMtEqsdAR2oWwZ/WTEtp7P9xFbJRrT976oRgzJ/w==", + "requires": { + "google-p12-pem": "0.1.2", + "jws": "3.1.4", + "mime": "1.6.0", + "request": "2.83.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has-ansi": { + "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" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "hash-stream-validation": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.1.tgz", + "integrity": "sha1-7Mm5l7IYvluzEphii7gHhptz3NE=", + "requires": { + "through2": "2.0.3" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "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==" + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "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.1", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.5", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "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=", + "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" + } + }, + "strip-ansi": { + "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" + } + } + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ipaddr.js": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=" + }, + "is": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", + "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "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" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream-ended": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.3.tgz", + "integrity": "sha1-oEc7Jnx1ZjVIa+7cfjNE5UnRUqw=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isemail": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", + "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "joi": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", + "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", + "requires": { + "hoek": "2.16.3", + "isemail": "1.2.0", + "moment": "2.20.1", + "topo": "1.1.0" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + } + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonwebtoken": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.1.0.tgz", + "integrity": "sha1-xjl80uX9WD1lwAeoPce7eOaYK4M=", + "requires": { + "jws": "3.1.4", + "lodash.includes": "4.3.0", + "lodash.isboolean": "3.0.3", + "lodash.isinteger": "4.0.4", + "lodash.isnumber": "3.0.3", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.once": "4.1.1", + "ms": "2.1.1", + "xtend": "4.0.1" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jwa": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz", + "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=", + "requires": { + "base64url": "2.0.0", + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.9", + "safe-buffer": "5.1.1" + } + }, + "jws": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", + "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", + "requires": { + "base64url": "2.0.0", + "jwa": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + }, + "lodash.noop": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-3.0.1.tgz", + "integrity": "sha1-OBiPTWUKOkdCWEObluxFsyYXEzw=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "log-driver": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.6.tgz", + "integrity": "sha512-iUHz4WAGsXwUmL1UergWrkFD2iTUrGLMsQDRYUWtS9FI+wSyM76vIL+THQt7vrQq5fZDGdrPSCFUfIlqII28tg==", + "requires": { + "codecov.io": "0.0.1" + } + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "requires": { + "pify": "3.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methmeth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/methmeth/-/methmeth-1.1.0.tgz", + "integrity": "sha1-6AomYY5S9cQiKGG7dIUQvRDikIk=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "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==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "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" + } + }, + "modelo": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/modelo/-/modelo-4.2.3.tgz", + "integrity": "sha512-9DITV2YEMcw7XojdfvGl3gDD8J9QjZTJ7ZOUuSAkP+F3T6rDbzMJuPktxptsdHYEvZcmXrCD3LMOhdSAEq6zKA==" + }, + "moment": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", + "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "node-forge": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", + "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "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" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "optjs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "1.0.0" + } + }, + "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=", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "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=" + }, + "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=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "3.0.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "power-assert": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.4.4.tgz", + "integrity": "sha1-kpXqdDcZb1pgH95CDwQmMRhtdRc=", + "requires": { + "define-properties": "1.1.2", + "empower": "1.2.3", + "power-assert-formatter": "1.4.1", + "universal-deep-strict-equal": "1.2.2", + "xtend": "4.0.1" + } + }, + "power-assert-context-formatter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", + "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", + "requires": { + "core-js": "2.5.3", + "power-assert-context-traversal": "1.1.1" + } + }, + "power-assert-context-reducer-ast": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.1.2.tgz", + "integrity": "sha1-SEqZ4m9Jc/+IMuXFzHVnAuYJQXQ=", + "requires": { + "acorn": "4.0.13", + "acorn-es7-plugin": "1.1.7", + "core-js": "2.5.3", + "espurify": "1.7.0", + "estraverse": "4.2.0" + } + }, + "power-assert-context-traversal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", + "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", + "requires": { + "core-js": "2.5.3", + "estraverse": "4.2.0" + } + }, + "power-assert-formatter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", + "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", + "requires": { + "core-js": "2.5.3", + "power-assert-context-formatter": "1.1.1", + "power-assert-context-reducer-ast": "1.1.2", + "power-assert-renderer-assertion": "1.1.1", + "power-assert-renderer-comparison": "1.1.1", + "power-assert-renderer-diagram": "1.1.2", + "power-assert-renderer-file": "1.1.1" + } + }, + "power-assert-renderer-assertion": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz", + "integrity": "sha1-y/wOd+AIao+Wrz8djme57n4ozpg=", + "requires": { + "power-assert-renderer-base": "1.1.1", + "power-assert-util-string-width": "1.1.1" + } + }, + "power-assert-renderer-base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", + "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=" + }, + "power-assert-renderer-comparison": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz", + "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=", + "requires": { + "core-js": "2.5.3", + "diff-match-patch": "1.0.0", + "power-assert-renderer-base": "1.1.1", + "stringifier": "1.3.0", + "type-name": "2.0.2" + } + }, + "power-assert-renderer-diagram": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", + "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", + "requires": { + "core-js": "2.5.3", + "power-assert-renderer-base": "1.1.1", + "power-assert-util-string-width": "1.1.1", + "stringifier": "1.3.0" + } + }, + "power-assert-renderer-file": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.1.1.tgz", + "integrity": "sha1-o34rvReMys0E5427eckv40kzxec=", + "requires": { + "power-assert-renderer-base": "1.1.1" + } + }, + "power-assert-util-string-width": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz", + "integrity": "sha1-vmWet5N/3S5smncmjar2S9W3xZI=", + "requires": { + "eastasianwidth": "0.1.1" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prettier": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.10.2.tgz", + "integrity": "sha512-TcdNoQIWFoHblurqqU6d1ysopjq7UX0oRcT/hJ8qvBAELiYWn+Ugf0AXdnzISEJ7vuhNnQ98N8jR8Sh53x4IZg==" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "protobufjs": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.2.tgz", + "integrity": "sha1-WXSNfc8D0tsiwT2p/rAk4Wq4DJE=", + "requires": { + "ascli": "1.0.1", + "bytebuffer": "5.0.1", + "glob": "7.1.2", + "yargs": "3.32.0" + } + }, + "proxy-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "requires": { + "duplexify": "3.5.3", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "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" + } + }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "requires": { + "through": "2.3.8" + } + }, + "retry-request": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.1.tgz", + "integrity": "sha512-PjAmtWIxjNj4Co/6FRtBl8afRP3CxrrIAnUzb1dzydfROd+6xt7xAebFeskgQgkfFf8NmzrXIoaB3HxmswXyxw==", + "requires": { + "request": "2.83.0", + "through2": "2.0.3" + } + }, + "rimraf": { + "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" + } + }, + "run-async": { + "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" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "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" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=", + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2" + } + }, + "shebang-command": { + "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" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + }, + "dependencies": { + "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=", + "dev": true + } + } + }, + "snakeize": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", + "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=" + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.2.0" + } + }, + "split": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz", + "integrity": "sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc=", + "requires": { + "through": "2.3.8" + } + }, + "split-array-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz", + "integrity": "sha1-0rdajl4Ngk1S/eyLgiWDncLjXfo=", + "requires": { + "async": "2.6.0", + "is-stream-ended": "0.1.3" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "requires": { + "duplexer": "0.1.1" + } + }, + "stream-events": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.2.tgz", + "integrity": "sha1-q/OfZsCJCk63lbyNXoWbJhW1kLI=", + "requires": { + "stubs": "3.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "string-format-obj": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.1.tgz", + "integrity": "sha512-Mm+sROy+pHJmx0P/0Bs1uxIX6UhGJGj6xDGQZ5zh9v/SZRmLGevp+p0VJxV7lirrkAmQ2mvva/gHKpnF/pTb+Q==" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringifier": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", + "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", + "requires": { + "core-js": "2.5.3", + "traverse": "0.6.6", + "type-name": "2.0.2" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "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=", + "dev": true + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.3.1", + "lodash": "4.17.5", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "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=", + "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" + } + }, + "strip-ansi": { + "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" + } + } + } + }, + "tape": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-2.3.0.tgz", + "integrity": "sha1-Df7scJIn+8yRcKvn8EaWKycUMds=", + "requires": { + "deep-equal": "0.1.2", + "defined": "0.0.0", + "inherits": "2.0.3", + "jsonify": "0.0.0", + "resumer": "0.0.0", + "split": "0.2.10", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + }, + "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" + } + }, + "topo": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", + "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", + "requires": { + "hoek": "2.16.3" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + } + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "requires": { + "punycode": "1.4.1" + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "type-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", + "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "universal-deep-strict-equal": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz", + "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=", + "requires": { + "array-filter": "1.0.0", + "indexof": "0.0.1", + "object-keys": "1.0.11" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "urlgrey": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.0.tgz", + "integrity": "sha1-8GU1cED7NcOzEdTl3DZITZbb6gY=", + "requires": { + "tape": "2.3.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "requires": { + "http-parser-js": "0.4.10", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + }, + "which": { + "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" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "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==", + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + } + } +} diff --git a/scripts/docs.angularjs.org-firebase/functions/package.json b/scripts/docs.angularjs.org-firebase/functions/package.json new file mode 100644 index 000000000000..fdfb9cf8b46d --- /dev/null +++ b/scripts/docs.angularjs.org-firebase/functions/package.json @@ -0,0 +1,21 @@ +{ + "name": "functions", + "description": "Cloud Functions for Firebase", + "scripts": { + "lint": "./node_modules/.bin/eslint .", + "serve": "firebase serve --only functions", + "shell": "firebase experimental:functions:shell", + "start": "npm run shell", + "deploy": "firebase deploy --only functions", + "logs": "firebase functions:log" + }, + "dependencies": { + "firebase-admin": "~5.8.1", + "firebase-functions": "^0.8.1" + }, + "devDependencies": { + "eslint": "^4.12.0", + "eslint-plugin-promise": "^3.6.0" + }, + "private": true +} diff --git a/scripts/docs.angularjs.org-firebase/readme.firebase.docs.md b/scripts/docs.angularjs.org-firebase/readme.firebase.docs.md index d73e9a74f5d2..cd6019d77b64 100644 --- a/scripts/docs.angularjs.org-firebase/readme.firebase.docs.md +++ b/scripts/docs.angularjs.org-firebase/readme.firebase.docs.md @@ -1,10 +1,23 @@ Firebase for docs.angularjs.org =============================== +# Continuous integration + The docs are deployed to Google Firebase hosting via Travis deployment config, which expects -firebase.json and .firebaserc in the repository root. +firebase.json in the repository root, which is done by a Grunt task (firebaseDocsJsonForTravis) +that modifies the paths in the firebase.json and copies it into the repository root. + +See travis.yml for the complete deployment config, and scripts/travis/build.sh for the full deployment +build steps. + +# Serving locally: + +- Run `grunt:prepareDeploy`. + This copies docs content files into deploy/docs and the partials for Search Engine AJAX + Crawling into ./functions/content. -See travis.yml for the complete deployment config. +- Run `firebase serve --only functions,hosting` + Creates a server at localhost:5000 that serves from deploy/docs and uses the local function See /scripts/code.angularjs.org-firebase/readme.firebase.code.md for the firebase deployment to code.angularjs.org \ No newline at end of file From fb479188f5312310094ee8f6c7366000181d6130 Mon Sep 17 00:00:00 2001 From: George Kalpakas Date: Mon, 12 Feb 2018 21:55:41 +0200 Subject: [PATCH 490/849] chore(docs.angular.js): do not break when deploying Follow-up to #16451. Closes #16452 --- lib/grunt/utils.js | 4 ++-- scripts/docs.angularjs.org-firebase/firebase.json | 5 ----- scripts/docs.angularjs.org-firebase/functions/package.json | 2 +- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/lib/grunt/utils.js b/lib/grunt/utils.js index 64ddc6f185ec..73e8b1efc790 100644 --- a/lib/grunt/utils.js +++ b/lib/grunt/utils.js @@ -302,8 +302,8 @@ module.exports = { var fileName = docsScriptFolder + '/firebase.json'; var json = grunt.file.readJSON(fileName); - json.hosting.public = 'deploy/docs'; - json.functions.source = docsScriptFolder + '/functions'; + (json.hosting || (json.hosting = {})).public = 'deploy/docs'; + (json.functions || (json.functions = {})).source = docsScriptFolder + '/functions'; grunt.file.write('firebase.json', JSON.stringify(json)); } diff --git a/scripts/docs.angularjs.org-firebase/firebase.json b/scripts/docs.angularjs.org-firebase/firebase.json index 880a5eca86de..bf080d386fd7 100644 --- a/scripts/docs.angularjs.org-firebase/firebase.json +++ b/scripts/docs.angularjs.org-firebase/firebase.json @@ -27,10 +27,5 @@ "function": "sendFile" } ] - }, - "functions": { - "predeploy": [ - "npm --prefix $RESOURCE_DIR run lint" - ] } } diff --git a/scripts/docs.angularjs.org-firebase/functions/package.json b/scripts/docs.angularjs.org-firebase/functions/package.json index fdfb9cf8b46d..381fbc501096 100644 --- a/scripts/docs.angularjs.org-firebase/functions/package.json +++ b/scripts/docs.angularjs.org-firebase/functions/package.json @@ -2,7 +2,7 @@ "name": "functions", "description": "Cloud Functions for Firebase", "scripts": { - "lint": "./node_modules/.bin/eslint .", + "lint": "eslint .", "serve": "firebase serve --only functions", "shell": "firebase experimental:functions:shell", "start": "npm run shell", From ba140dbff9dddcdad239241fbe0240a25b29d188 Mon Sep 17 00:00:00 2001 From: George Kalpakas Date: Tue, 13 Feb 2018 01:25:34 +0200 Subject: [PATCH 491/849] chore(docs.angularjs.org): install firebase dependencies before deploying Firebase is trying to execute our functions code locally in order to parse the triggers. Install npm dependencies to avoid errors like: ``` Error: Error parsing triggers: Cannot find module 'firebase-functions' ``` Closes #16453 --- .../readme.firebase.docs.md | 2 +- scripts/travis/build.sh | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/scripts/docs.angularjs.org-firebase/readme.firebase.docs.md b/scripts/docs.angularjs.org-firebase/readme.firebase.docs.md index cd6019d77b64..10da862469df 100644 --- a/scripts/docs.angularjs.org-firebase/readme.firebase.docs.md +++ b/scripts/docs.angularjs.org-firebase/readme.firebase.docs.md @@ -20,4 +20,4 @@ build steps. Creates a server at localhost:5000 that serves from deploy/docs and uses the local function See /scripts/code.angularjs.org-firebase/readme.firebase.code.md for the firebase deployment to -code.angularjs.org \ No newline at end of file +code.angularjs.org diff --git a/scripts/travis/build.sh b/scripts/travis/build.sh index 980855388492..ed8838cc9574 100755 --- a/scripts/travis/build.sh +++ b/scripts/travis/build.sh @@ -2,6 +2,9 @@ set -e +readonly THIS_DIR=$(cd $(dirname $0); pwd) +readonly ROOT_DIR="$THIS_DIR/../.." + export BROWSER_STACK_ACCESS_KEY export SAUCE_ACCESS_KEY @@ -80,6 +83,14 @@ case "$JOB" in if [[ "$DEPLOY_DOCS" == true || "$DEPLOY_CODE" == true ]]; then grunt prepareDeploy + + if [[ "$DEPLOY_DOCS" == true ]]; then + # Install npm dependencies for Firebase functions. + ( + cd "$ROOT_DIR/scripts/docs.angularjs.org-firebase/functions" + npm install + ) + fi else echo "Skipping deployment build because conditions have not been met." fi @@ -94,4 +105,4 @@ case "$JOB" in or\ 'deploy'." ;; -esac \ No newline at end of file +esac From a126b346ff0f99562231a3721868d23a7c48495e Mon Sep 17 00:00:00 2001 From: George Kalpakas Date: Tue, 13 Feb 2018 01:52:02 +0200 Subject: [PATCH 492/849] chore(travis): fix `ROOT_DIR` path when `build.sh` is sourced --- scripts/travis/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/travis/build.sh b/scripts/travis/build.sh index ed8838cc9574..9338247915a3 100755 --- a/scripts/travis/build.sh +++ b/scripts/travis/build.sh @@ -2,7 +2,7 @@ set -e -readonly THIS_DIR=$(cd $(dirname $0); pwd) +readonly THIS_DIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd) readonly ROOT_DIR="$THIS_DIR/../.." export BROWSER_STACK_ACCESS_KEY From 04ee1e781b931725cded2e40ce9bdc2674186b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Thu, 15 Feb 2018 14:28:47 +0100 Subject: [PATCH 493/849] docs(*): add CODE_OF_CONDUCT.md Closes #16456 --- CODE_OF_CONDUCT.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000000..baa757d028ae --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,3 @@ +# Contributor Code of Conduct + +The AngularJS project follows the Code of Conduct defined in [the angular/code-of-conduct repository](https://github.com/angular/code-of-conduct/blob/master/CODE_OF_CONDUCT.md). Please read it. From 9645a08b61bf4e0b52f3cde9567e4a12524ea488 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Tue, 13 Feb 2018 10:00:12 +0100 Subject: [PATCH 494/849] chore(docs.angularjs.org): allow robots access to js files Related to #16432 --- docs/app/assets/robots.txt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/app/assets/robots.txt b/docs/app/assets/robots.txt index c00cb3c20320..96b3734af696 100644 --- a/docs/app/assets/robots.txt +++ b/docs/app/assets/robots.txt @@ -1,9 +1,14 @@ User-agent: * Disallow: /examples/ -Disallow: /img/ Disallow: /partials/ Disallow: /ptore2e/ -Disallow: /*.js$ # The js files in the root are used by the embedded examples, not by the app itself -Disallow: /*.map$ # The map files in the root are used by the embedded examples, not by the app itself Disallow: /Error404.html + +# The js / map files in the root are used by the embedded examples, not by the app itself +Disallow: /*.js$ +Disallow: /*.map$ + +# (Javascript) crawlers need to access JS files +Allow: /components/*.js +Allow: /js/*.js From 3eabaab009c9b8d86759374a3b66a6b7a71dd5aa Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Thu, 15 Feb 2018 11:54:14 +0100 Subject: [PATCH 495/849] chore(docs.angularjs.org): allow crawling but not indexing of partials/ The sitemap.xml might also prevent the indexing, as the partials are not listed. Related to #16432 Closes #16457 --- docs/app/assets/robots.txt | 1 - scripts/docs.angularjs.org-firebase/firebase.json | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/app/assets/robots.txt b/docs/app/assets/robots.txt index 96b3734af696..36b7daeca859 100644 --- a/docs/app/assets/robots.txt +++ b/docs/app/assets/robots.txt @@ -1,7 +1,6 @@ User-agent: * Disallow: /examples/ -Disallow: /partials/ Disallow: /ptore2e/ Disallow: /Error404.html diff --git a/scripts/docs.angularjs.org-firebase/firebase.json b/scripts/docs.angularjs.org-firebase/firebase.json index bf080d386fd7..9e112f2ff9ee 100644 --- a/scripts/docs.angularjs.org-firebase/firebase.json +++ b/scripts/docs.angularjs.org-firebase/firebase.json @@ -26,6 +26,15 @@ "source": "**/*!(.@(jpg|jpeg|gif|png|html|js|map|json|css|svg|ttf|txt|woff|woff2|eot|xml))", "function": "sendFile" } + ], + "headers": [ + { + "source": "/partials/**", + "headers" : [{ + "key" : "X-Robots-Tag", + "value" : "noindex" + }] + } ] } } From f1c164c92f880b41fed38246baa0c1d4d914dd61 Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Mon, 19 Feb 2018 19:31:43 +0000 Subject: [PATCH 496/849] docs($parse): add missing error documents --- docs/content/error/$parse/esc.ngdoc | 10 ++++++++++ docs/content/error/$parse/lval.ngdoc | 13 +++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 docs/content/error/$parse/esc.ngdoc create mode 100644 docs/content/error/$parse/lval.ngdoc diff --git a/docs/content/error/$parse/esc.ngdoc b/docs/content/error/$parse/esc.ngdoc new file mode 100644 index 000000000000..3f308b2d2fec --- /dev/null +++ b/docs/content/error/$parse/esc.ngdoc @@ -0,0 +1,10 @@ +@ngdoc error +@name $parse:esc +@fullName Value cannot be escaped +@description + +Occurs when the parser tries to escape a value that is not known. + +This should never occur in practice. If it does then that indicates a programming +error in the AngularJS `$parse` service itself and should be reported as an issue +at https://github.com/angular/angular.js/issues. \ No newline at end of file diff --git a/docs/content/error/$parse/lval.ngdoc b/docs/content/error/$parse/lval.ngdoc new file mode 100644 index 000000000000..03d23465a73d --- /dev/null +++ b/docs/content/error/$parse/lval.ngdoc @@ -0,0 +1,13 @@ +@ngdoc error +@name $parse:lval +@fullName Trying to assign a value to a non l-value +@description + +Occurs when an expression is trying to assign a value to a non-assignable expression. + +This can happen if the left side of an assigment is not a valid reference to a variable +or property. E.g. In the following snippet `1+2` is not assignable. + +``` +(1+2) = 'hello'; +``` From 56b6ba8e0b891b88687b826a9c4b2100bfd4901a Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Mon, 19 Feb 2018 19:37:26 +0000 Subject: [PATCH 497/849] docs($route): add missing error document --- docs/content/error/$route/norout.ngdoc | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 docs/content/error/$route/norout.ngdoc diff --git a/docs/content/error/$route/norout.ngdoc b/docs/content/error/$route/norout.ngdoc new file mode 100644 index 000000000000..30a12d151442 --- /dev/null +++ b/docs/content/error/$route/norout.ngdoc @@ -0,0 +1,8 @@ +@ngdoc error +@name $route:norout +@fullName Tried updating route when with no current route +@description + +Occurs when an attempt is made to update the parameters on the current route when +there is no current route. This can happen if you try to call `$route.updateParams();` +before the first route transition has completed. \ No newline at end of file From c617d6dceee5b000bfceda44ced22fc16b48b18b Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Tue, 20 Feb 2018 10:25:33 +0000 Subject: [PATCH 498/849] fix($templateRequest): give tpload error the correct namespace BREAKING CHANGE Previously the `tpload` error was namespaced to `$compile`. If you have code that matches errors of the form `[$compile:tpload]` it will no longer run. You should change the code to match `[$templateRequest:tpload]`. --- docs/content/error/$compile/tpload.ngdoc | 11 ----------- .../error/$templateRequest/tpload.ngdoc | 18 ++++++++++++++++++ src/ng/templateRequest.js | 2 +- 3 files changed, 19 insertions(+), 12 deletions(-) delete mode 100644 docs/content/error/$compile/tpload.ngdoc create mode 100644 docs/content/error/$templateRequest/tpload.ngdoc diff --git a/docs/content/error/$compile/tpload.ngdoc b/docs/content/error/$compile/tpload.ngdoc deleted file mode 100644 index b2b4fb2d0c2c..000000000000 --- a/docs/content/error/$compile/tpload.ngdoc +++ /dev/null @@ -1,11 +0,0 @@ -@ngdoc error -@name $compile:tpload -@fullName Error Loading Template -@description - -This error occurs when {@link ng.$compile `$compile`} attempts to fetch a template from some URL, and the request fails. - -To resolve this error, ensure that the URL of the template is spelled correctly and resolves to correct absolute URL. -The [Chrome Developer Tools](https://developers.google.com/chrome-developer-tools/docs/network#network_panel_overview) might also be helpful in determining why the request failed. - -If you are using {@link ng.$templateCache} to pre-load templates, ensure that the cache was populated with the template. diff --git a/docs/content/error/$templateRequest/tpload.ngdoc b/docs/content/error/$templateRequest/tpload.ngdoc new file mode 100644 index 000000000000..dba0788ce62b --- /dev/null +++ b/docs/content/error/$templateRequest/tpload.ngdoc @@ -0,0 +1,18 @@ +@ngdoc error +@name $templateRequest:tpload +@fullName Error Loading Template +@description + +This error occurs when {@link $templateRequest} attempts to fetch a template from some URL, and +the request fails. + +The template URL might be defined in a directive/component definition, an instance of `ngInclude`, +an instance of `ngMessagesInclude` or a templated route in a `$route` route definition. + +To resolve this error, ensure that the URL of the template is spelled correctly and resolves to +correct absolute URL. +The [Chrome Developer Tools](https://developers.google.com/chrome-developer-tools/docs/network#network_panel_overview) +might also be helpful in determining why the request failed. + +If you are using {@link ng.$templateCache} to pre-load templates, ensure that the cache was +populated with the template. diff --git a/src/ng/templateRequest.js b/src/ng/templateRequest.js index ff699d6cd0ef..7653b92a9126 100644 --- a/src/ng/templateRequest.js +++ b/src/ng/templateRequest.js @@ -1,6 +1,6 @@ 'use strict'; -var $templateRequestMinErr = minErr('$compile'); +var $templateRequestMinErr = minErr('$templateRequest'); /** * @ngdoc provider From b87c6a6d4d3d73fbc4d8aeecca58503d5d958d2c Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Tue, 20 Feb 2018 11:10:03 +0000 Subject: [PATCH 499/849] test(*): fix references to `tpload` minerr in tests --- test/ng/compileSpec.js | 2 +- test/ng/templateRequestSpec.js | 4 ++-- test/ngRoute/routeSpec.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index acda50470485..e65b951ff90f 100644 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -1917,7 +1917,7 @@ describe('$compile', function() { expect(function() { $httpBackend.flush(); - }).toThrowMinErr('$compile', 'tpload', 'Failed to load template: hello.html'); + }).toThrowMinErr('$templateRequest', 'tpload', 'Failed to load template: hello.html'); expect(sortedHtml(element)).toBe('
    '); }) ); diff --git a/test/ng/templateRequestSpec.js b/test/ng/templateRequestSpec.js index 3ca323613103..23f05f1e8d08 100644 --- a/test/ng/templateRequestSpec.js +++ b/test/ng/templateRequestSpec.js @@ -144,9 +144,9 @@ describe('$templateRequest', function() { $templateRequest('tpl.html').catch(function(reason) { err = reason; }); $httpBackend.flush(); - expect(err).toEqualMinErr('$compile', 'tpload', + expect(err).toEqualMinErr('$templateRequest', 'tpload', 'Failed to load template: tpl.html (HTTP status: 404 Not Found)'); - expect($exceptionHandler.errors[0]).toEqualMinErr('$compile', 'tpload', + expect($exceptionHandler.errors[0]).toEqualMinErr('$templateRequest', 'tpload', 'Failed to load template: tpl.html (HTTP status: 404 Not Found)'); }); }); diff --git a/test/ngRoute/routeSpec.js b/test/ngRoute/routeSpec.js index 772bdc7bc226..36832ab57884 100644 --- a/test/ngRoute/routeSpec.js +++ b/test/ngRoute/routeSpec.js @@ -892,7 +892,7 @@ describe('$route', function() { $httpBackend.flush(); expect($exceptionHandler.errors.pop()). - toEqualMinErr('$compile', 'tpload', 'Failed to load template: r1.html'); + toEqualMinErr('$templateRequest', 'tpload', 'Failed to load template: r1.html'); $httpBackend.expectGET('r2.html').respond(''); $location.path('/r2'); From 8b399545a5098cb2576594a26a03cd7268c55fb6 Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Tue, 20 Feb 2018 11:13:38 +0000 Subject: [PATCH 500/849] docs($route): fix typo in error message --- docs/content/error/$route/norout.ngdoc | 2 +- src/ngRoute/route.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/content/error/$route/norout.ngdoc b/docs/content/error/$route/norout.ngdoc index 30a12d151442..5dc5a9b8b7ee 100644 --- a/docs/content/error/$route/norout.ngdoc +++ b/docs/content/error/$route/norout.ngdoc @@ -1,6 +1,6 @@ @ngdoc error @name $route:norout -@fullName Tried updating route when with no current route +@fullName Tried updating route with no current route @description Occurs when an attempt is made to update the parameters on the current route when diff --git a/src/ngRoute/route.js b/src/ngRoute/route.js index 76f915b97da6..f0e6c19b9079 100644 --- a/src/ngRoute/route.js +++ b/src/ngRoute/route.js @@ -605,7 +605,7 @@ function $RouteProvider() { // interpolate modifies newParams, only query params are left $location.search(newParams); } else { - throw $routeMinErr('norout', 'Tried updating route when with no current route'); + throw $routeMinErr('norout', 'Tried updating route with no current route'); } } }; From ea0585773bb93fd891576e2271254a17e15f1ddd Mon Sep 17 00:00:00 2001 From: George Kalpakas Date: Sat, 10 Feb 2018 22:39:28 +0200 Subject: [PATCH 501/849] fix($resource): fix interceptors and success/error callbacks Previously, action-specific interceptors and `success`/`error` callbacks were executed in inconsistent relative orders and in a way that did not meet the general expectation for interceptor behavior (e.g. ability to recover from errors, performing asynchronous operations, etc). This commit fixes the behavior to make it more consistent and expected. The main differences are that `success`/`error` callbacks will now be run _after_ `response`/`responseError` interceptors complete (even if interceptors return a promise) and the correct callback will be called based on the result of the interceptor (e.g. if the `responseError` interceptor recovers from an error, the `success` callback will be called). See also https://github.com/angular/angular.js/issues/9334#issuecomment-364650642. This commit also replaces the use of `success`/`error` callbacks in the docs with using the returned promise. Fixes #6731 Fixes #9334 Closes #6865 Closes #16446 BREAKING CHANGE: If you are not using `success` or `error` callbacks with `$resource`, your app should not be affected by this change. If you are using `success` or `error` callbacks (with or without response interceptors), one (subtle) difference is that throwing an error inside the callbacks will not propagate to the returned `$promise`. Therefore, you should try to use the promises whenever possible. E.g.: ```js // Avoid User.query(function onSuccess(users) { throw new Error(); }). $promise. catch(function onError() { /* Will not be called. */ }); // Prefer User.query(). $promise. then(function onSuccess(users) { throw new Error(); }). catch(function onError() { /* Will be called. */ }); ``` Finally, if you are using `success` or `error` callbacks with response interceptors, the callbacks will now always run _after_ the interceptors (and wait for them to resolve in case they return a promise). Previously, the `error` callback was called before the `responseError` interceptor and the `success` callback was synchronously called after the `response` interceptor. E.g.: ```js var User = $resource('/api/users/:id', {id: '@id'}, { get: { method: 'get', interceptor: { response: function(response) { console.log('responseInterceptor-1'); return $timeout(1000).then(function() { console.log('responseInterceptor-2'); return response.resource; }); }, responseError: function(response) { console.log('responseErrorInterceptor-1'); return $timeout(1000).then(function() { console.log('responseErrorInterceptor-2'); return $q.reject('Ooops!'); }); } } } }); var onSuccess = function(value) { console.log('successCallback', value); }; var onError = function(error) { console.log('errorCallback', error); }; // Assuming the following call is successful... User.get({id: 1}, onSuccess, onError); // Old behavior: // responseInterceptor-1 // successCallback, {/* Promise object */} // responseInterceptor-2 // New behavior: // responseInterceptor-1 // responseInterceptor-2 // successCallback, {/* User object */} // Assuming the following call returns an error... User.get({id: 2}, onSuccess, onError); // Old behavior: // errorCallback, {/* Response object */} // responseErrorInterceptor-1 // responseErrorInterceptor-2 // New behavior: // responseErrorInterceptor-1 // responseErrorInterceptor-2 // errorCallback, Ooops! ``` --- src/ngResource/resource.js | 395 ++++++++++++++++++-------------- test/ngResource/resourceSpec.js | 288 +++++++++++++++++------ 2 files changed, 441 insertions(+), 242 deletions(-) diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js index c8a79274ca2b..11bb45ba20b3 100644 --- a/src/ngResource/resource.js +++ b/src/ngResource/resource.js @@ -110,13 +110,13 @@ function shallowClearAndCopy(src, dst) { * * @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in * `actions` methods. If a parameter value is a function, it will be called every time - * a param value needs to be obtained for a request (unless the param was overridden). The function - * will be passed the current data value as an argument. + * a param value needs to be obtained for a request (unless the param was overridden). The + * function will be passed the current data value as an argument. * * Each key value in the parameter object is first bound to url template if present and then any * excess keys are appended to the url search query after the `?`. * - * Given a template `/path/:verb` and parameter `{verb:'greet', salutation:'Hello'}` results in + * Given a template `/path/:verb` and parameter `{verb: 'greet', salutation: 'Hello'}` results in * URL `/path/greet?salutation=Hello`. * * If the parameter value is prefixed with `@`, then the value for that parameter will be @@ -125,7 +125,7 @@ function shallowClearAndCopy(src, dst) { * For example, if the `defaultParam` object is `{someParam: '@someProp'}` then the value of * `someParam` will be `data.someProp`. * Note that the parameter will be ignored, when calling a "GET" action method (i.e. an action - * method that does not accept a request body) + * method that does not accept a request body). * * @param {Object.=} actions Hash with declaration of custom actions that will be available * in addition to the default set of resource actions (see below). If a custom action has the same @@ -134,9 +134,11 @@ function shallowClearAndCopy(src, dst) { * * The declaration should be created in the format of {@link ng.$http#usage $http.config}: * - * {action1: {method:?, params:?, isArray:?, headers:?, ...}, - * action2: {method:?, params:?, isArray:?, headers:?, ...}, - * ...} + * { + * action1: {method:?, params:?, isArray:?, headers:?, ...}, + * action2: {method:?, params:?, isArray:?, headers:?, ...}, + * ... + * } * * Where: * @@ -148,55 +150,58 @@ function shallowClearAndCopy(src, dst) { * the parameter value is a function, it will be called every time when a param value needs to * be obtained for a request (unless the param was overridden). The function will be passed the * current data value as an argument. - * - **`url`** – {string} – action specific `url` override. The url templating is supported just + * - **`url`** – {string} – Action specific `url` override. The url templating is supported just * like for the resource-level urls. * - **`isArray`** – {boolean=} – If true then the returned object for this action is an array, * see `returns` section. * - **`transformRequest`** – * `{function(data, headersGetter)|Array.}` – - * transform function or an array of such functions. The transform function takes the http + * Transform function or an array of such functions. The transform function takes the http * request body and headers and returns its transformed (typically serialized) version. * By default, transformRequest will contain one function that checks if the request data is * an object and serializes it using `angular.toJson`. To prevent this behavior, set * `transformRequest` to an empty array: `transformRequest: []` * - **`transformResponse`** – * `{function(data, headersGetter, status)|Array.}` – - * transform function or an array of such functions. The transform function takes the http + * Transform function or an array of such functions. The transform function takes the HTTP * response body, headers and status and returns its transformed (typically deserialized) * version. * By default, transformResponse will contain one function that checks if the response looks * like a JSON string and deserializes it using `angular.fromJson`. To prevent this behavior, * set `transformResponse` to an empty array: `transformResponse: []` - * - **`cache`** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the - * GET request, otherwise if a cache instance built with - * {@link ng.$cacheFactory $cacheFactory} is supplied, this cache will be used for - * caching. - * - **`timeout`** – `{number}` – timeout in milliseconds.
    + * - **`cache`** – `{boolean|Cache}` – A boolean value or object created with + * {@link ng.$cacheFactory `$cacheFactory`} to enable or disable caching of the HTTP response. + * See {@link $http#caching $http Caching} for more information. + * - **`timeout`** – `{number}` – Timeout in milliseconds.
    * **Note:** In contrast to {@link ng.$http#usage $http.config}, {@link ng.$q promises} are - * **not** supported in $resource, because the same value would be used for multiple requests. + * **not** supported in `$resource`, because the same value would be used for multiple requests. * If you are looking for a way to cancel requests, you should use the `cancellable` option. - * - **`cancellable`** – `{boolean}` – if set to true, the request made by a "non-instance" call - * will be cancelled (if not already completed) by calling `$cancelRequest()` on the call's - * return value. Calling `$cancelRequest()` for a non-cancellable or an already - * completed/cancelled request will have no effect.
    - * - **`withCredentials`** - `{boolean}` - whether to set the `withCredentials` flag on the + * - **`cancellable`** – `{boolean}` – If true, the request made by a "non-instance" call will be + * cancelled (if not already completed) by calling `$cancelRequest()` on the call's return + * value. Calling `$cancelRequest()` for a non-cancellable or an already completed/cancelled + * request will have no effect. + * - **`withCredentials`** – `{boolean}` – Whether to set the `withCredentials` flag on the * XHR object. See - * [requests with credentials](https://developer.mozilla.org/en/http_access_control#section_5) + * [XMLHttpRequest.withCredentials](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials) * for more information. - * - **`responseType`** - `{string}` - see - * [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType). - * - **`interceptor`** - `{Object=}` - The interceptor object has four optional methods - + * - **`responseType`** – `{string}` – See + * [XMLHttpRequest.responseType](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType). + * - **`interceptor`** – `{Object=}` – The interceptor object has four optional methods - * `request`, `requestError`, `response`, and `responseError`. See - * {@link ng.$http $http interceptors} for details. Note that `request`/`requestError` - * interceptors are applied before calling `$http`, thus before any global `$http` interceptors. - * The resource instance or array object is accessible by the `resource` property of the - * `http response` object passed to response interceptors. + * {@link ng.$http#interceptors $http interceptors} for details. Note that + * `request`/`requestError` interceptors are applied before calling `$http`, thus before any + * global `$http` interceptors. Also, rejecting or throwing an error inside the `request` + * interceptor will result in calling the `responseError` interceptor. + * The resource instance or collection is available on the `resource` property of the + * `http response` object passed to `response`/`responseError` interceptors. * Keep in mind that the associated promise will be resolved with the value returned by the - * response interceptor, if one is specified. The default response interceptor returns - * `response.resource` (i.e. the resource instance or array). - * - **`hasBody`** - `{boolean}` - allows to specify if a request body should be included or not. - * If not specified only POST, PUT and PATCH requests will have a body. - * + * response interceptors. Make sure you return an appropriate value and not the `response` + * object passed as input. For reference, the default `response` interceptor (which gets applied + * if you don't specify a custom one) returns `response.resource`.
    + * See {@link ngResource.$resource#using-interceptors below} for an example of using + * interceptors in `$resource`. + * - **`hasBody`** – `{boolean}` – If true, then the request will have a body. + * If not specified, then only POST, PUT and PATCH requests will have a body. * * @param {Object} options Hash with custom settings that should extend the * default `$resourceProvider` behavior. The supported options are: * @@ -209,27 +214,29 @@ function shallowClearAndCopy(src, dst) { * @returns {Object} A resource "class" object with methods for the default set of resource actions * optionally extended with custom `actions`. The default set contains these actions: * ```js - * { 'get': {method:'GET'}, - * 'save': {method:'POST'}, - * 'query': {method:'GET', isArray:true}, - * 'remove': {method:'DELETE'}, - * 'delete': {method:'DELETE'} }; + * { + * 'get': {method: 'GET'}, + * 'save': {method: 'POST'}, + * 'query': {method: 'GET', isArray: true}, + * 'remove': {method: 'DELETE'}, + * 'delete': {method: 'DELETE'} + * } * ``` * - * Calling these methods invoke an {@link ng.$http} with the specified http method, - * destination and parameters. When the data is returned from the server then the object is an - * instance of the resource class. The actions `save`, `remove` and `delete` are available on it - * as methods with the `$` prefix. This allows you to easily perform CRUD operations (create, - * read, update, delete) on server-side data like this: + * Calling these methods invoke {@link ng.$http} with the specified http method, destination and + * parameters. When the data is returned from the server then the object is an instance of the + * resource class. The actions `save`, `remove` and `delete` are available on it as methods with + * the `$` prefix. This allows you to easily perform CRUD operations (create, read, update, + * delete) on server-side data like this: * ```js - * var User = $resource('/user/:userId', {userId:'@id'}); - * var user = User.get({userId:123}, function() { + * var User = $resource('/user/:userId', {userId: '@id'}); + * User.get({userId: 123}).$promise.then(function(user) { * user.abc = true; * user.$save(); * }); * ``` * - * It is important to realize that invoking a $resource object method immediately returns an + * It is important to realize that invoking a `$resource` object method immediately returns an * empty reference (object or array depending on `isArray`). Once the data is returned from the * server the existing reference is populated with the actual data. This is a useful trick since * usually the resource is assigned to a model which is then rendered by the view. Having an empty @@ -252,30 +259,31 @@ function shallowClearAndCopy(src, dst) { * * * Success callback is called with (value (Object|Array), responseHeaders (Function), - * status (number), statusText (string)) arguments, where the value is the populated resource + * status (number), statusText (string)) arguments, where `value` is the populated resource * instance or collection object. The error callback is called with (httpResponse) argument. * - * Class actions return empty instance (with additional properties below). - * Instance actions return promise of the action. + * Class actions return an empty instance (with the additional properties listed below). + * Instance actions return a promise for the operation. * * The Resource instances and collections have these additional properties: * - * - `$promise`: the {@link ng.$q promise} of the original server interaction that created this + * - `$promise`: The {@link ng.$q promise} of the original server interaction that created this * instance or collection. * * On success, the promise is resolved with the same resource instance or collection object, - * updated with data from server. This makes it easy to use in - * {@link ngRoute.$routeProvider resolve section of $routeProvider.when()} to defer view + * updated with data from server. This makes it easy to use in the + * {@link ngRoute.$routeProvider `resolve` section of `$routeProvider.when()`} to defer view * rendering until the resource(s) are loaded. * * On failure, the promise is rejected with the {@link ng.$http http response} object. * * If an interceptor object was provided, the promise will instead be resolved with the value - * returned by the interceptor. + * returned by the response interceptor (on success) or responceError interceptor (on failure). * * - `$resolved`: `true` after first server interaction is completed (either with success or * rejection), `false` before that. Knowing if the Resource has been resolved is useful in - * data-binding. + * data-binding. If there is a response/responseError interceptor and it returns a promise, + * `$resolved` will wait for that too. * * The Resource instances and collections have these additional methods: * @@ -292,121 +300,128 @@ function shallowClearAndCopy(src, dst) { * * @example * - * ### Credit card resource + * ### Basic usage * - * ```js - // Define CreditCard class - var CreditCard = $resource('/user/:userId/card/:cardId', - {userId:123, cardId:'@id'}, { - charge: {method:'POST', params:{charge:true}} - }); + ```js + // Define a CreditCard class + var CreditCard = $resource('/users/:userId/cards/:cardId', + {userId: 123, cardId: '@id'}, { + charge: {method: 'POST', params: {charge: true}} + }); // We can retrieve a collection from the server - var cards = CreditCard.query(function() { - // GET: /user/123/card - // server returns: [ {id:456, number:'1234', name:'Smith'} ]; + var cards = CreditCard.query(); + // GET: /users/123/cards + // server returns: [{id: 456, number: '1234', name: 'Smith'}] + // Wait for the request to complete + cards.$promise.then(function() { var card = cards[0]; - // each item is an instance of CreditCard + + // Each item is an instance of CreditCard expect(card instanceof CreditCard).toEqual(true); - card.name = "J. Smith"; - // non GET methods are mapped onto the instances + + // Non-GET methods are mapped onto the instances + card.name = 'J. Smith'; card.$save(); - // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'} - // server returns: {id:456, number:'1234', name: 'J. Smith'}; + // POST: /users/123/cards/456 {id: 456, number: '1234', name: 'J. Smith'} + // server returns: {id: 456, number: '1234', name: 'J. Smith'} - // our custom method is mapped as well. - card.$charge({amount:9.99}); - // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'} + // Our custom method is mapped as well (since it uses POST) + card.$charge({amount: 9.99}); + // POST: /users/123/cards/456?amount=9.99&charge=true {id: 456, number: '1234', name: 'J. Smith'} }); - // we can create an instance as well - var newCard = new CreditCard({number:'0123'}); - newCard.name = "Mike Smith"; - newCard.$save(); - // POST: /user/123/card {number:'0123', name:'Mike Smith'} - // server returns: {id:789, number:'0123', name: 'Mike Smith'}; - expect(newCard.id).toEqual(789); - * ``` + // We can create an instance as well + var newCard = new CreditCard({number: '0123'}); + newCard.name = 'Mike Smith'; + + var savePromise = newCard.$save(); + // POST: /users/123/cards {number: '0123', name: 'Mike Smith'} + // server returns: {id: 789, number: '0123', name: 'Mike Smith'} + + savePromise.then(function() { + // Once the promise is resolved, the created instance + // is populated with the data returned by the server + expect(newCard.id).toEqual(789); + }); + ``` * - * The object returned from this function execution is a resource "class" which has "static" method - * for each action in the definition. + * The object returned from a call to `$resource` is a resource "class" which has one "static" + * method for each action in the definition. * - * Calling these methods invoke `$http` on the `url` template with the given `method`, `params` and - * `headers`. + * Calling these methods invokes `$http` on the `url` template with the given HTTP `method`, + * `params` and `headers`. * * @example * - * ### User resource + * ### Accessing the response * * When the data is returned from the server then the object is an instance of the resource type and * all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD * operations (create, read, update, delete) on server-side data. - + * ```js - var User = $resource('/user/:userId', {userId:'@id'}); - User.get({userId:123}, function(user) { + var User = $resource('/users/:userId', {userId: '@id'}); + User.get({userId: 123}).$promise.then(function(user) { user.abc = true; user.$save(); }); ``` * - * It's worth noting that the success callback for `get`, `query` and other methods gets passed - * in the response that came from the server as well as $http header getter function, so one - * could rewrite the above example and get access to http headers as: + * It's worth noting that the success callback for `get`, `query` and other methods gets called with + * the resource instance (populated with the data that came from the server) as well as an `$http` + * header getter function, the HTTP status code and the response status text. So one could rewrite + * the above example and get access to HTTP headers as follows: * ```js - var User = $resource('/user/:userId', {userId:'@id'}); - User.get({userId:123}, function(user, getResponseHeaders){ + var User = $resource('/users/:userId', {userId: '@id'}); + User.get({userId: 123}, function(user, getResponseHeaders) { user.abc = true; user.$save(function(user, putResponseHeaders) { - //user => saved user object - //putResponseHeaders => $http header getter + // `user` => saved `User` object + // `putResponseHeaders` => `$http` header getter }); }); ``` * - * You can also access the raw `$http` promise via the `$promise` property on the object returned - * - ``` - var User = $resource('/user/:userId', {userId:'@id'}); - User.get({userId:123}) - .$promise.then(function(user) { - $scope.user = user; - }); - ``` - * * @example * - * ### Creating a custom 'PUT' request + * ### Creating custom actions * - * In this example we create a custom method on our resource to make a PUT request - * ```js - * var app = angular.module('app', ['ngResource', 'ngRoute']); - * - * // Some APIs expect a PUT request in the format URL/object/ID - * // Here we are creating an 'update' method - * app.factory('Notes', ['$resource', function($resource) { - * return $resource('/notes/:id', null, - * { - * 'update': { method:'PUT' } - * }); - * }]); - * - * // In our controller we get the ID from the URL using ngRoute and $routeParams - * // We pass in $routeParams and our Notes factory along with $scope - * app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes', - function($scope, $routeParams, Notes) { - * // First get a note object from the factory - * var note = Notes.get({ id:$routeParams.id }); - * $id = note.id; - * - * // Now call update passing in the ID first then the object you are updating - * Notes.update({ id:$id }, note); - * - * // This will PUT /notes/ID with the note object in the request payload - * }]); - * ``` + * In this example we create a custom method on our resource to make a PUT request: + * + ```js + var app = angular.module('app', ['ngResource']); + + // Some APIs expect a PUT request in the format URL/object/ID + // Here we are creating an 'update' method + app.factory('Notes', ['$resource', function($resource) { + return $resource('/notes/:id', {id: '@id'}, { + update: {method: 'PUT'} + }); + }]); + + // In our controller we get the ID from the URL using `$location` + app.controller('NotesCtrl', ['$location', 'Notes', function($location, Notes) { + // First, retrieve the corresponding `Note` object from the server + // (Assuming a URL of the form `.../notes?id=XYZ`) + var noteId = $location.search().id; + var note = Notes.get({id: noteId}); + + note.$promise.then(function() { + note.content = 'Hello, world!'; + + // Now call `update` to save the changes on the server + Notes.update(note); + // This will PUT /notes/ID with the note object as the request payload + + // Since `update` is a non-GET method, it will also be available on the instance + // (prefixed with `$`), so we could replace the `Note.update()` call with: + //note.$update(); + }); + }]); + ``` * * @example * @@ -417,7 +432,7 @@ function shallowClearAndCopy(src, dst) { * ```js // ...defining the `Hotel` resource... - var Hotel = $resource('/api/hotel/:id', {id: '@id'}, { + var Hotel = $resource('/api/hotels/:id', {id: '@id'}, { // Let's make the `query()` method cancellable query: {method: 'get', isArray: true, cancellable: true} }); @@ -427,14 +442,54 @@ function shallowClearAndCopy(src, dst) { this.onDestinationChanged = function onDestinationChanged(destination) { // We don't care about any pending request for hotels // in a different destination any more - this.availableHotels.$cancelRequest(); + if (this.availableHotels) { + this.availableHotels.$cancelRequest(); + } - // Let's query for hotels in '' - // (calls: /api/hotel?location=) + // Let's query for hotels in `destination` + // (calls: /api/hotels?location=) this.availableHotels = Hotel.query({location: destination}); }; ``` * + * @example + * + * ### Using interceptors + * + * You can use interceptors to transform the request or response, perform additional operations, and + * modify the returned instance/collection. The following example, uses `request` and `response` + * interceptors to augment the returned instance with additional info: + * + ```js + var Thing = $resource('/api/things/:id', {id: '@id'}, { + save: { + method: 'POST', + interceptor: { + request: function(config) { + // Before the request is sent out, store a timestamp on the request config + config.requestTimestamp = Date.now(); + return config; + }, + response: function(response) { + // Get the instance from the response object + var instance = response.resource; + + // Augment the instance with a custom `saveLatency` property, computed as the time + // between sending the request and receiving the response. + instance.saveLatency = Date.now() - response.config.requestTimestamp; + + // Return the instance + return instance; + } + } + } + }); + + Thing.save({foo: 'bar'}).$promise.then(function(thing) { + console.log('That thing was saved in ' + thing.saveLatency + 'ms.'); + }); + ``` + * */ angular.module('ngResource', ['ng']). info({ angularVersion: '"NG_VERSION_FULL"' }). @@ -667,34 +722,34 @@ angular.module('ngResource', ['ng']). } Resource[name] = function(a1, a2, a3, a4) { - var params = {}, data, success, error; + var params = {}, data, onSuccess, onError; switch (arguments.length) { case 4: - error = a4; - success = a3; + onError = a4; + onSuccess = a3; // falls through case 3: case 2: if (isFunction(a2)) { if (isFunction(a1)) { - success = a1; - error = a2; + onSuccess = a1; + onError = a2; break; } - success = a2; - error = a3; + onSuccess = a2; + onError = a3; // falls through } else { params = a1; data = a2; - success = a3; + onSuccess = a3; break; } // falls through case 1: - if (isFunction(a1)) success = a1; + if (isFunction(a1)) onSuccess = a1; else if (hasBody) data = a1; else params = a1; break; @@ -714,11 +769,14 @@ angular.module('ngResource', ['ng']). var responseInterceptor = action.interceptor && action.interceptor.response || defaultResponseInterceptor; var responseErrorInterceptor = action.interceptor && action.interceptor.responseError || - undefined; - var hasError = !!error; - var hasResponseErrorInterceptor = !!responseErrorInterceptor; + $q.reject; + var successCallback = onSuccess ? function(val) { + onSuccess(val, response.headers, response.status, response.statusText); + } : undefined; + var errorCallback = onError || undefined; var timeoutDeferred; var numericTimeoutPromise; + var response; forEach(action, function(value, key) { switch (key) { @@ -754,8 +812,8 @@ angular.module('ngResource', ['ng']). catch(requestErrorInterceptor). then($http); - promise = promise.then(function(response) { - var data = response.data; + promise = promise.then(function(resp) { + var data = resp.data; if (data) { // Need to convert action.isArray to boolean in case it is undefined @@ -783,12 +841,14 @@ angular.module('ngResource', ['ng']). value.$promise = promise; // Restore the promise } } - response.resource = value; - return response; - }, function(response) { - response.resource = value; - return $q.reject(response); + resp.resource = value; + response = resp; + return responseInterceptor(resp); + }, function(rejectionOrResponse) { + rejectionOrResponse.resource = value; + response = rejectionOrResponse; + return responseErrorInterceptor(rejectionOrResponse); }); promise = promise['finally'](function() { @@ -800,25 +860,8 @@ angular.module('ngResource', ['ng']). } }); - promise = promise.then( - function(response) { - var value = responseInterceptor(response); - (success || noop)(value, response.headers, response.status, response.statusText); - return value; - }, - (hasError || hasResponseErrorInterceptor) ? - function(response) { - if (hasError && !hasResponseErrorInterceptor) { - // Avoid `Possibly Unhandled Rejection` error, - // but still fulfill the returned promise with a rejection - promise.catch(noop); - } - if (hasError) error(response); - return hasResponseErrorInterceptor ? - responseErrorInterceptor(response) : - $q.reject(response); - } : - undefined); + // Run the `success`/`error` callbacks, but do not let them affect the returned promise. + promise.then(successCallback, errorCallback); if (!isInstanceCall) { // we are creating instance / collection diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js index 00fce4b662a8..077281a134ba 100644 --- a/test/ngResource/resourceSpec.js +++ b/test/ngResource/resourceSpec.js @@ -34,11 +34,11 @@ describe('basic usage', function() { callback = jasmine.createSpy('callback'); })); - afterEach(function() { $httpBackend.verifyNoOutstandingExpectation(); }); + describe('isValidDottedPath', function() { /* global isValidDottedPath: false */ it('should support arbitrary dotted names', function() { @@ -1312,102 +1312,225 @@ describe('basic usage', function() { }); }); - it('should allow per action response interceptor that gets full response', function() { - CreditCard = $resource('/CreditCard', {}, { - query: { - method: 'get', - isArray: true, - interceptor: { - response: function(response) { - return response; - } + + describe('responseInterceptor', function() { + it('should allow per action response interceptor that gets full response', function() { + var response; + + $httpBackend.expect('GET', '/CreditCard').respond(201, {id: 1}, {foo: 'bar'}, 'Ack'); + CreditCard = $resource('/CreditCard', {}, { + get: { + method: 'get', + interceptor: {response: function(resp) { response = resp; }} } - } + }); + + var cc = CreditCard.get(); + $httpBackend.flush(); + + expect(response.resource).toBe(cc); + expect(response.config).toBeDefined(); + expect(response.status).toBe(201); + expect(response.statusText).toBe('Ack'); + expect(response.headers()).toEqual({foo: 'bar'}); }); - $httpBackend.expect('GET', '/CreditCard').respond([{id: 1}]); - var ccs = CreditCard.query(); + it('should allow per action responseError interceptor that gets full response', function() { + var response; - ccs.$promise.then(callback); + $httpBackend.expect('GET', '/CreditCard').respond(404, {ignored: 'stuff'}, {foo: 'bar'}, 'Ack'); + CreditCard = $resource('/CreditCard', {}, { + get: { + method: 'get', + interceptor: {responseError: function(resp) { response = resp; }} + } + }); - $httpBackend.flush(); - expect(callback).toHaveBeenCalledOnce(); + var cc = CreditCard.get(); + $httpBackend.flush(); - var response = callback.calls.mostRecent().args[0]; - expect(response.resource).toBe(ccs); - expect(response.status).toBe(200); - expect(response.config).toBeDefined(); - }); + expect(response.resource).toBe(cc); + expect(response.config).toBeDefined(); + expect(response.status).toBe(404); + expect(response.statusText).toBe('Ack'); + expect(response.headers()).toEqual({foo: 'bar'}); + }); - it('should allow per action responseError interceptor that gets full response', function() { - CreditCard = $resource('/CreditCard', {}, { - query: { - method: 'get', - isArray: true, - interceptor: { - responseError: function(response) { - return response; + it('should fulfill the promise with the value returned by the response interceptor', + function() { + $httpBackend.whenGET('/CreditCard').respond(200); + CreditCard = $resource('/CreditCard', {}, { + test1: { + method: 'get', + interceptor: {response: function() { return 'foo'; }} + }, + test2: { + method: 'get', + interceptor: {response: function() { return $q.resolve('bar'); }} + }, + test3: { + method: 'get', + interceptor: {response: function() { return $q.reject('baz'); }} } - } + }); + + CreditCard.test1().$promise.then(callback); + $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('foo'); + + callback.calls.reset(); + + CreditCard.test2().$promise.then(callback); + $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('bar'); + + callback.calls.reset(); + + CreditCard.test3().$promise.then(null, callback); + $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('baz'); } - }); + ); - $httpBackend.expect('GET', '/CreditCard').respond(404); - var ccs = CreditCard.query(); + it('should fulfill the promise with the value returned by the responseError interceptor', + function() { + $httpBackend.whenGET('/CreditCard').respond(404); + CreditCard = $resource('/CreditCard', {}, { + test1: { + method: 'get', + interceptor: {responseError: function() { return 'foo'; }} + }, + test2: { + method: 'get', + interceptor: {responseError: function() { return $q.resolve('bar'); }} + }, + test3: { + method: 'get', + interceptor: {responseError: function() { return $q.reject('baz'); }} + } + }); - ccs.$promise.then(callback); + CreditCard.test1().$promise.then(callback); + $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('foo'); - $httpBackend.flush(); - expect(callback).toHaveBeenCalledOnce(); + callback.calls.reset(); - var response = callback.calls.mostRecent().args[0]; - expect(response.resource).toBe(ccs); - expect(response.status).toBe(404); - expect(response.config).toBeDefined(); - }); + CreditCard.test2().$promise.then(callback); + $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('bar'); + callback.calls.reset(); + + CreditCard.test3().$promise.then(null, callback); + $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('baz'); + } + ); - it('should fulfill the promise with the value returned by the responseError interceptor', - inject(function($q) { + + it('should call the success callback when response interceptor succeeds', function() { + $httpBackend.whenGET('/CreditCard').respond(200); CreditCard = $resource('/CreditCard', {}, { test1: { - method: 'GET', - interceptor: {responseError: function() { return 'foo'; }} + method: 'get', + interceptor: {response: function() { return 'foo'; }} }, test2: { - method: 'GET', - interceptor: {responseError: function() { return $q.resolve('bar'); }} - }, - test3: { - method: 'GET', - interceptor: {responseError: function() { return $q.reject('baz'); }} + method: 'get', + interceptor: {response: function() { return $q.resolve('bar'); }} } }); - $httpBackend.whenGET('/CreditCard').respond(404); + CreditCard.test1(callback); + $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('foo', jasmine.any(Function), 200, ''); callback.calls.reset(); - CreditCard.test1().$promise.then(callback); + + CreditCard.test2(callback); $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('bar', jasmine.any(Function), 200, ''); + }); + + + it('should call the error callback when response interceptor fails', function() { + $httpBackend.whenGET('/CreditCard').respond(200); + CreditCard = $resource('/CreditCard', {}, { + test1: { + method: 'get', + interceptor: {response: function() { throw 'foo'; }} + }, + test2: { + method: 'get', + interceptor: {response: function() { return $q.reject('bar'); }} + } + }); + CreditCard.test1(noop, callback); + $httpBackend.flush(); expect(callback).toHaveBeenCalledOnceWith('foo'); callback.calls.reset(); - CreditCard.test2().$promise.then(callback); - $httpBackend.flush(); + CreditCard.test2(noop, callback); + $httpBackend.flush(); expect(callback).toHaveBeenCalledOnceWith('bar'); + }); + + + it('should call the success callback when responseError interceptor succeeds', function() { + $httpBackend.whenGET('/CreditCard').respond(404); + CreditCard = $resource('/CreditCard', {}, { + test1: { + method: 'get', + interceptor: {responseError: function() { return 'foo'; }} + }, + test2: { + method: 'get', + interceptor: {responseError: function() { return $q.resolve('bar'); }} + } + }); + + CreditCard.test1(callback); + $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('foo', jasmine.any(Function), 404, ''); callback.calls.reset(); - CreditCard.test3().$promise.then(null, callback); + + CreditCard.test2(callback); $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('bar', jasmine.any(Function), 404, ''); + }); + - expect(callback).toHaveBeenCalledOnceWith('baz'); - }) - ); + it('should call the error callback when responseError interceptor fails', function() { + $httpBackend.whenGET('/CreditCard').respond(404); + CreditCard = $resource('/CreditCard', {}, { + test1: { + method: 'get', + interceptor: {responseError: function() { throw 'foo'; }} + }, + test2: { + method: 'get', + interceptor: {responseError: function() { return $q.reject('bar'); }} + } + }); + + CreditCard.test1(noop, callback); + $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('foo'); + + callback.calls.reset(); + + CreditCard.test2(noop, callback); + $httpBackend.flush(); + expect(callback).toHaveBeenCalledOnceWith('bar'); + }); + }); }); @@ -1810,7 +1933,7 @@ describe('extra params', function() { }); describe('errors', function() { - var $httpBackend, $resource, $q, $rootScope; + var $httpBackend, $resource; beforeEach(module(function($exceptionHandlerProvider) { $exceptionHandlerProvider.mode('log'); @@ -1821,8 +1944,6 @@ describe('errors', function() { beforeEach(inject(function($injector) { $httpBackend = $injector.get('$httpBackend'); $resource = $injector.get('$resource'); - $q = $injector.get('$q'); - $rootScope = $injector.get('$rootScope'); })); @@ -1961,7 +2082,7 @@ describe('handling rejections', function() { function() { $httpBackend.expectGET('/CreditCard/123').respond(null); var CreditCard = $resource('/CreditCard/:id'); - var cc = CreditCard.get({id: 123}, + CreditCard.get({id: 123}, function(res) { throw new Error('should be caught'); }, function() {}); @@ -1976,7 +2097,7 @@ describe('handling rejections', function() { function() { $httpBackend.expectGET('/CreditCard/123').respond(null); var CreditCard = $resource('/CreditCard/:id'); - var cc = CreditCard.get({id: 123}, + CreditCard.get({id: 123}, function(res) { throw new Error('should be caught'); }); $httpBackend.flush(); @@ -1996,7 +2117,7 @@ describe('handling rejections', function() { } }); - var cc = CreditCard.get({id: 123}, + CreditCard.get({id: 123}, function(res) { throw new Error('should be caught'); }, function() {}); @@ -2017,7 +2138,7 @@ describe('handling rejections', function() { } }); - var cc = CreditCard.get({id: 123}, + CreditCard.get({id: 123}, function(res) { throw new Error('should be caught'); }); $httpBackend.flush(); @@ -2026,6 +2147,41 @@ describe('handling rejections', function() { } ); + + it('should not propagate exceptions in success callback to the returned promise', function() { + var successCallbackSpy = jasmine.createSpy('successCallback').and.throwError('error'); + var promiseResolveSpy = jasmine.createSpy('promiseResolve'); + var promiseRejectSpy = jasmine.createSpy('promiseReject'); + + $httpBackend.expectGET('/CreditCard/123').respond(null); + var CreditCard = $resource('/CreditCard/:id'); + CreditCard.get({id: 123}, successCallbackSpy). + $promise.then(promiseResolveSpy, promiseRejectSpy); + + $httpBackend.flush(); + expect(successCallbackSpy).toHaveBeenCalled(); + expect(promiseResolveSpy).toHaveBeenCalledWith(jasmine.any(CreditCard)); + expect(promiseRejectSpy).not.toHaveBeenCalled(); + }); + + + it('should not be able to recover from inside the error callback', function() { + var errorCallbackSpy = jasmine.createSpy('errorCallback').and.returnValue({id: 123}); + var promiseResolveSpy = jasmine.createSpy('promiseResolve'); + var promiseRejectSpy = jasmine.createSpy('promiseReject'); + + $httpBackend.expectGET('/CreditCard/123').respond(404); + var CreditCard = $resource('/CreditCard/:id'); + CreditCard.get({id: 123}, noop, errorCallbackSpy). + $promise.then(promiseResolveSpy, promiseRejectSpy); + + $httpBackend.flush(); + expect(errorCallbackSpy).toHaveBeenCalled(); + expect(promiseResolveSpy).not.toHaveBeenCalled(); + expect(promiseRejectSpy).toHaveBeenCalledWith(jasmine.objectContaining({status: 404})); + }); + + describe('requestInterceptor', function() { var rejectReason = {'lol':'cat'}; var $q, $rootScope; From 33b251d55e48da867cb2998e6d87ef33c3fec416 Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Wed, 21 Feb 2018 08:33:28 +0000 Subject: [PATCH 502/849] docs(misc): add version-support-status page (#16460) Closes #16058 Closes #16458 --- README.md | 9 +++- docs/app/assets/css/docs.css | 8 +++ docs/content/api/index.ngdoc | 10 +++- .../content/misc/version-support-status.ngdoc | 54 +++++++++++++++++++ 4 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 docs/content/misc/version-support-status.ngdoc diff --git a/README.md b/README.md index ae444e3ccdb8..c2d1a9db2981 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,14 @@ It also helps with server-side communication, taming async callbacks with promis and it makes client-side navigation and deep linking with hashbang urls or HTML5 pushState a piece of cake. Best of all? It makes development fun! +-------------------- + +##### AngularJS will be moving to Long Term Support (LTS) mode on July 1st 2018: [Find out more](misc/version-support-status) + +##### Looking for the new Angular? Go here: https://github.com/angular/angular + +-------------------- + * Web site: https://angularjs.org * Tutorial: https://docs.angularjs.org/tutorial * API Docs: https://docs.angularjs.org/api @@ -20,7 +28,6 @@ piece of cake. Best of all? It makes development fun! * Core Development: [DEVELOPERS.md](DEVELOPERS.md) * Dashboard: https://dashboard.angularjs.org -##### Looking for the new Angular? Go here: https://github.com/angular/angular Documentation -------------------- diff --git a/docs/app/assets/css/docs.css b/docs/app/assets/css/docs.css index 54d81ada753d..65abc5247f0c 100644 --- a/docs/app/assets/css/docs.css +++ b/docs/app/assets/css/docs.css @@ -934,6 +934,14 @@ toc-container > div > toc-tree > ul > li > toc-tree > ul > li toc-tree > ul li { font-size: 13px; } +.dev-status span { + padding: 2px 8px; + border-radius: 5px; +} +.security span { background-color: orange; } +.stable span { background-color: green; color: white; } +.current span { background-color: blue; color: white; } + @media handheld and (max-width:800px), screen and (max-device-width:800px), screen and (max-width:800px) { .navbar { min-height: auto; diff --git a/docs/content/api/index.ngdoc b/docs/content/api/index.ngdoc index 8b954a86bd05..d34ddfb64c1d 100644 --- a/docs/content/api/index.ngdoc +++ b/docs/content/api/index.ngdoc @@ -3,7 +3,15 @@ @description # AngularJS API Docs -Welcome to the AngularJS API docs page. These pages contain the AngularJS reference materials for version . + +
    +**AngularJS will be moving to Long Term Support (LTS) mode on July 1st 2018.**: [Find out more](misc/version-support-status). +
    + +## Welcome to the AngularJS API docs page. + +These pages contain the AngularJS reference materials for version . + The documentation is organized into **{@link guide/module modules}** which contain various components of an AngularJS application. These components are {@link guide/directive directives}, {@link guide/services services}, {@link guide/filter filters}, {@link guide/providers providers}, {@link guide/templates templates}, global APIs, and testing mocks. diff --git a/docs/content/misc/version-support-status.ngdoc b/docs/content/misc/version-support-status.ngdoc new file mode 100644 index 000000000000..aff4309393dd --- /dev/null +++ b/docs/content/misc/version-support-status.ngdoc @@ -0,0 +1,54 @@ +@ngdoc overview +@name Version Support Status +@description + +# Version Support Status + +This page describes the support status of the significant versions of AngularJS. + +
    + AngularJS is planning one more significant release, version 1.7, and on July 1, 2018 it will enter a 3 year Long Term Support period. +
    + +### Until July 1st 2018 + +Any version branch not shown in the following table (e.g. 1.5.x) is no longer being developed. + + + + + + + + + + +
    VersionStatusComments
    1.2.xSecurity patches onlyLast version to provide IE 8 support
    1.6.xPatch ReleasesMinor features, bug fixes, security patches - no breaking changes
    1.7.xActive Development1.7.0 (not yet released) will be the last release of AngularJS to contain breaking changes
    + +### After July 1st 2018 + +Any version branch not shown in the following table (e.g. 1.6.x) is no longer being developed. + + + + + + + + + +
    VersionStatusComments
    1.2.xLong Term SupportLast version to provide IE 8 support
    1.7.xLong Term SupportSee [Long Term Support](#long-term-support) section below.
    + +### Long Term Support + +On July 1st 2018, we will enter a Long Term Support period for AngularJS. + +At this time we will focus exclusively on providing fixes to bugs that satisfy at least one of the following criteria: + +* A security flaw is detected in the 1.7.x branch of the framework +* One of the major browsers releases a version that will cause current production applications using AngularJS 1.7.x to stop working +* The jQuery library releases a version that will cause current production applications using AngularJS 1.7.x to stop working. + +### Blog Post + +You can read more about these plans in our [blog post announcement](https://blog.angular.io/stable-angularjs-and-long-term-support-7e077635ee9c). \ No newline at end of file From c0adcc3a4b561260d0f1ff6b834ca940bf1971a9 Mon Sep 17 00:00:00 2001 From: George Kalpakas Date: Tue, 20 Feb 2018 18:23:07 +0200 Subject: [PATCH 503/849] refactor($compile): avoid catastrophic backtracking when parsing bindings This isn't expected to have any actual impact, since AngularJS is only intended to be used in the browser (not the server) and for this RegExp to be exploited by malicious user code the developer would have to have to give the user rights to execute arbitrary JavaScript code anyway. Fixing as a general good practice and to avoid encouraging use of a similar RegExp in other environments where it might actually matter. Closes #16464 --- src/ng/compile.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ng/compile.js b/src/ng/compile.js index 6ae2722a6fde..603d94ed9522 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -1014,11 +1014,13 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { var bindingCache = createMap(); function parseIsolateBindings(scope, directiveName, isController) { - var LOCAL_REGEXP = /^\s*([@&<]|=(\*?))(\??)\s*([\w$]*)\s*$/; + var LOCAL_REGEXP = /^([@&<]|=(\*?))(\??)\s*([\w$]*)$/; var bindings = createMap(); forEach(scope, function(definition, scopeName) { + definition = definition.trim(); + if (definition in bindingCache) { bindings[scopeName] = bindingCache[definition]; return; From 719e66b38bd75a66b01df5b4cd90bbbac2bc069d Mon Sep 17 00:00:00 2001 From: Frederik Prijck Date: Mon, 26 Feb 2018 15:00:42 +0100 Subject: [PATCH 504/849] docs(README): fix incorrect version-support-status link (#16473) Closes #16472 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c2d1a9db2981..7ec7c6b466fd 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ piece of cake. Best of all? It makes development fun! -------------------- -##### AngularJS will be moving to Long Term Support (LTS) mode on July 1st 2018: [Find out more](misc/version-support-status) +##### AngularJS will be moving to Long Term Support (LTS) mode on July 1st 2018: [Find out more](https://docs.angularjs.org/misc/version-support-status) ##### Looking for the new Angular? Go here: https://github.com/angular/angular From 290a5f23395eeb669aff3f7957300833e46646d8 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Tue, 27 Feb 2018 17:33:42 +0100 Subject: [PATCH 505/849] docs(tutorial): fix headlines --- docs/content/tutorial/step_00.ngdoc | 5 ++--- docs/content/tutorial/step_01.ngdoc | 5 ++--- docs/content/tutorial/step_02.ngdoc | 11 +++++------ docs/content/tutorial/step_03.ngdoc | 9 ++++----- docs/content/tutorial/step_04.ngdoc | 4 ++-- docs/content/tutorial/step_05.ngdoc | 8 ++++---- docs/content/tutorial/step_06.ngdoc | 6 +++--- docs/content/tutorial/step_07.ngdoc | 6 +++--- docs/content/tutorial/step_08.ngdoc | 6 +++--- docs/content/tutorial/step_09.ngdoc | 6 +++--- docs/content/tutorial/step_10.ngdoc | 6 +++--- docs/content/tutorial/step_11.ngdoc | 6 +++--- docs/content/tutorial/step_12.ngdoc | 6 +++--- docs/content/tutorial/step_13.ngdoc | 2 +- docs/content/tutorial/step_14.ngdoc | 4 ++-- 15 files changed, 43 insertions(+), 47 deletions(-) diff --git a/docs/content/tutorial/step_00.ngdoc b/docs/content/tutorial/step_00.ngdoc index 36afe8862cf6..4aca8850cfe6 100644 --- a/docs/content/tutorial/step_00.ngdoc +++ b/docs/content/tutorial/step_00.ngdoc @@ -5,7 +5,6 @@
      - In this step of the tutorial, you will become familiar with the most important source code files of the AngularJS Phonecat App. You will also learn how to start the development servers bundled with [angular-seed][angular-seed], and run the application in the browser. @@ -167,7 +166,7 @@ For the purposes of this tutorial, we modified the angular-seed with the followi * Added a dependency on [Bootstrap](http://getbootstrap.com) in the `bower.json` file. -# Experiments +## Experiments
      @@ -178,7 +177,7 @@ For the purposes of this tutorial, we modified the angular-seed with the followi ``` -# Summary +## Summary Now let's go to {@link step_01 step 1} and add some content to the web app. diff --git a/docs/content/tutorial/step_01.ngdoc b/docs/content/tutorial/step_01.ngdoc index e5f104701fac..b134e69f455d 100644 --- a/docs/content/tutorial/step_01.ngdoc +++ b/docs/content/tutorial/step_01.ngdoc @@ -5,7 +5,6 @@
        - In order to illustrate how AngularJS enhances standard HTML, you will create a purely *static* HTML page and then examine how we can turn this HTML code into a template that AngularJS will use to dynamically display the same result with any set of data. @@ -37,7 +36,7 @@ In this step you will add some basic information about two cell phones to an HTM ``` -# Experiments +## Experiments
        @@ -48,7 +47,7 @@ In this step you will add some basic information about two cell phones to an HTM ``` -# Summary +## Summary This addition to your app uses static HTML to display the list. Now, let's go to {@link step_02 step 2} to learn how to use AngularJS to dynamically generate the same list. diff --git a/docs/content/tutorial/step_02.ngdoc b/docs/content/tutorial/step_02.ngdoc index ba2edc0b9085..6b4a54388b3c 100644 --- a/docs/content/tutorial/step_02.ngdoc +++ b/docs/content/tutorial/step_02.ngdoc @@ -5,7 +5,6 @@
          - Now, it's time to make the web page dynamic — with AngularJS. We will also add a test that verifies the code for the controller we are going to add. @@ -148,9 +147,9 @@ To learn more about AngularJS scopes, see the {@link ng.$rootScope.Scope Angular -# Testing +## Testing -## Testing Controllers +### Testing Controllers The "AngularJS way" of separating the controller from the view makes it easy to test code as it is being developed. In the section "Model and Controller" we have registered our controller via a constructor @@ -206,7 +205,7 @@ describe('PhoneListController', function() { -## Writing and Running Tests +### Writing and Running Tests Many AngularJS developers prefer the syntax of [Jasmine's Behavior-Driven Development (BDD) framework][jasmine-home], when writing tests. Although @@ -253,7 +252,7 @@ To run the tests, and then watch the files for changes execute: `npm test` -# Experiments +## Experiments
          @@ -308,7 +307,7 @@ To run the tests, and then watch the files for changes execute: `npm test` `toBe(4)`. -# Summary +## Summary We now have a dynamic application which separates models, views, and controllers, and we are testing as we go. Let's go to {@link step_03 step 3} to learn how to improve our application's architecture, diff --git a/docs/content/tutorial/step_03.ngdoc b/docs/content/tutorial/step_03.ngdoc index 92b8d990f587..e7a16de54bd0 100644 --- a/docs/content/tutorial/step_03.ngdoc +++ b/docs/content/tutorial/step_03.ngdoc @@ -5,7 +5,6 @@
            - In the previous step, we saw how a controller and a template worked together to convert a static HTML page into a dynamic view. This is a very common pattern in Single-Page Applications in general (and AngularJS applications in particular): @@ -197,7 +196,7 @@ Voilà! The resulting output should look the same, but let's see what we have ga -# Testing +## Testing Although we have combined our controller with a template into a component, we still can (and should) unit test the controller separately, since this is where our application logic and data reside. @@ -240,12 +239,12 @@ verifies that the phones array property on it contains three records. Note that the controller instance itself, not on a `scope`. -## Running Tests +### Running Tests Same as before, execute `npm test` to run the tests and then watch the files for changes. -# Experiments +## Experiments
            @@ -267,7 +266,7 @@ Same as before, execute `npm test` to run the tests and then watch the files for throughout the application, is a big win. -# Summary +## Summary You have learned how to organize your application and presentation logic into isolated, reusable components. Let's go to {@link step_04 step 4} to learn how to organize our code in directories and diff --git a/docs/content/tutorial/step_04.ngdoc b/docs/content/tutorial/step_04.ngdoc index 2865ad765866..e7546f721fac 100644 --- a/docs/content/tutorial/step_04.ngdoc +++ b/docs/content/tutorial/step_04.ngdoc @@ -265,7 +265,7 @@ After all the refactorings that took place, this is how our application looks fr ``` -# Testing +## Testing Since this was just a refactoring step (no actual code addition/deletions), we shouldn't need to change much (if anything) as far as our specs are concerned. @@ -301,7 +301,7 @@ pass. -# Summary +## Summary Even if we didn't add any new and exciting functionality to our application, we have made a great step towards a well-architected and maintainable application. Time to spice things up. Let's go to diff --git a/docs/content/tutorial/step_05.ngdoc b/docs/content/tutorial/step_05.ngdoc index adba95906fbb..e7a5ea519c7e 100644 --- a/docs/content/tutorial/step_05.ngdoc +++ b/docs/content/tutorial/step_05.ngdoc @@ -78,7 +78,7 @@ following: by the `filter` filter. The process is completely transparent to the developer. -# Testing +## Testing In previous steps, we learned how to write and run unit tests. Unit tests are perfect for testing controllers and other parts of our application written in JavaScript, but they can't easily @@ -124,7 +124,7 @@ easy it is to write E2E tests in AngularJS. Although this example is for a simpl that easy to set up any functional, readable, E2E test. -## Running E2E Tests with Protractor +### Running E2E Tests with Protractor Even though the syntax of this test looks very much like our controller unit test written with Jasmine, the E2E test uses APIs of [Protractor][protractor]. Read about the Protractor APIs in the @@ -142,7 +142,7 @@ To rerun the test suite, execute `npm run protractor` again. -# Experiments +## Experiments
            @@ -155,7 +155,7 @@ To rerun the test suite, execute `npm run protractor` again. Component isolation at work! -# Summary +## Summary We have now added full-text search and included a test to verify that it works! Now let's go on to {@link step_06 step 6} to learn how to add sorting capabilities to the PhoneCat application. diff --git a/docs/content/tutorial/step_06.ngdoc b/docs/content/tutorial/step_06.ngdoc index 7a19d2600444..adc4b610fbb4 100644 --- a/docs/content/tutorial/step_06.ngdoc +++ b/docs/content/tutorial/step_06.ngdoc @@ -124,7 +124,7 @@ will be reordered. That is the data-binding doing its job in the opposite direct the model. -# Testing +## Testing The changes we made should be verified with both a unit test and an E2E test. Let's look at the unit test first. @@ -217,7 +217,7 @@ The E2E test verifies that the ordering mechanism of the select box is working c You can now rerun `npm run protractor` to see the tests run. -# Experiments +## Experiments
            @@ -232,7 +232,7 @@ You can now rerun `npm run protractor` to see the tests run. `` -# Summary +## Summary Now that you have added list sorting and tested the application, go to {@link step_07 step 7} to learn about AngularJS services and how AngularJS uses dependency injection. diff --git a/docs/content/tutorial/step_07.ngdoc b/docs/content/tutorial/step_07.ngdoc index 7e801ffa822d..4b0d0e64aaaa 100644 --- a/docs/content/tutorial/step_07.ngdoc +++ b/docs/content/tutorial/step_07.ngdoc @@ -180,7 +180,7 @@ let's add the annotations to our `PhoneListController`: ``` -# Testing +## Testing Because we started using dependency injection and our controller has dependencies, constructing the controller in our tests is a bit more complicated. We could use the `new` operator and provide the @@ -283,7 +283,7 @@ Chrome 49.0: Executed 2 of 2 SUCCESS (0.133 secs / 0.097 secs) ``` -# Experiments +## Experiments
            @@ -299,7 +299,7 @@ Chrome 49.0: Executed 2 of 2 SUCCESS (0.133 secs / 0.097 secs) ``` -# Summary +## Summary Now that you have learned how easy it is to use AngularJS services (thanks to AngularJS's dependency injection), go to {@link step_08 step 8}, where you will add some thumbnail images of phones and diff --git a/docs/content/tutorial/step_08.ngdoc b/docs/content/tutorial/step_08.ngdoc index a55461d0cc21..5707ea4d9902 100644 --- a/docs/content/tutorial/step_08.ngdoc +++ b/docs/content/tutorial/step_08.ngdoc @@ -70,7 +70,7 @@ which it would have done if we had only specified an attribute binding in a regu HTTP request to an invalid location. -# Testing +## Testing
            **`e2e-tests/scenarios.js`**: @@ -95,7 +95,7 @@ views, that we will implement in the upcoming steps. You can now rerun `npm run protractor` to see the tests run. -# Experiments +## Experiments
            @@ -108,7 +108,7 @@ You can now rerun `npm run protractor` to see the tests run. inject the valid address. -# Summary +## Summary Now that you have added phone images and links, go to {@link step_09 step 9} to learn about AngularJS layout templates and how AngularJS makes it easy to create applications that have multiple views. diff --git a/docs/content/tutorial/step_09.ngdoc b/docs/content/tutorial/step_09.ngdoc index 99683ccfeb44..da1e92a7dfc6 100644 --- a/docs/content/tutorial/step_09.ngdoc +++ b/docs/content/tutorial/step_09.ngdoc @@ -334,7 +334,7 @@ The takeaway here is: -# Testing +## Testing Since some of our modules depend on {@link ngRoute ngRoute} now, it is necessary to update the Karma configuration file with angular-route. Other than that, the unit tests should (still) pass without @@ -398,7 +398,7 @@ various URLs and verifying that the correct view was rendered. You can now rerun `npm run protractor` to see the tests run (and hopefully pass). -# Experiments +## Experiments
            @@ -415,7 +415,7 @@ You can now rerun `npm run protractor` to see the tests run (and hopefully pass) component isolation at work! -# Summary +## Summary With the routing set up and the phone list view implemented, we are ready to go to {@link step_10 step 10} and implement a proper phone details view. diff --git a/docs/content/tutorial/step_10.ngdoc b/docs/content/tutorial/step_10.ngdoc index 537f3ded49bf..65069b74ff58 100644 --- a/docs/content/tutorial/step_10.ngdoc +++ b/docs/content/tutorial/step_10.ngdoc @@ -122,7 +122,7 @@ including lists and bindings that comprise the phone details. Note how we use th -# Testing +## Testing We wrote a new unit test that is similar to the one we wrote for the `phoneList` component's controller in {@link step_07#testing step 7}. @@ -194,7 +194,7 @@ heading on the page is "Nexus S". You can run the tests with `npm run protractor`. -# Experiments +## Experiments
            @@ -202,7 +202,7 @@ You can run the tests with `npm run protractor`. images on the 'Nexus S' details page. -# Summary +## Summary Now that the phone details view is in place, proceed to {@link step_11 step 11} to learn how to write your own custom display filter. diff --git a/docs/content/tutorial/step_11.ngdoc b/docs/content/tutorial/step_11.ngdoc index d9ab2565d23e..6bc360cbb647 100644 --- a/docs/content/tutorial/step_11.ngdoc +++ b/docs/content/tutorial/step_11.ngdoc @@ -104,7 +104,7 @@ Let's employ the filter in the phone details template: ``` -# Testing +## Testing Filters, like any other code, should be tested. Luckily, these tests are very easy to write. @@ -146,7 +146,7 @@ Chrome 49.0: Executed 4 of 4 SUCCESS (0.091 secs / 0.075 secs) ``` -# Experiments +## Experiments
            @@ -167,7 +167,7 @@ Chrome 49.0: Executed 4 of 4 SUCCESS (0.091 secs / 0.075 secs) ``` -# Summary +## Summary Now that we have learned how to write and test a custom filter, let's go to {@link step_12 step 12} to learn how we can use AngularJS to enhance the phone details page further. diff --git a/docs/content/tutorial/step_12.ngdoc b/docs/content/tutorial/step_12.ngdoc index e16bdaa5bb2d..b9d4e0850c57 100644 --- a/docs/content/tutorial/step_12.ngdoc +++ b/docs/content/tutorial/step_12.ngdoc @@ -73,7 +73,7 @@ thumbnail image. -# Testing +## Testing To verify this new feature, we added two E2E tests. One verifies that `mainImageUrl` is set to the first phone image URL by default. The second test clicks on several thumbnail images and verifies @@ -151,7 +151,7 @@ property to the controller. As previously, we will use a mocked response. Our unit tests should now be passing again. -# Experiments +## Experiments
            @@ -176,7 +176,7 @@ Our unit tests should now be passing again. Now, whenever you double-click on a thumbnail, an alert pops-up. Pretty annoying! -# Summary +## Summary With the phone image swapper in place, we are ready for {@link step_13 step 13} to learn an even better way to fetch data. diff --git a/docs/content/tutorial/step_13.ngdoc b/docs/content/tutorial/step_13.ngdoc index f96ccd5c1913..2ad46e2c9459 100644 --- a/docs/content/tutorial/step_13.ngdoc +++ b/docs/content/tutorial/step_13.ngdoc @@ -310,7 +310,7 @@ Chrome 49.0: Executed 5 of 5 SUCCESS (0.123 secs / 0.104 secs) ``` -# Summary +## Summary Now that we have seen how to build a custom service as a RESTful client, we are ready for {@link step_14 step 14} to learn how to enhance the user experience with animations. diff --git a/docs/content/tutorial/step_14.ngdoc b/docs/content/tutorial/step_14.ngdoc index b1b5ff043f58..40667717ebee 100644 --- a/docs/content/tutorial/step_14.ngdoc +++ b/docs/content/tutorial/step_14.ngdoc @@ -503,7 +503,7 @@ element). A boolean parameter (`wasCanceled`) is passed to the function, letting if the animation was canceled or not. Use this function to do any necessary clean-up. -# Experiments +## Experiments
            @@ -544,7 +544,7 @@ if the animation was canceled or not. Use this function to do any necessary clea * Go crazy and come up with your own funky animations! -# Summary +## Summary Our application is now much more pleasant to use, thanks to the smooth transitions between pages and UI states. From 77917e34c93668e9936768bed681696d78028748 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Sun, 18 Feb 2018 20:32:04 +0100 Subject: [PATCH 506/849] chore(docs.angularjs.org): allow crawling of examples, don't deploy e2e test files --- Gruntfile.js | 2 +- docs/app/assets/robots.txt | 13 ++----------- scripts/docs.angularjs.org-firebase/firebase.json | 9 ++++++++- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index ba5efa0d8f09..70fd9d8a8236 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -341,7 +341,7 @@ module.exports = function(grunt) { }, { cwd: 'build/docs', - src: '**', + src: ['**', '!ptore2e/**'], dest: 'deploy/docs/', expand: true }, diff --git a/docs/app/assets/robots.txt b/docs/app/assets/robots.txt index 36b7daeca859..898272b08202 100644 --- a/docs/app/assets/robots.txt +++ b/docs/app/assets/robots.txt @@ -1,13 +1,4 @@ User-agent: * -Disallow: /examples/ -Disallow: /ptore2e/ -Disallow: /Error404.html - -# The js / map files in the root are used by the embedded examples, not by the app itself -Disallow: /*.js$ -Disallow: /*.map$ - -# (Javascript) crawlers need to access JS files -Allow: /components/*.js -Allow: /js/*.js +# The map files are not required by the app +Disallow: /*.map$ \ No newline at end of file diff --git a/scripts/docs.angularjs.org-firebase/firebase.json b/scripts/docs.angularjs.org-firebase/firebase.json index 9e112f2ff9ee..a83409ed7155 100644 --- a/scripts/docs.angularjs.org-firebase/firebase.json +++ b/scripts/docs.angularjs.org-firebase/firebase.json @@ -29,7 +29,14 @@ ], "headers": [ { - "source": "/partials/**", + "source": "/Error404.html", + "headers" : [{ + "key" : "X-Robots-Tag", + "value" : "noindex" + }] + }, + { + "source": "/@(partials|examples)/**", "headers" : [{ "key" : "X-Robots-Tag", "value" : "noindex" From 02fb980de67fc9158920ec4ab0969d544ac96c1a Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Sun, 18 Feb 2018 20:35:55 +0100 Subject: [PATCH 507/849] chore(docs.angularjs.org): only deploy production index.html as entry file Previously, we rewrote index.html to index-production.html, but Firebase ignored this, probably because an exact file match always takes priority. This lead to the problem thatthe root - angularjs.org - didn't include the angular.js source files from the CDN --- Gruntfile.js | 12 +++++++----- scripts/docs.angularjs.org-firebase/firebase.json | 13 ------------- .../docs.angularjs.org-firebase/functions/index.js | 2 +- 3 files changed, 8 insertions(+), 19 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 70fd9d8a8236..bb3eb9508ee4 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -341,15 +341,17 @@ module.exports = function(grunt) { }, { cwd: 'build/docs', - src: ['**', '!ptore2e/**'], + src: ['**', '!ptore2e/**', '!index*.html'], dest: 'deploy/docs/', expand: true }, { - src: ['build/docs/index-production.html'], - dest: docsScriptFolder + '/functions/content', - expand: true, - flatten: true + src: 'build/docs/index-production.html', + dest: 'deploy/docs/index.html' + }, + { + src: 'build/docs/index-production.html', + dest: docsScriptFolder + '/functions/content/index.html' }, { cwd: 'build/docs', diff --git a/scripts/docs.angularjs.org-firebase/firebase.json b/scripts/docs.angularjs.org-firebase/firebase.json index a83409ed7155..0e018010b061 100644 --- a/scripts/docs.angularjs.org-firebase/firebase.json +++ b/scripts/docs.angularjs.org-firebase/firebase.json @@ -1,11 +1,6 @@ { "hosting": { "public": "../../deploy/docs", - "ignore": [ - "/index.html", - "/index-debug.html", - "/index-jquery.html" - ], "redirects": [ { "source": "/error/:namespace\\::error*", @@ -14,14 +9,6 @@ } ], "rewrites": [ - { - "source": "/", - "destination": "/index-production.html" - }, - { - "source": "/index.html", - "destination": "/index-production.html" - }, { "source": "**/*!(.@(jpg|jpeg|gif|png|html|js|map|json|css|svg|ttf|txt|woff|woff2|eot|xml))", "function": "sendFile" diff --git a/scripts/docs.angularjs.org-firebase/functions/index.js b/scripts/docs.angularjs.org-firebase/functions/index.js index b86eb32f642a..eace519a45ad 100644 --- a/scripts/docs.angularjs.org-firebase/functions/index.js +++ b/scripts/docs.angularjs.org-firebase/functions/index.js @@ -25,7 +25,7 @@ const buildSnapshot = data => ` function sendFile(request, response) { const snapshotRequested = typeof request.query._escaped_fragment_ !== 'undefined'; - const filePath = `content/${snapshotRequested ? `partials${request.path}` : 'index-production'}.html`; + const filePath = `content/${snapshotRequested ? `partials${request.path}` : 'index'}.html`; if (snapshotRequested) { fs.readFile(filePath, {encoding: 'utf8'}, (error, data) => { From a37f89f8646df3ea64aee32e63055b9722236753 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Tue, 20 Feb 2018 17:59:45 +0100 Subject: [PATCH 508/849] chore(docs-app): add dynamic 404 behavior Adapted from https://github.com/angular/angular/commit/88045a50506adfe32c2f7a213c8e95f46d1e40e1, https://github.com/angular/angular/commit/c3fb820473d64036ef0dd3d4c004cc7fbc67be75, and https://github.com/angular/angular/commit/5a624fa1be530a1b3479a4cc7f96e5a20a3d64fb. --- docs/app/e2e/.eslintrc.json | 1 + docs/app/e2e/app.scenario.js | 63 +++++++++++++++++++ docs/app/src/docs.js | 16 +++-- docs/config/index.js | 5 +- docs/config/services/deployments/test.js | 40 ++++++++++++ .../templates/app/indexPage.template.html | 21 +++++-- 6 files changed, 136 insertions(+), 10 deletions(-) create mode 100644 docs/config/services/deployments/test.js diff --git a/docs/app/e2e/.eslintrc.json b/docs/app/e2e/.eslintrc.json index 6a949b92ffc9..60c814cc9339 100644 --- a/docs/app/e2e/.eslintrc.json +++ b/docs/app/e2e/.eslintrc.json @@ -9,6 +9,7 @@ }, "globals": { + "angular": false, /* testabilityPatch / matchers */ "inject": false, "module": false, diff --git a/docs/app/e2e/app.scenario.js b/docs/app/e2e/app.scenario.js index 1333870eff4d..a78667962ab9 100644 --- a/docs/app/e2e/app.scenario.js +++ b/docs/app/e2e/app.scenario.js @@ -21,6 +21,9 @@ describe('docs.angularjs.org', function() { console.log('browser console errors: ' + require('util').inspect(filteredLog)); } }); + + browser.ignoreSynchronization = false; + browser.clearMockModules(); }); @@ -102,6 +105,66 @@ describe('docs.angularjs.org', function() { expect(mainHeader.getText()).toEqual('Oops!'); }); + it('should set "noindex" if the page does not exist', function() { + browser.get('build/docs/index-production.html#!/api/does/not/exist'); + var robots = element(by.css('meta[name="robots"][content="noindex"]')); + var googleBot = element(by.css('meta[name="googlebot"][content="noindex"]')); + expect(robots.isPresent()).toBe(true); + expect(googleBot.isPresent()).toBe(true); + }); + + it('should remove "noindex" if the page exists', function() { + browser.get('build/docs/index-production.html#!/api'); + var robots = element(by.css('meta[name="robots"][content="noindex"]')); + var googleBot = element(by.css('meta[name="googlebot"][content="noindex"]')); + expect(robots.isPresent()).toBe(false); + expect(googleBot.isPresent()).toBe(false); + }); + + describe('template request error', function() { + beforeEach(function() { + browser.addMockModule('httpMocker', function() { + angular.module('httpMocker', ['ngMock']) + .run(['$httpBackend', function($httpBackend) { + $httpBackend.whenGET('localhost:8000/build/docs/partials/api.html').respond(500, ''); + }]); + }); + }); + + it('should set "noindex" for robots if the request fails', function() { + // index-test includes ngMock + browser.get('build/docs/index-test.html#!/api'); + var robots = element(by.css('meta[name="robots"][content="noindex"]')); + var googleBot = element(by.css('meta[name="googlebot"][content="noindex"]')); + expect(robots.isPresent()).toBe(true); + expect(googleBot.isPresent()).toBe(true); + }); + }); + + + describe('page bootstrap error', function() { + beforeEach(function() { + browser.addMockModule('httpMocker', function() { + // Require a module that does not exist to break the bootstrapping + angular.module('httpMocker', ['doesNotExist']); + }); + }); + + it('should have "noindex" for robots if bootstrapping fails', function() { + browser.get('build/docs/index.html#!/api').catch(function() { + // get() will fail on AngularJS bootstrap, but if we continue here, protractor + // will assume the app is ready + browser.ignoreSynchronization = true; + var robots = element(by.css('meta[name="robots"][content="noindex"]')); + var googleBot = element(by.css('meta[name="googlebot"][content="noindex"]')); + expect(robots.isPresent()).toBe(true); + expect(googleBot.isPresent()).toBe(true); + }); + }); + + + }); + }); }); diff --git a/docs/app/src/docs.js b/docs/app/src/docs.js index 33b1be384beb..b6e6e49a2aa8 100644 --- a/docs/app/src/docs.js +++ b/docs/app/src/docs.js @@ -8,6 +8,8 @@ angular.module('DocsController', ['currentVersionData']) function($scope, $rootScope, $location, $window, $cookies, NG_PAGES, NG_NAVIGATION, CURRENT_NG_VERSION) { + var errorPartialPath = 'Error404.html'; + $scope.navClass = function(navItem) { return { active: navItem.href && this.currentPage && this.currentPage.path, @@ -16,8 +18,6 @@ angular.module('DocsController', ['currentVersionData']) }; }; - - $scope.$on('$includeContentLoaded', function() { var pagePath = $scope.currentPage ? $scope.currentPage.path : $location.path(); $window._gaq.push(['_trackPageview', pagePath]); @@ -26,6 +26,7 @@ angular.module('DocsController', ['currentVersionData']) $scope.$on('$includeContentError', function() { $scope.loading = false; + $scope.loadingError = true; }); $scope.$watch(function docsPathWatch() {return $location.path(); }, function docsPathWatchAction(path) { @@ -35,6 +36,7 @@ angular.module('DocsController', ['currentVersionData']) var currentPage = $scope.currentPage = NG_PAGES[path]; $scope.loading = true; + $scope.loadingError = false; if (currentPage) { $scope.partialPath = 'partials/' + path + '.html'; @@ -50,18 +52,22 @@ angular.module('DocsController', ['currentVersionData']) } else { $scope.currentArea = NG_NAVIGATION['api']; $scope.breadcrumb = []; - $scope.partialPath = 'Error404.html'; + $scope.partialPath = errorPartialPath; } }); + $scope.hasError = function() { + return $scope.partialPath === errorPartialPath || $scope.loadingError; + }; + /********************************** Initialize ***********************************/ $scope.versionNumber = CURRENT_NG_VERSION.full; $scope.version = CURRENT_NG_VERSION.full + ' ' + CURRENT_NG_VERSION.codeName; - $scope.loading = 0; - + $scope.loading = false; + $scope.loadingError = false; var INDEX_PATH = /^(\/|\/index[^.]*.html)$/; if (!$location.path() || INDEX_PATH.test($location.path())) { diff --git a/docs/config/index.js b/docs/config/index.js index 4ddf7922c7bd..12777f6a8f5e 100644 --- a/docs/config/index.js +++ b/docs/config/index.js @@ -22,6 +22,7 @@ module.exports = new Package('angularjs', [ .factory(require('./services/deployments/debug')) .factory(require('./services/deployments/default')) .factory(require('./services/deployments/jquery')) +.factory(require('./services/deployments/test')) .factory(require('./services/deployments/production')) .factory(require('./inline-tag-defs/type')) @@ -157,12 +158,14 @@ module.exports = new Package('angularjs', [ generateProtractorTestsProcessor, generateExamplesProcessor, debugDeployment, defaultDeployment, - jqueryDeployment, productionDeployment) { + jqueryDeployment, testDeployment, + productionDeployment) { generateIndexPagesProcessor.deployments = [ debugDeployment, defaultDeployment, jqueryDeployment, + testDeployment, productionDeployment ]; diff --git a/docs/config/services/deployments/test.js b/docs/config/services/deployments/test.js new file mode 100644 index 000000000000..ba0805b5079a --- /dev/null +++ b/docs/config/services/deployments/test.js @@ -0,0 +1,40 @@ +'use strict'; + +module.exports = function testDeployment(getVersion) { + return { + name: 'test', + examples: { + commonFiles: { + scripts: ['../../../angular.js'] + }, + dependencyPath: '../../../' + }, + scripts: [ + '../angular.js', + '../angular-resource.js', + '../angular-route.js', + '../angular-cookies.js', + '../angular-mocks.js', + '../angular-sanitize.js', + '../angular-touch.js', + '../angular-animate.js', + 'components/marked-' + getVersion('marked') + '/lib/marked.js', + 'js/angular-bootstrap/dropdown-toggle.js', + 'components/lunr-' + getVersion('lunr') + '/lunr.js', + 'components/google-code-prettify-' + getVersion('google-code-prettify') + '/src/prettify.js', + 'components/google-code-prettify-' + getVersion('google-code-prettify') + '/src/lang-css.js', + 'js/current-version-data.js', + 'js/all-versions-data.js', + 'js/pages-data.js', + 'js/nav-data.js', + 'js/docs.js' + ], + stylesheets: [ + 'components/bootstrap-' + getVersion('bootstrap') + '/css/bootstrap.css', + 'css/prettify-theme.css', + 'css/angular-topnav.css', + 'css/docs.css', + 'css/animations.css' + ] + }; +}; diff --git a/docs/config/templates/app/indexPage.template.html b/docs/config/templates/app/indexPage.template.html index 44ef6ebd7b1a..eb5c6614a2bc 100644 --- a/docs/config/templates/app/indexPage.template.html +++ b/docs/config/templates/app/indexPage.template.html @@ -11,6 +11,18 @@ AngularJS + - * - *
            - *
            - *
            - * Current time is: - *
            - * Blood 1 : {{blood_1}} - * Blood 2 : {{blood_2}} - * - * - * - *
            - *
            - * - * - * - */ + /** + * @ngdoc service + * @name $interval + * + * @description + * AngularJS's wrapper for `window.setInterval`. The `fn` function is executed every `delay` + * milliseconds. + * + * The return value of registering an interval function is a promise. This promise will be + * notified upon each tick of the interval, and will be resolved after `count` iterations, or + * run indefinitely if `count` is not defined. The value of the notification will be the + * number of iterations that have run. + * To cancel an interval, call `$interval.cancel(promise)`. + * + * In tests you can use {@link ngMock.$interval#flush `$interval.flush(millis)`} to + * move forward by `millis` milliseconds and trigger any functions scheduled to run in that + * time. + * + *
            + * **Note**: Intervals created by this service must be explicitly destroyed when you are finished + * with them. In particular they are not automatically destroyed when a controller's scope or a + * directive's element are destroyed. + * You should take this into consideration and make sure to always cancel the interval at the + * appropriate moment. See the example below for more details on how and when to do this. + *
            + * + * @param {function()} fn A function that should be called repeatedly. If no additional arguments + * are passed (see below), the function is called with the current iteration count. + * @param {number} delay Number of milliseconds between each function call. + * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat + * indefinitely. + * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise + * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block. + * @param {...*=} Pass additional parameters to the executed function. + * @returns {promise} A promise which will be notified on each iteration. It will resolve once all iterations of the interval complete. + * + * @example + * + * + * + * + *
            + *
            + *
            + * Current time is: + *
            + * Blood 1 : {{blood_1}} + * Blood 2 : {{blood_2}} + * + * + * + *
            + *
            + * + *
            + *
            + */ function interval(fn, delay, count, invokeApply) { var hasParams = arguments.length > 4, args = hasParams ? sliceArgs(arguments, 4) : [], @@ -177,16 +177,16 @@ function $IntervalProvider() { } - /** - * @ngdoc method - * @name $interval#cancel - * - * @description - * Cancels a task associated with the `promise`. - * - * @param {Promise=} promise returned by the `$interval` function. - * @returns {boolean} Returns `true` if the task was successfully canceled. - */ + /** + * @ngdoc method + * @name $interval#cancel + * + * @description + * Cancels a task associated with the `promise`. + * + * @param {Promise=} promise returned by the `$interval` function. + * @returns {boolean} Returns `true` if the task was successfully canceled. + */ interval.cancel = function(promise) { if (promise && promise.$$intervalId in intervals) { // Interval cancels should not report as unhandled promise. From 3365256502344970f86355d3ace1cb4251ae9828 Mon Sep 17 00:00:00 2001 From: George Kalpakas Date: Tue, 13 Mar 2018 19:52:58 +0200 Subject: [PATCH 516/849] fix($timeout): throw when trying to cancel non-$timeout promise Previously, calling `$timeout.cancel()` with a promise that was not generated by a call to `$timeout()` would do nothing. This could, for example, happen when calling `.then()`/`.catch()` on the returned promise, which creates a new promise, and passing that to `$timeout.cancel()`. With this commit, `$timeout.cancel()` will throw an error if called with a non-$timeout promise, thus surfacing errors that would otherwise go unnoticed. Fixes #16424 BREAKING CHNAGE: `$timeout.cancel()` will throw an error if called with a promise that was not generated by `$timeout()`. Previously, it would silently do nothing. Before: ```js var promise = $timeout(doSomething, 1000).then(doSomethingElse); $timeout.cancel(promise); // No error; timeout NOT canceled. ``` After: ```js var promise = $timeout(doSomething, 1000).then(doSomethingElse); $timeout.cancel(promise); // Throws error. ``` Correct usage: ```js var promise = $timeout(doSomething, 1000); var newPromise = promise.then(doSomethingElse); $timeout.cancel(promise); // Timeout canceled. ``` --- docs/content/error/$timeout/badprom.ngdoc | 25 ++++++++++++++++++++++ src/ng/timeout.js | 26 +++++++++++++++++------ test/ng/timeoutSpec.js | 8 ++++++- 3 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 docs/content/error/$timeout/badprom.ngdoc diff --git a/docs/content/error/$timeout/badprom.ngdoc b/docs/content/error/$timeout/badprom.ngdoc new file mode 100644 index 000000000000..c1b0d025ad8f --- /dev/null +++ b/docs/content/error/$timeout/badprom.ngdoc @@ -0,0 +1,25 @@ +@ngdoc error +@name $timeout:badprom +@fullName Non-$timeout promise +@description + +This error occurs when calling {@link ng.$timeout#cancel $timeout.cancel()} with a promise that +was not generated by the {@link ng.$timeout $timeout} service. This can, for example, happen when +calling {@link ng.$q#the-promise-api then()/catch()} on the returned promise, which creates a new +promise, and pass that new promise to {@link ng.$timeout#cancel $timeout.cancel()}. + +Example of incorrect usage that leads to this error: + +```js +var promise = $timeout(doSomething, 1000).then(doSomethingElse); +$timeout.cancel(promise); +``` + +To fix the example above, keep a reference to the promise returned by +{@link ng.$timeout $timeout()} and pass that to {@link ng.$timeout#cancel $timeout.cancel()}: + +```js +var promise = $timeout(doSomething, 1000); +var newPromise = promise.then(doSomethingElse); +$timeout.cancel(promise); +``` diff --git a/src/ng/timeout.js b/src/ng/timeout.js index 71c06ce39ab0..1e4eaad3349f 100644 --- a/src/ng/timeout.js +++ b/src/ng/timeout.js @@ -1,5 +1,7 @@ 'use strict'; +var $timeoutMinErr = minErr('$timeout'); + /** @this */ function $TimeoutProvider() { this.$get = ['$rootScope', '$browser', '$q', '$$q', '$exceptionHandler', @@ -83,14 +85,24 @@ function $TimeoutProvider() { * canceled. */ timeout.cancel = function(promise) { - if (promise && promise.$$timeoutId in deferreds) { - // Timeout cancels should not report an unhandled promise. - markQExceptionHandled(deferreds[promise.$$timeoutId].promise); - deferreds[promise.$$timeoutId].reject('canceled'); - delete deferreds[promise.$$timeoutId]; - return $browser.defer.cancel(promise.$$timeoutId); + if (!promise) return false; + + if (!promise.hasOwnProperty('$$timeoutId')) { + throw $timeoutMinErr('badprom', + '`$timeout.cancel()` called with a promise that was not generated by `$timeout()`.'); } - return false; + + if (!deferreds.hasOwnProperty(promise.$$timeoutId)) return false; + + var id = promise.$$timeoutId; + var deferred = deferreds[id]; + + // Timeout cancels should not report an unhandled promise. + markQExceptionHandled(deferred.promise); + deferred.reject('canceled'); + delete deferreds[id]; + + return $browser.defer.cancel(id); }; return timeout; diff --git a/test/ng/timeoutSpec.js b/test/ng/timeoutSpec.js index 648c39663c0d..bfd5d53285e7 100644 --- a/test/ng/timeoutSpec.js +++ b/test/ng/timeoutSpec.js @@ -280,11 +280,17 @@ describe('$timeout', function() { })); - it('should not throw a runtime exception when given an undefined promise', inject(function($timeout) { + it('should not throw an error when given an undefined promise', inject(function($timeout) { expect($timeout.cancel()).toBe(false); })); + it('should throw an error when given a non-$timeout promise', inject(function($timeout) { + var promise = $timeout(noop).then(noop); + expect(function() { $timeout.cancel(promise); }).toThrowMinErr('$timeout', 'badprom'); + })); + + it('should forget references to relevant deferred', inject(function($timeout, $browser) { // $browser.defer.cancel is only called on cancel if the deferred object is still referenced var cancelSpy = spyOn($browser.defer, 'cancel').and.callThrough(); From a8bef95127775d83d80daa4617c33227c4b443d4 Mon Sep 17 00:00:00 2001 From: George Kalpakas Date: Tue, 13 Mar 2018 19:53:56 +0200 Subject: [PATCH 517/849] fix($interval): throw when trying to cancel non-$interval promise Previously, calling `$interval.cancel()` with a promise that was not generated by a call to `$interval()` would do nothing. This could, for example, happen when calling `.then()`/`.catch()` on the returned promise, which creates a new promise, and passing that to `$interval.cancel()`. With this commit, `$interval.cancel()` will throw an error if called with a non-$interval promise, thus surfacing errors that would otherwise go unnoticed. Related to #16424. BREAKING CHNAGE: `$interval.cancel()` will throw an error if called with a promise that was not generated by `$interval()`. Previously, it would silently do nothing. Before: ```js var promise = $interval(doSomething, 1000, 5).then(doSomethingElse); $interval.cancel(promise); // No error; interval NOT canceled. ``` After: ```js var promise = $interval(doSomething, 1000, 5).then(doSomethingElse); $interval.cancel(promise); // Throws error. ``` Correct usage: ```js var promise = $interval(doSomething, 1000, 5); var newPromise = promise.then(doSomethingElse); $interval.cancel(promise); // Interval canceled. ``` Closes #16476 --- docs/content/error/$interval/badprom.ngdoc | 25 +++++++++++++++++++ src/ng/interval.js | 28 +++++++++++++++------- test/ng/intervalSpec.js | 9 +++++-- 3 files changed, 52 insertions(+), 10 deletions(-) create mode 100644 docs/content/error/$interval/badprom.ngdoc diff --git a/docs/content/error/$interval/badprom.ngdoc b/docs/content/error/$interval/badprom.ngdoc new file mode 100644 index 000000000000..2c9f8c5371a9 --- /dev/null +++ b/docs/content/error/$interval/badprom.ngdoc @@ -0,0 +1,25 @@ +@ngdoc error +@name $interval:badprom +@fullName Non-$interval promise +@description + +This error occurs when calling {@link ng.$interval#cancel $interval.cancel()} with a promise that +was not generated by the {@link ng.$interval $interval} service. This can, for example, happen when +calling {@link ng.$q#the-promise-api then()/catch()} on the returned promise, which creates a new +promise, and pass that new promise to {@link ng.$interval#cancel $interval.cancel()}. + +Example of incorrect usage that leads to this error: + +```js +var promise = $interval(doSomething, 1000, 5).then(doSomethingElse); +$interval.cancel(promise); +``` + +To fix the example above, keep a reference to the promise returned by +{@link ng.$interval $interval()} and pass that to {@link ng.$interval#cancel $interval.cancel()}: + +```js +var promise = $interval(doSomething, 1000, 5); +var newPromise = promise.then(doSomethingElse); +$interval.cancel(promise); +``` diff --git a/src/ng/interval.js b/src/ng/interval.js index a34682ed007d..750a6ba3df1c 100644 --- a/src/ng/interval.js +++ b/src/ng/interval.js @@ -1,5 +1,7 @@ 'use strict'; +var $intervalMinErr = minErr('$interval'); + /** @this */ function $IntervalProvider() { this.$get = ['$rootScope', '$window', '$q', '$$q', '$browser', @@ -188,15 +190,25 @@ function $IntervalProvider() { * @returns {boolean} Returns `true` if the task was successfully canceled. */ interval.cancel = function(promise) { - if (promise && promise.$$intervalId in intervals) { - // Interval cancels should not report as unhandled promise. - markQExceptionHandled(intervals[promise.$$intervalId].promise); - intervals[promise.$$intervalId].reject('canceled'); - $window.clearInterval(promise.$$intervalId); - delete intervals[promise.$$intervalId]; - return true; + if (!promise) return false; + + if (!promise.hasOwnProperty('$$intervalId')) { + throw $intervalMinErr('badprom', + '`$interval.cancel()` called with a promise that was not generated by `$interval()`.'); } - return false; + + if (!intervals.hasOwnProperty(promise.$$intervalId)) return false; + + var id = promise.$$intervalId; + var deferred = intervals[id]; + + // Interval cancels should not report an unhandled promise. + markQExceptionHandled(deferred.promise); + deferred.reject('canceled'); + $window.clearInterval(id); + delete intervals[id]; + + return true; }; return interval; diff --git a/test/ng/intervalSpec.js b/test/ng/intervalSpec.js index 47281429e0b2..3b23250d1f98 100644 --- a/test/ng/intervalSpec.js +++ b/test/ng/intervalSpec.js @@ -335,12 +335,17 @@ describe('$interval', function() { })); - it('should not throw a runtime exception when given an undefined promise', - inject(function($interval) { + it('should not throw an error when given an undefined promise', inject(function($interval) { expect($interval.cancel()).toBe(false); })); + it('should throw an error when given a non-$interval promise', inject(function($interval) { + var promise = $interval(noop).then(noop); + expect(function() { $interval.cancel(promise); }).toThrowMinErr('$interval', 'badprom'); + })); + + it('should not trigger digest when cancelled', inject(function($interval, $rootScope, $browser) { var watchSpy = jasmine.createSpy('watchSpy'); $rootScope.$watch(watchSpy); From 98e0e047b0f705005b256c70feb4e6368ff3a591 Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Wed, 14 Mar 2018 22:35:34 +0100 Subject: [PATCH 518/849] docs(ngShow/ngHide): add note about flicker when toggling elements Related to https://github.com/angular/angular.js/issues/14015 Closes #16489 --- src/ng/directive/ngShowHide.js | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/ng/directive/ngShowHide.js b/src/ng/directive/ngShowHide.js index 74f02f923989..8e24b5ba081c 100644 --- a/src/ng/directive/ngShowHide.js +++ b/src/ng/directive/ngShowHide.js @@ -182,6 +182,25 @@ var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate'; }); + * + * @knownIssue + * + * ### Flickering when using ngShow to toggle between elements + * + * When using {@link ngShow} and / or {@link ngHide} to toggle between elements, it can + * happen that both the element to show and the element to hide are visible for a very short time. + * + * This usually happens when the {@link ngAnimate ngAnimate module} is included, but no actual animations + * are defined for {@link ngShow} / {@link ngHide}. Internet Explorer is affected more often than + * other browsers. + * + * There are several way to mitigate this problem: + * + * - {@link guide/animations#how-to-selectively-enable-disable-and-skip-animations Disable animations on the affected elements}. + * - Use {@link ngIf} or {@link ngSwitch} instead of {@link ngShow} / {@link ngHide}. + * - Use the special CSS selector `ng-hide.ng-hide-animate` to set `{display: none}` or similar on the affected elements. + * - Use `ng-class="{'ng-hide': expression}` instead of instead of {@link ngShow} / {@link ngHide}. + * - Define an animation on the affected elements. */ var ngShowDirective = ['$animate', function($animate) { return { @@ -382,6 +401,25 @@ var ngShowDirective = ['$animate', function($animate) { }); + * + * @knownIssue + * + * ### Flickering when using ngHide to toggle between elements + * + * When using {@link ngShow} and / or {@link ngHide} to toggle between elements, it can + * happen that both the element to show and the element to hide are visible for a very short time. + * + * This usually happens when the {@link ngAnimate ngAnimate module} is included, but no actual animations + * are defined for {@link ngShow} / {@link ngHide}. Internet Explorer is affected more often than + * other browsers. + * + * There are several way to mitigate this problem: + * + * - {@link guide/animations#how-to-selectively-enable-disable-and-skip-animations Disable animations on the affected elements}. + * - Use {@link ngIf} or {@link ngSwitch} instead of {@link ngShow} / {@link ngHide}. + * - Use the special CSS selector `ng-hide.ng-hide-animate` to set `{display: none}` or similar on the affected elements. + * - Use `ng-class="{'ng-hide': expression}` instead of instead of {@link ngShow} / {@link ngHide}. + * - Define an animation on the affected elements. */ var ngHideDirective = ['$animate', function($animate) { return { From c0bc1df3f73d03455175ca7e2002c026a0b64b4c Mon Sep 17 00:00:00 2001 From: Martin Staffa Date: Fri, 16 Mar 2018 16:48:12 +0100 Subject: [PATCH 519/849] chore(travis): update iOs test browsers Closes #16493 --- karma-shared.conf.js | 28 +++++++++++++--------------- scripts/travis/build.sh | 2 +- test/ng/directive/ngOptionsSpec.js | 2 +- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/karma-shared.conf.js b/karma-shared.conf.js index e95a95fbc111..ec06ed40a369 100644 --- a/karma-shared.conf.js +++ b/karma-shared.conf.js @@ -104,11 +104,15 @@ module.exports = function(config, specificOptions) { platform: 'Windows 10', version: 'latest-1' }, - 'SL_iOS': { + 'SL_iOS_10': { base: 'SauceLabs', browserName: 'iphone', - platform: 'OS X 10.10', - version: '8.1' + version: '10.3' + }, + 'SL_iOS_11': { + base: 'SauceLabs', + browserName: 'iphone', + version: '11' }, 'BS_Chrome': { @@ -156,23 +160,17 @@ module.exports = function(config, specificOptions) { os: 'Windows', os_version: '10' }, - 'BS_iOS_8': { - base: 'BrowserStack', - device: 'iPhone 6', - os: 'ios', - os_version: '8.3' - }, - 'BS_iOS_9': { - base: 'BrowserStack', - device: 'iPhone 6S', - os: 'ios', - os_version: '9.3' - }, 'BS_iOS_10': { base: 'BrowserStack', device: 'iPhone 7', os: 'ios', os_version: '10.0' + }, + 'BS_iOS_11': { + base: 'BrowserStack', + device: 'iPhone 8', + os: 'ios', + os_version: '11.0' } } }); diff --git a/scripts/travis/build.sh b/scripts/travis/build.sh index 9338247915a3..39c62de0de65 100755 --- a/scripts/travis/build.sh +++ b/scripts/travis/build.sh @@ -14,7 +14,7 @@ SAUCE_ACCESS_KEY=$(echo "$SAUCE_ACCESS_KEY" | rev) BROWSERS="SL_Chrome,SL_Chrome-1,\ SL_Firefox,SL_Firefox-1,\ SL_Safari,SL_Safari-1,\ -SL_iOS,\ +SL_iOS_10,SL_iOS_11,\ SL_IE_9,SL_IE_10,SL_IE_11,\ SL_EDGE,SL_EDGE-1" diff --git a/test/ng/directive/ngOptionsSpec.js b/test/ng/directive/ngOptionsSpec.js index 2af26f489367..56b11d04f0d2 100644 --- a/test/ng/directive/ngOptionsSpec.js +++ b/test/ng/directive/ngOptionsSpec.js @@ -2928,7 +2928,7 @@ describe('ngOptions', function() { // getter/setter is not defined on the prototype (probably due to some bug). On Safari 9, the // getter/setter that is already defined on the `