From e8994c74566e9056928dbd2f184b91a85893ca8f Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Wed, 27 Jul 2016 19:07:29 -0500 Subject: [PATCH 001/159] Update the build process to catch test and linting errors * Added a Webpack build process (and ES6 and module support) * Added Eslint and fixed some errors * Added an Editorconfig to enforce consistent style across the project * Moved angular to an external dependency --- .babelrc | 5 + .editorconfig | 16 + .eslintrc.yml | 14 + .gitignore | 2 +- .travis.yml | 10 +- README.md | 25 +- bower.json | 7 +- dist/ng-currency.js | 177 +---------- dist/ng-currency.js.map | 1 + dist/ng-currency.min.js | 1 - karma.conf.js | 53 ++++ package.json | 34 ++- src/ng-currency.directive.js | 180 +++++++++++ src/ng-currency.js | 179 ----------- src/ng-currency.module.js | 8 + test/.eslintrc.yml | 14 + test/index.js | 5 + test/karma.config.js | 71 ----- .../ng-currency.directive.spec.js} | 279 ++++++++---------- webpack.config.js | 35 +++ webpack.test.config.js | 22 ++ 21 files changed, 533 insertions(+), 605 deletions(-) create mode 100644 .babelrc create mode 100644 .editorconfig create mode 100644 .eslintrc.yml create mode 100644 dist/ng-currency.js.map delete mode 100644 dist/ng-currency.min.js create mode 100644 karma.conf.js create mode 100644 src/ng-currency.directive.js delete mode 100644 src/ng-currency.js create mode 100644 src/ng-currency.module.js create mode 100644 test/.eslintrc.yml create mode 100644 test/index.js delete mode 100644 test/karma.config.js rename test/{ng-currency.test.js => ng-currency/ng-currency.directive.spec.js} (69%) create mode 100644 webpack.config.js create mode 100644 webpack.test.config.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..8591b66 --- /dev/null +++ b/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": [ + "es2015" + ] +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..227e02e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.html] +indent_size = 4 + +[*.md] +trim_trailing_whitespace = false diff --git a/.eslintrc.yml b/.eslintrc.yml new file mode 100644 index 0000000..c17c128 --- /dev/null +++ b/.eslintrc.yml @@ -0,0 +1,14 @@ +extends: google +env: + browser: true + serviceworker: true + worker: true +globals: + angular: true +rules: + max-nested-callbacks: 0 + no-warning-comments: 0 + require-jsdoc: 0 + camelcase: 0 + max-len: 0 + object-curly-spacing: 0 diff --git a/.gitignore b/.gitignore index f2cf0b3..526efb4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ node_modules bower_components -test/coverage/ +coverage diff --git a/.travis.yml b/.travis.yml index 67a9873..ad341a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,11 @@ +sudo: false language: node_js node_js: - - 4.2 +- node +cache: + directories: + - node_modules +script: +- npm run build +notifications: + email: false diff --git a/README.md b/README.md index 3a51678..55d90ba 100644 --- a/README.md +++ b/README.md @@ -30,15 +30,26 @@ When you focus on input with ng-currency directive, model value will be displaye If you use angular 1.2.x please, use 0.7.x version (v0.7.0 branch). If you use angular 1.3.x or above just use 0.8.x version instead (master branch). -## Bower +## npm -You may install it via bower using - -`bower install ng-currency` +```sh +$ npm install ng-currency +``` +Then add a ` +``` +Or `require('ng-currency')` from your code. -or npm using +## bower -`npm install ng-currency` +```sh +$ bower install ng-currency +``` +Then add a ` +``` ## Example @@ -53,7 +64,7 @@ You may see it in action and play a lot using [plunker](http://plnkr.co/edit/u9m > ``` html - + ``` + Inject the `ngCurrency` module into your app: diff --git a/bower.json b/bower.json index 467f48a..c3ac95d 100644 --- a/bower.json +++ b/bower.json @@ -5,7 +5,7 @@ "Luis Aguirre " ], "description": "Directive that works in conjunction with currency filter.", - "main": "dist/ng-currency.min.js", + "main": "dist/ng-currency.js", "keywords": [ "currency", "directive", @@ -20,10 +20,7 @@ "test", "tests" ], - "dependencies": { - "angular": ">=1.3.4" - }, "devDependencies": { - "angular-mocks": ">=1.3.4" + "angular": ">=1.3.4" } } diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 75215e2..650d71e 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,175 +1,2 @@ -/* - * ng-currency - * http://alaguirre.com/ - - * Version: 0.10.1 - 2016-06-05 - * License: MIT - */ - -/*commonjs support*/ -if (typeof module !== "undefined" && typeof exports !== "undefined" && module.exports === exports){ - module.exports = 'ng-currency'; -} - -angular.module('ng-currency', []) - .directive('ngCurrency', ['$filter', '$locale', function ($filter, $locale) { - return { - require: 'ngModel', - scope: {}, - link: function (scope, element, attrs, ngModel) { - - if (attrs.ngCurrency === 'false') return; - - attrs.$observe('min', function(v) { scope.min = v; }); - attrs.$observe('max', function(v) { scope.max = v; }); - attrs.$observe('currencySymbol', function(v) { scope.currencySymbol = v; }); - attrs.$observe('ngRequired', function(v) { scope.ngRequired = v; }); - attrs.$observe('fraction', function(v) { scope.fraction = v; }); - - scope.fraction = (typeof scope.fraction !== 'undefined')?scope.fraction:2; - - function decimalRex(dChar) { - return RegExp("\\d|\\-|\\" + dChar, 'g'); - } - - function clearRex(dChar) { - return RegExp("\\-{0,1}((\\" + dChar + ")|([0-9]{1,}\\" + dChar + "?))&?[0-9]{0," + scope.fraction + "}", 'g'); - } - - function clearValue(value) { - value = String(value); - var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; - var cleared = null; - - if(value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) == -1 && - value.indexOf('.') != -1 && - scope.fraction>0) - { - dSeparator = '.'; - } - - // Replace negative pattern to minus sign (-) - var neg_dummy = $filter('currency')("-1", getCurrencySymbol(), scope.fraction); - var neg_regexp = RegExp("[0-9."+$locale.NUMBER_FORMATS.DECIMAL_SEP+$locale.NUMBER_FORMATS.GROUP_SEP+"]+"); - var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ""); - var value_dummy_txt = value.replace(neg_regexp.exec(value), ""); - - // If is negative - if(neg_dummy_txt == value_dummy_txt) { - value = '-' + neg_regexp.exec(value); - } - - if(RegExp("^-[\\s]*$", 'g').test(value)) { - value = "-0"; - } - - if(decimalRex(dSeparator).test(value)) - { - cleared = value.match(decimalRex(dSeparator)) - .join("").match(clearRex(dSeparator)); - cleared = cleared ? cleared[0].replace(dSeparator, ".") : null; - } - - return cleared; - } - - function getCurrencySymbol() { - if (angular.isDefined(scope.currencySymbol)) { - return scope.currencySymbol; - } else { - return $locale.NUMBER_FORMATS.CURRENCY_SYM; - } - } - - function reformatViewValue(){ - var formatters = ngModel.$formatters, - idx = formatters.length; - - var viewValue = ngModel.$$rawModelValue; - while (idx--) { - viewValue = formatters[idx](viewValue); - } - - ngModel.$setViewValue(viewValue); - ngModel.$render(); - } - - ngModel.$parsers.push(function (viewValue) { - var cVal = clearValue(viewValue); - //return parseFloat(cVal); - // Check for fast digitation (-. or .) - if(cVal == "." || cVal == "-.") - { - cVal = ".0"; - } - return parseFloat(cVal); - }); - - element.on("blur", function () { - ngModel.$commitViewValue(); - reformatViewValue(); - }); - - ngModel.$formatters.unshift(function (value) { - return $filter('currency')(value, getCurrencySymbol(), scope.fraction); - }); - - ngModel.$validators.min = function(cVal) { - if (!scope.ngRequired && isNaN(cVal)) { - return true; - } - if(typeof scope.min !== 'undefined') { - return cVal >= parseFloat(scope.min); - } - return true; - }; - - scope.$watch('min', function (val) { - ngModel.$validate(); - }); - - ngModel.$validators.max = function(cVal) { - if (!scope.ngRequired && isNaN(cVal)) { - return true; - } - if(typeof scope.max !== 'undefined') { - return cVal <= parseFloat(scope.max); - } - return true; - }; - - scope.$watch('max', function (val) { - ngModel.$validate(); - }); - - - ngModel.$validators.fraction = function(cVal) { - if (!!cVal && isNaN(cVal)) { - return false; - } - - return true; - }; - - scope.$on('currencyRedraw', function() { - ngModel.$commitViewValue(); - reformatViewValue(); - }); - - element.on('focus',function(){ - var viewValue = ngModel.$$rawModelValue; - - if(isNaN(viewValue) || viewValue === '' || viewValue == null) - { - viewValue = ''; - } - else - { - viewValue = parseFloat(viewValue).toFixed(scope.fraction); - } - ngModel.$setViewValue(viewValue); - ngModel.$render(); - }); - } - } - }]); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={exports:{},id:t,loaded:!1};return e[t].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=r(2),u=t(o),i=r(1),c=t(i),a=u["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",scope:{},link:function(t,o,u,i){function c(){r(function(){t.$emit("currencyRedraw")})}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+t.fraction+"}","g")}function l(r){r=String(r);var o=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&t.fraction>0&&(o=".");var i=e("currency")("-1",d(),t.fraction),c=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),l=i.replace(c.exec(i),""),s=r.replace(c.exec(r),"");return l===s&&(r="-"+c.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(o).test(r)&&(u=r.match(a(o)).join("").match(f(o)),u=u?u[0].replace(o,"."):null),u}function d(){return void 0!==t.currencySymbol?t.currencySymbol:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=i.$formatters,n=e.length,r=i.$$rawModelValue;n--;)r=e[n](r);i.$setViewValue(r),i.$render()}"false"!==u.ngCurrency&&(u.$observe("min",function(e){t.min=e,c()}),u.$observe("max",function(e){t.max=e,c()}),u.$observe("currencySymbol",function(e){t.currencySymbol=e,c()}),u.$observe("ngRequired",function(e){t.ngRequired=e,c()}),u.$observe("fraction",function(e){t.fraction=e,c()}),t.fraction=t.fraction||2,i.$parsers.push(function(e){var n=l(e);return"."!==n&&"-."!==n||(n=".0"),parseFloat(n)}),o.on("blur",function(){i.$commitViewValue(),s()}),i.$formatters.unshift(function(n){return e("currency")(n,d(),t.fraction)}),i.$validators.min=function(e){return!(t.ngRequired||!isNaN(e))||("undefined"==typeof t.min||e>=parseFloat(t.min))},t.$watch("min",function(e){i.$validate()}),i.$validators.max=function(e){return!(t.ngRequired||!isNaN(e))||("undefined"==typeof t.max||e<=parseFloat(t.max))},t.$watch("max",function(e){i.$validate()}),i.$validators.fraction=function(e){return!e||!isNaN(e)},t.$on("currencyRedraw",function(){i.$commitViewValue(),s()}),o.on("focus",function(){var e=i.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":parseFloat(e).toFixed(t.fraction),i.$setViewValue(e),i.$render()}))}}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +//# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map new file mode 100644 index 0000000..7183b0c --- /dev/null +++ b/dist/ng-currency.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 49510ac440bcb1c1ddbe","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","scope","link","element","attrs","ngModel","reloadThis","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","reformatViewValue","formatters","$formatters","idx","length","viewValue","$$rawModelValue","$setViewValue","$render","$observe","v","min","max","ngRequired","$parsers","push","cVal","parseFloat","on","$commitViewValue","unshift","$validators","isNaN","$watch","val","$validate","$on","toFixed"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,EAAAG,QAAA,YACA,kBAAAC,gBAAAC,IACAD,OAAA,0BAAAJ,GACA,gBAAAC,SACAA,QAAA,eAAAD,EAAAG,QAAA,YAEAJ,EAAA,eAAAC,EAAAD,EAAA,UACCO,KAAA,SAAAC,GACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAT,OAGA,IAAAC,GAAAS,EAAAD,IACAT,WACAW,GAAAF,EACAG,QAAA,EAUA,OANAL,GAAAE,GAAAI,KAAAZ,EAAAD,QAAAC,IAAAD,QAAAQ,GAGAP,EAAAW,QAAA,EAGAX,EAAAD,QAvBA,GAAAU,KAqCA,OATAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,GAGAR,EAAA,KDgBM,SAASP,EAAQD,EAASQ,GAE/B,YAcA,SAASS,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAZvFG,OAAOC,eAAetB,EAAS,cAC7BuB,OAAO,GE3DV,IAAAC,GAAAhB,EAAA,GFgEKiB,EAAYR,EAAuBO,GE/DxCE,EAAAlB,EAAA,GFmEKmB,EAAwBV,EAAuBS,GEjE9CE,EAASH,aAAQxB,OAAO,iBAE9B2B,GAAOC,UAAU,aAAjBF,cFuEC3B,aErEc4B,EAAOE,MFyEhB,SAAS7B,EAAQD,GAEtB,YG1Ec,SAAS+B,GAAWC,EAASC,EAASC,GACnD,OACEhC,QAAS,UACTiC,SACAC,KAAM,SAASD,EAAOE,EAASC,EAAOC,GA0BpC,QAASC,KACPN,EAAS,WACPC,EAAMM,MAAM,oBAIhB,QAASC,GAAWC,GAClB,MAAOC,QAAO,aAAeD,EAAO,KAGtC,QAASE,GAASF,GAChB,MAAOC,QAAO,eAAiBD,EAAQ,iBAAmBA,EAAQ,gBAAkBR,EAAMW,SAAW,IAAK,KAG5G,QAASC,GAAWxB,GAClBA,EAAQyB,OAAOzB,EACf,IAAI0B,GAAahB,EAAQiB,eAAeC,YACpCC,EAAU,IAEV7B,GAAM8B,QAAQpB,EAAQiB,eAAeC,mBACvC5B,EAAM8B,QAAQ,WACdlB,EAAMW,SAAW,IACjBG,EAAa,IAIf,IAAIK,GAAYtB,EAAQ,YAAY,KAAMuB,IAAqBpB,EAAMW,UACjEU,EAAaZ,OAAO,QAAUX,EAAQiB,eAAeC,YAAclB,EAAQiB,eAAeO,UAAY,MACtGC,EAAgBJ,EAAUK,QAAQH,EAAWI,KAAKN,GAAY,IAC9DO,EAAkBtC,EAAMoC,QAAQH,EAAWI,KAAKrC,GAAQ,GAiB5D,OAdImC,KAAkBG,IACpBtC,EAAQ,IAAMiC,EAAWI,KAAKrC,IAG5BqB,OAAO,YAAa,KAAKkB,KAAKvC,KAChCA,EAAQ,MAGNmB,EAAWO,GAAYa,KAAKvC,KAC9B6B,EAAU7B,EAAMwC,MAAMrB,EAAWO,IAC9Be,KAAK,IAAID,MAAMlB,EAASI,IAC3BG,EAAUA,EAAUA,EAAQ,GAAGO,QAAQV,EAAY,KAAO,MAGrDG,EAGT,QAASG,KACP,MAA6BU,UAAzB9B,EAAM+B,eACD/B,EAAM+B,eAERjC,EAAQiB,eAAeiB,aAGhC,QAASC,KAKP,IAJA,GAAIC,GAAa9B,EAAQ+B,YACrBC,EAAMF,EAAWG,OAEjBC,EAAYlC,EAAQmC,gBACjBH,KACLE,EAAYJ,EAAWE,GAAKE,EAG9BlC,GAAQoC,cAAcF,GACtBlC,EAAQqC,UA3Fe,UAArBtC,EAAMP,aAEVO,EAAMuC,SAAS,MAAO,SAASC,GAC7B3C,EAAM4C,IAAMD,EACZtC,MAEFF,EAAMuC,SAAS,MAAO,SAASC,GAC7B3C,EAAM6C,IAAMF,EACZtC,MAEFF,EAAMuC,SAAS,iBAAkB,SAASC,GACxC3C,EAAM+B,eAAiBY,EACvBtC,MAEFF,EAAMuC,SAAS,aAAc,SAASC,GACpC3C,EAAM8C,WAAaH,EACnBtC,MAEFF,EAAMuC,SAAS,WAAY,SAASC,GAClC3C,EAAMW,SAAWgC,EACjBtC,MAGFL,EAAMW,SAAWX,EAAMW,UAAY,EAuEnCP,EAAQ2C,SAASC,KAAK,SAASV,GAC7B,GAAIW,GAAOrC,EAAW0B,EAKtB,OAHa,MAATW,GAAyB,OAATA,IAClBA,EAAO,MAEFC,WAAWD,KAGpB/C,EAAQiD,GAAG,OAAQ,WACjB/C,EAAQgD,mBACRnB,MAGF7B,EAAQ+B,YAAYkB,QAAQ,SAASjE,GACnC,MAAOS,GAAQ,YAAYT,EAAOgC,IAAqBpB,EAAMW,YAG/DP,EAAQkD,YAAYV,IAAM,SAASK,GACjC,QAAKjD,EAAM8C,aAAcS,MAAMN,MAGN,mBAAdjD,GAAM4C,KACRK,GAAQC,WAAWlD,EAAM4C,OAKpC5C,EAAMwD,OAAO,MAAO,SAASC,GAC3BrD,EAAQsD,cAGVtD,EAAQkD,YAAYT,IAAM,SAASI,GACjC,QAAKjD,EAAM8C,aAAcS,MAAMN,MAGN,mBAAdjD,GAAM6C,KACRI,GAAQC,WAAWlD,EAAM6C,OAKpC7C,EAAMwD,OAAO,MAAO,SAASC,GAC3BrD,EAAQsD,cAGVtD,EAAQkD,YAAY3C,SAAW,SAASsC,GACtC,OAAIA,IAAQM,MAAMN,IAOpBjD,EAAM2D,IAAI,iBAAkB,WAC1BvD,EAAQgD,mBACRnB,MAGF/B,EAAQiD,GAAG,QAAS,WAClB,GAAIb,GAAYlC,EAAQmC,eAGtBD,GADEiB,MAAMjB,IAA4B,KAAdA,GAAkC,OAAdA,EAC9B,GAEAY,WAAWZ,GAAWsB,QAAQ5D,EAAMW,UAElDP,EAAQoC,cAAcF,GACtBlC,EAAQqC,eH3FfvD,OAAOC,eAAetB,EAAS,cAC7BuB,OAAO,IAETvB,aG/EuB+B,GHoQlB,SAAS9B,EAAQD,GI5QvBC,EAAAD,QAAAM","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t scope: {},\n\t link: function link(scope, element, attrs, ngModel) {\n\t if (attrs.ngCurrency === 'false') return;\n\t\n\t attrs.$observe('min', function (v) {\n\t scope.min = v;\n\t reloadThis();\n\t });\n\t attrs.$observe('max', function (v) {\n\t scope.max = v;\n\t reloadThis();\n\t });\n\t attrs.$observe('currencySymbol', function (v) {\n\t scope.currencySymbol = v;\n\t reloadThis();\n\t });\n\t attrs.$observe('ngRequired', function (v) {\n\t scope.ngRequired = v;\n\t reloadThis();\n\t });\n\t attrs.$observe('fraction', function (v) {\n\t scope.fraction = v;\n\t reloadThis();\n\t });\n\t\n\t scope.fraction = scope.fraction || 2;\n\t\n\t function reloadThis() {\n\t $timeout(function () {\n\t scope.$emit(\"currencyRedraw\");\n\t });\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp(\"\\\\d|\\\\-|\\\\\" + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp(\"\\\\-{0,1}((\\\\\" + dChar + \")|([0-9]{1,}\\\\\" + dChar + \"?))&?[0-9]{0,\" + scope.fraction + \"}\", 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && scope.fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')(\"-1\", getCurrencySymbol(), scope.fraction);\n\t var neg_regexp = RegExp(\"[0-9.\" + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + \"]+\");\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), \"\");\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), \"\");\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp(\"^-[\\\\s]*$\", 'g').test(value)) {\n\t value = \"-0\";\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join(\"\").match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, \".\") : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (scope.currencySymbol !== undefined) {\n\t return scope.currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function reformatViewValue() {\n\t var formatters = ngModel.$formatters;\n\t var idx = formatters.length;\n\t\n\t var viewValue = ngModel.$$rawModelValue;\n\t while (idx--) {\n\t viewValue = formatters[idx](viewValue);\n\t }\n\t\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t var cVal = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (cVal === \".\" || cVal === \"-.\") {\n\t cVal = \".0\";\n\t }\n\t return parseFloat(cVal);\n\t });\n\t\n\t element.on(\"blur\", function () {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t });\n\t\n\t ngModel.$formatters.unshift(function (value) {\n\t return $filter('currency')(value, getCurrencySymbol(), scope.fraction);\n\t });\n\t\n\t ngModel.$validators.min = function (cVal) {\n\t if (!scope.ngRequired && isNaN(cVal)) {\n\t return true;\n\t }\n\t if (typeof scope.min !== 'undefined') {\n\t return cVal >= parseFloat(scope.min);\n\t }\n\t return true;\n\t };\n\t\n\t scope.$watch('min', function (val) {\n\t ngModel.$validate();\n\t });\n\t\n\t ngModel.$validators.max = function (cVal) {\n\t if (!scope.ngRequired && isNaN(cVal)) {\n\t return true;\n\t }\n\t if (typeof scope.max !== 'undefined') {\n\t return cVal <= parseFloat(scope.max);\n\t }\n\t return true;\n\t };\n\t\n\t scope.$watch('max', function (val) {\n\t ngModel.$validate();\n\t });\n\t\n\t ngModel.$validators.fraction = function (cVal) {\n\t if (cVal && isNaN(cVal)) {\n\t return false;\n\t }\n\t\n\t return true;\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = parseFloat(viewValue).toFixed(scope.fraction);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 49510ac440bcb1c1ddbe\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n scope: {},\n link: function(scope, element, attrs, ngModel) {\n if (attrs.ngCurrency === 'false') return;\n\n attrs.$observe('min', function(v) {\n scope.min = v;\n reloadThis();\n });\n attrs.$observe('max', function(v) {\n scope.max = v;\n reloadThis();\n });\n attrs.$observe('currencySymbol', function(v) {\n scope.currencySymbol = v;\n reloadThis();\n });\n attrs.$observe('ngRequired', function(v) {\n scope.ngRequired = v;\n reloadThis();\n });\n attrs.$observe('fraction', function(v) {\n scope.fraction = v;\n reloadThis();\n });\n\n scope.fraction = scope.fraction || 2;\n\n function reloadThis() {\n $timeout(function() {\n scope.$emit(\"currencyRedraw\");\n });\n }\n\n function decimalRex(dChar) {\n return RegExp(\"\\\\d|\\\\-|\\\\\" + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp(\"\\\\-{0,1}((\\\\\" + dChar + \")|([0-9]{1,}\\\\\" + dChar + \"?))&?[0-9]{0,\" + scope.fraction + \"}\", 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n var cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n scope.fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n var neg_dummy = $filter('currency')(\"-1\", getCurrencySymbol(), scope.fraction);\n var neg_regexp = RegExp(\"[0-9.\" + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + \"]+\");\n var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), \"\");\n var value_dummy_txt = value.replace(neg_regexp.exec(value), \"\");\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp(\"^-[\\\\s]*$\", 'g').test(value)) {\n value = \"-0\";\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join(\"\").match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, \".\") : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (scope.currencySymbol !== undefined) {\n return scope.currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function reformatViewValue() {\n var formatters = ngModel.$formatters;\n var idx = formatters.length;\n\n var viewValue = ngModel.$$rawModelValue;\n while (idx--) {\n viewValue = formatters[idx](viewValue);\n }\n\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n ngModel.$parsers.push(function(viewValue) {\n var cVal = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (cVal === \".\" || cVal === \"-.\") {\n cVal = \".0\";\n }\n return parseFloat(cVal);\n });\n\n element.on(\"blur\", function() {\n ngModel.$commitViewValue();\n reformatViewValue();\n });\n\n ngModel.$formatters.unshift(function(value) {\n return $filter('currency')(value, getCurrencySymbol(), scope.fraction);\n });\n\n ngModel.$validators.min = function(cVal) {\n if (!scope.ngRequired && isNaN(cVal)) {\n return true;\n }\n if (typeof scope.min !== 'undefined') {\n return cVal >= parseFloat(scope.min);\n }\n return true;\n };\n\n scope.$watch('min', function(val) {\n ngModel.$validate();\n });\n\n ngModel.$validators.max = function(cVal) {\n if (!scope.ngRequired && isNaN(cVal)) {\n return true;\n }\n if (typeof scope.max !== 'undefined') {\n return cVal <= parseFloat(scope.max);\n }\n return true;\n };\n\n scope.$watch('max', function(val) {\n ngModel.$validate();\n });\n\n ngModel.$validators.fraction = function(cVal) {\n if (cVal && isNaN(cVal)) {\n return false;\n }\n\n return true;\n };\n\n scope.$on('currencyRedraw', function() {\n ngModel.$commitViewValue();\n reformatViewValue();\n });\n\n element.on('focus', function() {\n var viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = parseFloat(viewValue).toFixed(scope.fraction);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/ng-currency.min.js b/dist/ng-currency.min.js deleted file mode 100644 index 7d5e8a9..0000000 --- a/dist/ng-currency.min.js +++ /dev/null @@ -1 +0,0 @@ -if(typeof module!=="undefined"&&typeof exports!=="undefined"&&module.exports===exports){module.exports="ng-currency"}angular.module("ng-currency",[]).directive("ngCurrency",["$filter","$locale",function(b,a){return{require:"ngModel",scope:{},link:function(k,g,j,f){if(j.ngCurrency==="false"){return}j.$observe("min",function(l){k.min=l});j.$observe("max",function(l){k.max=l});j.$observe("currencySymbol",function(l){k.currencySymbol=l});j.$observe("ngRequired",function(l){k.ngRequired=l});j.$observe("fraction",function(l){k.fraction=l});k.fraction=(typeof k.fraction!=="undefined")?k.fraction:2;function e(l){return RegExp("\\d|\\-|\\"+l,"g")}function c(l){return RegExp("\\-{0,1}((\\"+l+")|([0-9]{1,}\\"+l+"?))&?[0-9]{0,"+k.fraction+"}","g")}function h(q){q=String(q);var m=a.NUMBER_FORMATS.DECIMAL_SEP;var l=null;if(q.indexOf(a.NUMBER_FORMATS.DECIMAL_SEP)==-1&&q.indexOf(".")!=-1&&k.fraction>0){m="."}var p=b("currency")("-1",d(),k.fraction);var o=RegExp("[0-9."+a.NUMBER_FORMATS.DECIMAL_SEP+a.NUMBER_FORMATS.GROUP_SEP+"]+");var n=p.replace(o.exec(p),"");var r=q.replace(o.exec(q),"");if(n==r){q="-"+o.exec(q)}if(RegExp("^-[\\s]*$","g").test(q)){q="-0"}if(e(m).test(q)){l=q.match(e(m)).join("").match(c(m));l=l?l[0].replace(m,"."):null}return l}function d(){if(angular.isDefined(k.currencySymbol)){return k.currencySymbol}else{return a.NUMBER_FORMATS.CURRENCY_SYM}}function i(){var m=f.$formatters,l=m.length;var n=f.$$rawModelValue;while(l--){n=m[l](n)}f.$setViewValue(n);f.$render()}f.$parsers.push(function(m){var l=h(m);if(l=="."||l=="-."){l=".0"}return parseFloat(l)});g.on("blur",function(){f.$commitViewValue();i()});f.$formatters.unshift(function(l){return b("currency")(l,d(),k.fraction)});f.$validators.min=function(l){if(!k.ngRequired&&isNaN(l)){return true}if(typeof k.min!=="undefined"){return l>=parseFloat(k.min)}return true};k.$watch("min",function(l){f.$validate()});f.$validators.max=function(l){if(!k.ngRequired&&isNaN(l)){return true}if(typeof k.max!=="undefined"){return l<=parseFloat(k.max)}return true};k.$watch("max",function(l){f.$validate()});f.$validators.fraction=function(l){if(!!l&&isNaN(l)){return false}return true};k.$on("currencyRedraw",function(){f.$commitViewValue();i()});g.on("focus",function(){var l=f.$$rawModelValue;if(isNaN(l)||l===""||l==null){l=""}else{l=parseFloat(l).toFixed(k.fraction)}f.$setViewValue(l);f.$render()})}}}]); diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..7a39249 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,53 @@ +var webpackConfig = require('./webpack.test.config.js'); + +module.exports = function(config) { + config.set({ + basePath: '', + + frameworks: [ + 'jasmine' + ], + + files: [ + 'test/index.js' + ], + + preprocessors: { + 'test/index.js': ['webpack', 'sourcemap'], + 'src/**/*.js': ['coverage'] + }, + + webpack: webpackConfig, + + webpackMiddleware: { + noInfo: true + }, + + reporters: ['mocha', 'coverage'], + + coverageReporter: { + dir: 'coverage', + reporters: [ + { type: 'text' }, + { type: 'lcovonly', subdir: '.', file: 'lcov.info' } + ] + }, + + port: 9876, + + colors: true, + + logLevel: config.LOG_INFO, + + autoWatch: true, + + browsers: ['PhantomJS'], + + captureTimeout: 60000, + browserDisconnectTimeout: 7000, + browserDisconnectTolerance: 1, + browserDisconnectNoActivityTimeout: 60000, + + singleRun: false + }); +}; diff --git a/package.json b/package.json index bd69ddc..535efcd 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ ], "description": "Directive that works in conjunction with currency filter.", "url": "https://github.com/aguirrel/ng-currency.git", - "main": "dist/ng-currency.min.js", + "main": "dist/ng-currency.js", "keywords": [ "currency", "directive", @@ -21,17 +21,33 @@ "test", "tests" ], - "dependencies": { - "angular": "~1.3" - }, "devDependencies": { + "angular": "~1.3", "angular-mocks": "~1.3", - "karma": "~0.13", - "karma-coverage": "~0.5", - "karma-jasmine": "~0.3", - "karma-phantomjs-launcher": "^1.0.1" + "babel-core": "6.11.4", + "babel-loader": "6.2.4", + "babel-preset-es2015": "6.9.0", + "eslint": "3.1.1", + "eslint-config-google": "0.6.0", + "eslint-loader": "1.4.1", + "eslint-plugin-jasmine": "^1.8.1", + "isparta-loader": "2.0.0", + "jasmine-core": "^2.4.1", + "karma": "1.1.2", + "karma-coverage": "1.1.1", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "2.0.4", + "karma-phantomjs-launcher": "1.0.1", + "karma-sourcemap-loader": "0.3.7", + "karma-webpack": "1.7.0", + "ng-annotate-loader": "0.1.1", + "phantomjs-prebuilt": "2.1.8", + "unminified-webpack-plugin": "^1.1.0", + "webpack": "1.13.1" }, "scripts": { - "test": "./node_modules/.bin/karma start test/karma.config.js --single-run --browsers PhantomJS" + "tdd": "karma start", + "test": "karma start --single-run", + "build": "webpack -p" } } diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js new file mode 100644 index 0000000..ae7a869 --- /dev/null +++ b/src/ng-currency.directive.js @@ -0,0 +1,180 @@ +/* + * ng-currency + * http://alaguirre.com/ + + * Version: 0.10.1 - 2016-06-05 + * License: MIT + */ + +export default function ngCurrency($filter, $locale, $timeout) { + return { + require: 'ngModel', + scope: {}, + link: function(scope, element, attrs, ngModel) { + if (attrs.ngCurrency === 'false') return; + + attrs.$observe('min', function(v) { + scope.min = v; + reloadThis(); + }); + attrs.$observe('max', function(v) { + scope.max = v; + reloadThis(); + }); + attrs.$observe('currencySymbol', function(v) { + scope.currencySymbol = v; + reloadThis(); + }); + attrs.$observe('ngRequired', function(v) { + scope.ngRequired = v; + reloadThis(); + }); + attrs.$observe('fraction', function(v) { + scope.fraction = v; + reloadThis(); + }); + + scope.fraction = scope.fraction || 2; + + function reloadThis() { + $timeout(function() { + scope.$emit("currencyRedraw"); + }); + } + + function decimalRex(dChar) { + return RegExp("\\d|\\-|\\" + dChar, 'g'); + } + + function clearRex(dChar) { + return RegExp("\\-{0,1}((\\" + dChar + ")|([0-9]{1,}\\" + dChar + "?))&?[0-9]{0," + scope.fraction + "}", 'g'); + } + + function clearValue(value) { + value = String(value); + var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; + var cleared = null; + + if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && + value.indexOf('.') !== -1 && + scope.fraction > 0) { + dSeparator = '.'; + } + + // Replace negative pattern to minus sign (-) + var neg_dummy = $filter('currency')("-1", getCurrencySymbol(), scope.fraction); + var neg_regexp = RegExp("[0-9." + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + "]+"); + var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ""); + var value_dummy_txt = value.replace(neg_regexp.exec(value), ""); + + // If is negative + if (neg_dummy_txt === value_dummy_txt) { + value = '-' + neg_regexp.exec(value); + } + + if (RegExp("^-[\\s]*$", 'g').test(value)) { + value = "-0"; + } + + if (decimalRex(dSeparator).test(value)) { + cleared = value.match(decimalRex(dSeparator)) + .join("").match(clearRex(dSeparator)); + cleared = cleared ? cleared[0].replace(dSeparator, ".") : null; + } + + return cleared; + } + + function getCurrencySymbol() { + if (scope.currencySymbol !== undefined) { + return scope.currencySymbol; + } + return $locale.NUMBER_FORMATS.CURRENCY_SYM; + } + + function reformatViewValue() { + var formatters = ngModel.$formatters; + var idx = formatters.length; + + var viewValue = ngModel.$$rawModelValue; + while (idx--) { + viewValue = formatters[idx](viewValue); + } + + ngModel.$setViewValue(viewValue); + ngModel.$render(); + } + + ngModel.$parsers.push(function(viewValue) { + var cVal = clearValue(viewValue); + // Check for fast digitation (-. or .) + if (cVal === "." || cVal === "-.") { + cVal = ".0"; + } + return parseFloat(cVal); + }); + + element.on("blur", function() { + ngModel.$commitViewValue(); + reformatViewValue(); + }); + + ngModel.$formatters.unshift(function(value) { + return $filter('currency')(value, getCurrencySymbol(), scope.fraction); + }); + + ngModel.$validators.min = function(cVal) { + if (!scope.ngRequired && isNaN(cVal)) { + return true; + } + if (typeof scope.min !== 'undefined') { + return cVal >= parseFloat(scope.min); + } + return true; + }; + + scope.$watch('min', function(val) { + ngModel.$validate(); + }); + + ngModel.$validators.max = function(cVal) { + if (!scope.ngRequired && isNaN(cVal)) { + return true; + } + if (typeof scope.max !== 'undefined') { + return cVal <= parseFloat(scope.max); + } + return true; + }; + + scope.$watch('max', function(val) { + ngModel.$validate(); + }); + + ngModel.$validators.fraction = function(cVal) { + if (cVal && isNaN(cVal)) { + return false; + } + + return true; + }; + + scope.$on('currencyRedraw', function() { + ngModel.$commitViewValue(); + reformatViewValue(); + }); + + element.on('focus', function() { + var viewValue = ngModel.$$rawModelValue; + + if (isNaN(viewValue) || viewValue === '' || viewValue === null) { + viewValue = ''; + } else { + viewValue = parseFloat(viewValue).toFixed(scope.fraction); + } + ngModel.$setViewValue(viewValue); + ngModel.$render(); + }); + } + }; +} diff --git a/src/ng-currency.js b/src/ng-currency.js deleted file mode 100644 index 87cdee1..0000000 --- a/src/ng-currency.js +++ /dev/null @@ -1,179 +0,0 @@ -/* - * ng-currency - * http://alaguirre.com/ - - * Version: 0.10.1 - 2016-06-05 - * License: MIT - */ - -/*commonjs support*/ -if (typeof module !== "undefined" && typeof exports !== "undefined" && module.exports === exports){ - module.exports = 'ng-currency'; -} - -angular.module('ng-currency', []) - .directive('ngCurrency', ['$filter', '$locale', '$timeout', function ($filter, $locale, $timeout) { - return { - require: 'ngModel', - scope: {}, - link: function (scope, element, attrs, ngModel) { - - if (attrs.ngCurrency === 'false') return; - - attrs.$observe('min', function(v) { scope.min = v; reloadThis(); }); - attrs.$observe('max', function(v) { scope.max = v; reloadThis(); }); - attrs.$observe('currencySymbol', function(v) { scope.currencySymbol = v; reloadThis(); }); - attrs.$observe('ngRequired', function(v) { scope.ngRequired = v; reloadThis(); }); - attrs.$observe('fraction', function(v) { scope.fraction = v; reloadThis(); }); - - scope.fraction = (typeof scope.fraction !== 'undefined')?scope.fraction:2; - - function reloadThis() { - $timeout(function () {scope.$emit("currencyRedraw")}); - } - - function decimalRex(dChar) { - return RegExp("\\d|\\-|\\" + dChar, 'g'); - } - - function clearRex(dChar) { - return RegExp("\\-{0,1}((\\" + dChar + ")|([0-9]{1,}\\" + dChar + "?))&?[0-9]{0," + scope.fraction + "}", 'g'); - } - - function clearValue(value) { - value = String(value); - var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; - var cleared = null; - - if(value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) == -1 && - value.indexOf('.') != -1 && - scope.fraction>0) - { - dSeparator = '.'; - } - - // Replace negative pattern to minus sign (-) - var neg_dummy = $filter('currency')("-1", getCurrencySymbol(), scope.fraction); - var neg_regexp = RegExp("[0-9."+$locale.NUMBER_FORMATS.DECIMAL_SEP+$locale.NUMBER_FORMATS.GROUP_SEP+"]+"); - var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ""); - var value_dummy_txt = value.replace(neg_regexp.exec(value), ""); - - // If is negative - if(neg_dummy_txt == value_dummy_txt) { - value = '-' + neg_regexp.exec(value); - } - - if(RegExp("^-[\\s]*$", 'g').test(value)) { - value = "-0"; - } - - if(decimalRex(dSeparator).test(value)) - { - cleared = value.match(decimalRex(dSeparator)) - .join("").match(clearRex(dSeparator)); - cleared = cleared ? cleared[0].replace(dSeparator, ".") : null; - } - - return cleared; - } - - function getCurrencySymbol() { - if (angular.isDefined(scope.currencySymbol)) { - return scope.currencySymbol; - } else { - return $locale.NUMBER_FORMATS.CURRENCY_SYM; - } - } - - function reformatViewValue(){ - var formatters = ngModel.$formatters, - idx = formatters.length; - - var viewValue = ngModel.$$rawModelValue; - while (idx--) { - viewValue = formatters[idx](viewValue); - } - - ngModel.$setViewValue(viewValue); - ngModel.$render(); - } - - ngModel.$parsers.push(function (viewValue) { - var cVal = clearValue(viewValue); - //return parseFloat(cVal); - // Check for fast digitation (-. or .) - if(cVal == "." || cVal == "-.") - { - cVal = ".0"; - } - return parseFloat(cVal); - }); - - element.on("blur", function () { - ngModel.$commitViewValue(); - reformatViewValue(); - }); - - ngModel.$formatters.unshift(function (value) { - return $filter('currency')(value, getCurrencySymbol(), scope.fraction); - }); - - ngModel.$validators.min = function(cVal) { - if (!scope.ngRequired && isNaN(cVal)) { - return true; - } - if(typeof scope.min !== 'undefined') { - return cVal >= parseFloat(scope.min); - } - return true; - }; - - scope.$watch('min', function (val) { - ngModel.$validate(); - }); - - ngModel.$validators.max = function(cVal) { - if (!scope.ngRequired && isNaN(cVal)) { - return true; - } - if(typeof scope.max !== 'undefined') { - return cVal <= parseFloat(scope.max); - } - return true; - }; - - scope.$watch('max', function (val) { - ngModel.$validate(); - }); - - - ngModel.$validators.fraction = function(cVal) { - if (!!cVal && isNaN(cVal)) { - return false; - } - - return true; - }; - - scope.$on('currencyRedraw', function() { - ngModel.$commitViewValue(); - reformatViewValue(); - }); - - element.on('focus',function(){ - var viewValue = ngModel.$$rawModelValue; - - if(isNaN(viewValue) || viewValue === '' || viewValue === null) - { - viewValue = ''; - } - else - { - viewValue = parseFloat(viewValue).toFixed(scope.fraction); - } - ngModel.$setViewValue(viewValue); - ngModel.$render(); - }); - } - }; - }]); diff --git a/src/ng-currency.module.js b/src/ng-currency.module.js new file mode 100644 index 0000000..1b3256f --- /dev/null +++ b/src/ng-currency.module.js @@ -0,0 +1,8 @@ +import angular from 'angular'; +import ngCurrency from './ng-currency.directive.js'; + +const module = angular.module('ng-currency', []); + +module.directive('ngCurrency', ngCurrency); + +export default module.name; diff --git a/test/.eslintrc.yml b/test/.eslintrc.yml new file mode 100644 index 0000000..5475a26 --- /dev/null +++ b/test/.eslintrc.yml @@ -0,0 +1,14 @@ +extends: google +plugins: + - jasmine +env: + jasmine: true +globals: + assert: true + expect: true +rules: + no-unused-expressions: 0 + jasmine/no-suite-callback-args: 2 + jasmine/no-suite-dupes: + - 2 + - branch diff --git a/test/index.js b/test/index.js new file mode 100644 index 0000000..e14ccf5 --- /dev/null +++ b/test/index.js @@ -0,0 +1,5 @@ +import 'angular'; +import 'angular-mocks'; + +const testsContext = require.context('.', true, /\.spec\.js$/); +testsContext.keys().forEach(testsContext); diff --git a/test/karma.config.js b/test/karma.config.js deleted file mode 100644 index d1815d8..0000000 --- a/test/karma.config.js +++ /dev/null @@ -1,71 +0,0 @@ -// Karma configuration -// Generated on Fri May 09 2014 08:30:19 GMT-0300 (ART) - -module.exports = function(config) { - config.set({ - - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - usePolling: true, - - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['jasmine'], - - - // list of files / patterns to load in the browser - files: [ - '../node_modules/angular/angular.js', - '../node_modules/angular-mocks/angular-mocks.js', - '../src/*.js', - './*.js' - ], - - - // list of files to exclude - exclude: [ - - ], - - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - '../src/*.js': ['coverage'] - }, - - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress', 'coverage'], - - - // web server port - port: 9876, - - - // enable / disable colors in the output (reporters and logs) - colors: true, - - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, - - - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['Chrome'], - - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: false - }); -}; diff --git a/test/ng-currency.test.js b/test/ng-currency/ng-currency.directive.spec.js similarity index 69% rename from test/ng-currency.test.js rename to test/ng-currency/ng-currency.directive.spec.js index fbd63bb..0800094 100644 --- a/test/ng-currency.test.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -1,90 +1,85 @@ -'use strict'; +import ngCurrency from '../../src/ng-currency.module.js'; describe('ngCurrency directive tests', function() { - var elem, - elemdefault, - scope, - elemmo, - elemfpos, - elemfpos5, - elemcurrdisabled, - elemnreq, - elemfastfraction, - elemminmaxvar, - elemdisplayzeroes, - elemnodisplayzeroes; - - beforeEach(module('ng-currency')); - - beforeEach(module('ng-currency', function($compileProvider){ - $compileProvider.directive('centsToDollars', function(){ - return { - restrict: 'A', - require: 'ngModel', - link: function (scope, elem, attrs, ngModel) { - ngModel.$parsers.push(function(viewValue){ - return Math.round(parseFloat(viewValue || 0) * 100); - }); - - ngModel.$formatters.push(function (modelValue) { - return (parseFloat(modelValue || 0) / 100).toFixed(2); - }); - } - }; - }); - })); - - beforeEach(inject(function($rootScope, $compile) { - scope = $rootScope.$new(); - elemdefault = angular.element(""); - elem = angular.element(""); - elemmo = angular.element(""); - elemfpos = angular.element(""); - elemfpos5 = angular.element(""); - elemcurrdisabled = angular.element(""); - elemnreq = angular.element(""); - elemfastfraction = angular.element(""); - elemminmaxvar = angular.element(""); - elemdisplayzeroes = angular.element(""); - elemnodisplayzeroes = angular.element(""); - })); - + var elem; + var elemdefault; + var scope; + var elemmo; + var elemfpos; + var elemfpos5; + var elemcurrdisabled; + var elemnreq; + var elemfastfraction; + var elemminmaxvar; + + beforeEach(angular.mock.module(ngCurrency)); + + beforeEach(angular.mock.module(ngCurrency, function($compileProvider) { + $compileProvider.directive('centsToDollars', function() { + return { + restrict: 'A', + require: 'ngModel', + link: function(scope, elem, attrs, ngModel) { + ngModel.$parsers.push(function(viewValue) { + return Math.round(parseFloat(viewValue || 0) * 100); + }); + + ngModel.$formatters.push(function(modelValue) { + return (parseFloat(modelValue || 0) / 100).toFixed(2); + }); + } + }; + }); + })); + + beforeEach(angular.mock.inject(function($rootScope, $compile) { + scope = $rootScope.$new(); + elemdefault = angular.element(""); + elem = angular.element(""); + elemmo = angular.element(""); + elemfpos = angular.element(""); + elemfpos5 = angular.element(""); + elemcurrdisabled = angular.element(""); + elemnreq = angular.element(""); + elemfastfraction = angular.element(""); + elemminmaxvar = angular.element(""); + })); it('should format Model float 123.45 to "$123.45" view as locale currency', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 123.45; elem = $compile(elem)(scope); scope.$digest(); expect(elem.val()).toEqual("$123.45"); - }) + }) ); it('should format Model "123.451" to "$123.45" view as locale currency', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 123.451; elem = $compile(elem)(scope); scope.$digest(); expect(elem.val()).toEqual("$123.45"); - }) + }) ); it('should format Model "123.457" to "$123.46" (round) view as locale currency', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 123.457; elem = $compile(elem)(scope); scope.$digest(); expect(elem.val()).toEqual("$123.46"); - }) + }) ); describe("when currency-symbol is declared", function() { - beforeEach(inject(function($rootScope) { + beforeEach(angular.mock.inject(function($rootScope) { scope = $rootScope.$new(); elem = angular.element(""); })); it('should format with declared symbol', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 123.45; elem = $compile(elem)(scope); scope.$digest(); @@ -93,13 +88,13 @@ describe('ngCurrency directive tests', function() { ); describe("when currency-symbol declared is empty", function() { - beforeEach(inject(function($rootScope) { + beforeEach(angular.mock.inject(function($rootScope) { scope = $rootScope.$new(); elem = angular.element(""); })); it('should format without symbol', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 123.45; elem = $compile(elem)(scope); scope.$digest(); @@ -110,27 +105,27 @@ describe('ngCurrency directive tests', function() { }); it('should set ngModel to 123.45 from string $123.45 as locale currency', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("$123.45"); elem.triggerHandler('input'); expect(scope.testModel).toEqual(123.45); - }) + }) ); it('should set ngModel to 123123.45 from string $123,123.45 as locale currency', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("$123,123.45"); elem.triggerHandler('input'); expect(scope.testModel).toEqual(123123.45); - }) + }) ); it('should set input value to $123,123.45 and Model to float 123123.45 from string 123123.45 as locale currency', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("123123.45"); @@ -138,35 +133,35 @@ describe('ngCurrency directive tests', function() { elem.triggerHandler('blur'); expect(elem.val()).toEqual("$123,123.45"); expect(scope.testModel).toEqual(123123.45); - }) + }) ); it('should trigger max error for 1999999 from string $1999999.0 as locale currency', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("$1999999.0"); elem.triggerHandler('input'); elem.triggerHandler('blur'); - elem.hasClass('ng-invalid-max') + elem.hasClass('ng-invalid-max'); expect(elem.val()).toEqual("$1,999,999.00"); - }) + }) ); it('should trigger min error for 0.01 from string $0.01 as locale currency', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("$0.01"); elem.triggerHandler('input'); elem.triggerHandler('blur'); - elem.hasClass('ng-invalid-min') + elem.hasClass('ng-invalid-min'); expect(elem.val()).toEqual("$0.01"); - }) + }) ); it('should tigger invalid max after change maxi variable', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; scope.mini = 1; scope.maxi = 10; @@ -178,11 +173,11 @@ describe('ngCurrency directive tests', function() { scope.maxi = 3; scope.$digest(); expect(elem.hasClass('ng-invalid-max')).toEqual(true); - }) + }) ); it('should tigger invalid min after change mini variable', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; scope.mini = 1; scope.maxi = 10; @@ -194,23 +189,22 @@ describe('ngCurrency directive tests', function() { scope.mini = 5; scope.$digest(); expect(elem.hasClass('ng-invalid-min')).toEqual(true); - }) + }) ); it('should trigger ng-required error', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val(""); elem.triggerHandler('input'); - elem.hasClass('ng-invalid-required') - }) + elem.hasClass('ng-invalid-required'); + }) ); describe('model value should be undefined when view value does not pass validation', function() { - it('should not set 0 value from string 0 when required min is not met', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("0"); @@ -222,7 +216,7 @@ describe('ngCurrency directive tests', function() { ); it('should not set 9999991 value from string 9999991 when required max is not met', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("9999991"); @@ -232,7 +226,6 @@ describe('ngCurrency directive tests', function() { expect(elem.val()).toEqual("$9,999,991.00"); }) ); - }); describe('when the min is set to zero or lower', function() { @@ -241,7 +234,7 @@ describe('ngCurrency directive tests', function() { }); it('should set -0 value from string - ', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("-"); @@ -250,7 +243,7 @@ describe('ngCurrency directive tests', function() { }) ); it('should set -0 value from string \'- \' ', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("- "); @@ -259,7 +252,7 @@ describe('ngCurrency directive tests', function() { }) ); it('should set -1.11 value from string -1.11', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("-1.11"); @@ -268,7 +261,7 @@ describe('ngCurrency directive tests', function() { }) ); it('should set -1.11 value from string $ -1.11', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("$ -1.11"); @@ -277,9 +270,9 @@ describe('ngCurrency directive tests', function() { }) ); }); - + it('issue #14 - should set input value to $123.45 from string 123.45 as locale currency with ng-model-options="{ updateOn:\'blur\' }"', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elemmo = $compile(elemmo)(scope); elemmo.val("$123.45"); @@ -287,11 +280,11 @@ describe('ngCurrency directive tests', function() { elemmo.triggerHandler('blur'); expect(scope.testModel).toEqual(123.45); expect(elemmo.val()).toEqual('$123.45'); - }) + }) ); - + it('issue #28 - Fast fraction - Input should not filter fast fraction notation ej: .5"', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elemmo = $compile(elemfastfraction)(scope); elemmo.val(".5"); @@ -299,11 +292,11 @@ describe('ngCurrency directive tests', function() { elemmo.triggerHandler('blur'); expect(scope.testModel).toEqual(0.5); expect(elemmo.val()).toEqual('$0.50'); - }) + }) ); it('issue #28 - Fast fraction - Input should not filter fast fraction notation ej: -.5"', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elemmo = $compile(elemfastfraction)(scope); elemmo.val("-.5"); @@ -311,61 +304,61 @@ describe('ngCurrency directive tests', function() { elemmo.triggerHandler('blur'); expect(scope.testModel).toEqual(-0.5); expect(elemmo.val()).toEqual('($0.50)'); - }) + }) ); it('Adding an optional fraction value to take advantage of the currency filter\'s third param fraction="0"', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 123.45; elem = $compile(elemfpos)(scope); scope.$digest(); expect(elem.val()).toEqual("$123"); - }) + }) ); - + it('Adding an optional fraction value to take advantage of the currency filter\'s third param fraction="5"', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 123.45678; elem = $compile(elemfpos5)(scope); scope.$digest(); expect(elem.val()).toEqual("$123.45678"); - }) + }) ); - + it('Adding an optional fraction value to take advantage of the currency filter\'s third param fraction="0" model="a"', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 'a'; elem = $compile(elemfpos)(scope); scope.$digest(); expect(elem.val()).toEqual(""); - }) + }) ); it('Disable ng-currency format', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 123.45; scope.isCurrency = false; elem = $compile(elemcurrdisabled)(scope); scope.$digest(); expect(elem.val()).toEqual("123.45"); - }) + }) ); it('Not required and not a number with max and min', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 'a'; scope.isCurrency = false; elem = $compile(elemnreq)(scope); elem.triggerHandler('input'); scope.$digest(); expect(elem.val()).toEqual(""); - }) + }) ); - describe("issue #18 - ng-currency doesn't play well with other directives when loosing focus", function(){ + describe("issue #18 - ng-currency doesn't play well with other directives when loosing focus", function() { var el; - beforeEach(inject(function($compile) { + beforeEach(angular.mock.inject(function($compile) { var template = ""; el = $compile(template)(scope); scope.modelInCents = 100; @@ -373,12 +366,12 @@ describe('ngCurrency directive tests', function() { })); it("should load the model correctly", - inject(function($compile){ + angular.mock.inject(function($compile) { expect(el.val()).toEqual('$1.00'); })); it("should update the model correctly", - inject(function($compile){ + angular.mock.inject(function($compile) { el.val("$123.45"); el.triggerHandler('input'); el.triggerHandler('blur'); @@ -387,9 +380,9 @@ describe('ngCurrency directive tests', function() { expect(el.val()).toEqual('$123.45'); })); }); - + it('New for version 0.9.1 - Original value $123.45, should set input value to 123.45 on focus, then $123.45 on blur', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("$123.45"); @@ -399,11 +392,11 @@ describe('ngCurrency directive tests', function() { elem.triggerHandler('blur'); expect(scope.testModel).toEqual(123.45); expect(elem.val()).toEqual('$123.45'); - }) + }) ); - + it('New for version 0.9.1 - Original value $123.45, should set input value to 123.45 on focus, change to 456.78, then $456.76 on blur', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("$123.45"); @@ -414,11 +407,11 @@ describe('ngCurrency directive tests', function() { elem.triggerHandler('blur'); expect(scope.testModel).toEqual(123.45); expect(elem.val()).toEqual('$123.45'); - }) + }) ); - + it('New for version 0.9.1 - Original value $123.45, should set input value to 123.45 on focus, change to $456.78, then $456.76 on blur', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("$123.45"); @@ -430,11 +423,11 @@ describe('ngCurrency directive tests', function() { elem.triggerHandler('blur'); expect(scope.testModel).toEqual(456.78); expect(elem.val()).toEqual('$456.78'); - }) + }) ); - + it('New for version 0.9.1 - Original value $123.00, should set input value to 123.00 on focus, then $123.00 on blur', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elem)(scope); elem.val("$123.00"); @@ -444,11 +437,11 @@ describe('ngCurrency directive tests', function() { elem.triggerHandler('blur'); expect(scope.testModel).toEqual(123.00); expect(elem.val()).toEqual('$123.00'); - }) + }) ); - + it('New for version 0.9.1 - Original value $0.00, should set input value to 0.00 on focus, then $0.00 on blur', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elemdefault)(scope); elem.val("$0.00"); @@ -458,11 +451,11 @@ describe('ngCurrency directive tests', function() { elem.triggerHandler('blur'); expect(scope.testModel).toEqual(0); expect(elem.val()).toEqual('$0.00'); - }) + }) ); - + it('New for version 0.9.2 - Original value $123,456, should set input value to 123456 on focus, then $123456 on blur', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; elem = $compile(elemfpos)(scope); elem.val("$123,456"); @@ -472,37 +465,11 @@ describe('ngCurrency directive tests', function() { elem.triggerHandler('blur'); expect(scope.testModel).toEqual(123456); expect(elem.val()).toEqual('$123,456'); - }) - ); - - /* it('New for version 0.9.3 - Display zeroes when display-zeroes is true', - inject(function($rootScope,$compile) { - scope.testModel = 0; - elem = $compile(elemdisplayzeroes)(scope); - elem.triggerHandler('input'); - elem.triggerHandler('focus'); - expect(elem.val()).toEqual('0.00'); - elem.triggerHandler('blur'); - expect(scope.testModel).toEqual(0); - expect(elem.val()).toEqual('$0.00'); - }) + }) ); - it('New for version 0.9.3 - Don\'t Display zeroes when display-zeroes is false', - inject(function($rootScope,$compile) { - scope.testModel = 0; - elem = $compile(elemnodisplayzeroes)(scope); - elem.triggerHandler('input'); - elem.triggerHandler('focus'); - expect(elem.val()).toEqual('0.00'); - elem.triggerHandler('blur'); - expect(scope.testModel).toEqual(0); - expect(elem.val()).toEqual(''); - }) - ); */ - it('Issue #59 - Parse a string value as a float on focus', - inject(function($rootScope,$compile) { + angular.mock.inject(function($rootScope, $compile) { scope.testModel = '1.00'; elem = $compile(elemdefault)(scope); scope.$digest(); @@ -510,6 +477,6 @@ describe('ngCurrency directive tests', function() { elem.triggerHandler('input'); elem.triggerHandler('focus'); expect(elem.val()).toEqual("1.00"); - }) + }) ); }); diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..18bf5e5 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,35 @@ +var path = require('path'); + +module.exports = { + context: path.join(__dirname, 'src'), + entry: './ng-currency.module.js', + output: { + path: path.join(__dirname, 'dist'), + filename: 'ng-currency.js', + sourceMapFilename: '[file].map', + library: 'ng-currency', + libraryTarget: 'umd', + umdNamedDefine: true + }, + externals: [{ + angular: { + root: 'angular', + commonjs2: 'angular', + commonjs: 'angular', + amd: 'angular' + } + }], + devtool: 'source-map', + module: { + preLoaders: [{ + test: /\.js$/, + exclude: /node_modules/, + loader: 'eslint' + }], + loaders: [{ + test: /\.js$/, + exclude: /node_modules/, + loader: 'ng-annotate?map=false!babel' + }] + } +}; diff --git a/webpack.test.config.js b/webpack.test.config.js new file mode 100644 index 0000000..4070786 --- /dev/null +++ b/webpack.test.config.js @@ -0,0 +1,22 @@ +module.exports = { + output: { + pathinfo: true + }, + module: { + preLoaders: [{ + test: /\.js$/, + include: /test/, + loader: 'eslint' + }, { + test: /\.js$/, + exclude: /test|node_modules/, + loader: 'isparta' + }], + loaders: [{ + test: /\.js$/, + exclude: /node_modules/, + loader: 'babel' + }] + }, + devtool: 'inline-source-map' +}; From 32e58990e704e07a1d00be84460e9fa1f39aa1c1 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Fri, 29 Jul 2016 11:53:37 -0500 Subject: [PATCH 002/159] Removed isolated scope * Removed isolated scope * Fixed a bug that caused reloadThis to get called numerous times before being attached to the DOM * Changed parseFloat to Number. parseInt and parseFloat can parse values that don't really make sense, whereas Number is more strict. e.g. 20px becomes 20 when using parseInt/parseFloat whereas 20px becomes NaN when using Number. * Added a npm script for running webpack in development mode (for testing purposes) * Disabled rules for one-var and arrow-parent * Added .eslintignore file * Moved ignore values in package.json to an npmignore file * Added regression tests for the parseFloat to Number change --- .eslintignore | 1 + .eslintrc.yml | 2 + .npmignore | 6 ++ .travis.yml | 2 +- dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- package.json | 10 +-- src/ng-currency.directive.js | 90 +++++++++---------- test/.eslintrc.yml | 3 +- .../ng-currency/ng-currency.directive.spec.js | 32 ++++--- 10 files changed, 77 insertions(+), 73 deletions(-) create mode 100644 .eslintignore create mode 100644 .npmignore diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..795d828 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +dist/**/* diff --git a/.eslintrc.yml b/.eslintrc.yml index c17c128..5d33ae5 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -12,3 +12,5 @@ rules: camelcase: 0 max-len: 0 object-curly-spacing: 0 + one-var: 0 + arrow-parens: 0 diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..3a0f453 --- /dev/null +++ b/.npmignore @@ -0,0 +1,6 @@ +**/* +!src/**/* +!dist/**/* +!CHANGELOG.md +!CONTRIBUTING.md +!README.md diff --git a/.travis.yml b/.travis.yml index ad341a8..e14763b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,6 @@ cache: directories: - node_modules script: -- npm run build +- npm run build:prod notifications: email: false diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 650d71e..7979a40 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={exports:{},id:t,loaded:!1};return e[t].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=r(2),u=t(o),i=r(1),c=t(i),a=u["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",scope:{},link:function(t,o,u,i){function c(){r(function(){t.$emit("currencyRedraw")})}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+t.fraction+"}","g")}function l(r){r=String(r);var o=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&t.fraction>0&&(o=".");var i=e("currency")("-1",d(),t.fraction),c=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),l=i.replace(c.exec(i),""),s=r.replace(c.exec(r),"");return l===s&&(r="-"+c.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(o).test(r)&&(u=r.match(a(o)).join("").match(f(o)),u=u?u[0].replace(o,"."):null),u}function d(){return void 0!==t.currencySymbol?t.currencySymbol:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=i.$formatters,n=e.length,r=i.$$rawModelValue;n--;)r=e[n](r);i.$setViewValue(r),i.$render()}"false"!==u.ngCurrency&&(u.$observe("min",function(e){t.min=e,c()}),u.$observe("max",function(e){t.max=e,c()}),u.$observe("currencySymbol",function(e){t.currencySymbol=e,c()}),u.$observe("ngRequired",function(e){t.ngRequired=e,c()}),u.$observe("fraction",function(e){t.fraction=e,c()}),t.fraction=t.fraction||2,i.$parsers.push(function(e){var n=l(e);return"."!==n&&"-."!==n||(n=".0"),parseFloat(n)}),o.on("blur",function(){i.$commitViewValue(),s()}),i.$formatters.unshift(function(n){return e("currency")(n,d(),t.fraction)}),i.$validators.min=function(e){return!(t.ngRequired||!isNaN(e))||("undefined"==typeof t.min||e>=parseFloat(t.min))},t.$watch("min",function(e){i.$validate()}),i.$validators.max=function(e){return!(t.ngRequired||!isNaN(e))||("undefined"==typeof t.max||e<=parseFloat(t.max))},t.$watch("max",function(e){i.$validate()}),i.$validators.fraction=function(e){return!e||!isNaN(e)},t.$on("currencyRedraw",function(){i.$commitViewValue(),s()}),o.on("focus",function(){var e=i.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":parseFloat(e).toFixed(t.fraction),i.$setViewValue(e),i.$render()}))}}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),o=t(u),i=r(1),c=t(i),a=o["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,o,i){function c(){$&&t.$emit("currencyRedraw")}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+g+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&g>0&&(t=".");var o=e("currency")("-1",d(),g),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=o.replace(i.exec(o),""),l=r.replace(i.exec(r),"");return c===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==m?m:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=i.$formatters,n=e.length,r=i.$$rawModelValue;n--;)r=e[n](r);i.$setViewValue(r),i.$render()}if("false"!==o.ngCurrency){var $=void 0,v=void 0,p=void 0,m=void 0,x=void 0,g=void 0;o.$observe("min",function(e){v=Number(e),i.$validate(),c()}),o.$observe("max",function(e){p=Number(e),i.$validate(),c()}),o.$observe("currencySymbol",function(e){m=e,c()}),o.$observe("ngRequired",function(e){x=e,c()}),o.$observe("fraction",function(e){g=e,c()}),g=g||2,r(function(){$=!0,c()}),i.$parsers.push(function(e){var n=l(e);return"."!==n&&"-."!==n||(n=".0"),Number(n)}),u.on("blur",function(){i.$commitViewValue(),s()}),i.$formatters.unshift(function(n){return e("currency")(n,d(),g)}),i.$validators.min=function(e){return!(x||!isNaN(e))||(!v||e>=v)},i.$validators.max=function(e){return!(x||!isNaN(e))||(!p||e<=p)},i.$validators.fraction=function(e){return!e||!isNaN(e)},t.$on("currencyRedraw",function(){i.$commitViewValue(),s()}),u.on("focus",function(){var e=i.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(g),i.$setViewValue(e),i.$render()})}}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 7183b0c..44298f7 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 49510ac440bcb1c1ddbe","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","scope","link","element","attrs","ngModel","reloadThis","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","reformatViewValue","formatters","$formatters","idx","length","viewValue","$$rawModelValue","$setViewValue","$render","$observe","v","min","max","ngRequired","$parsers","push","cVal","parseFloat","on","$commitViewValue","unshift","$validators","isNaN","$watch","val","$validate","$on","toFixed"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t scope: {},\n\t link: function link(scope, element, attrs, ngModel) {\n\t if (attrs.ngCurrency === 'false') return;\n\t\n\t attrs.$observe('min', function (v) {\n\t scope.min = v;\n\t reloadThis();\n\t });\n\t attrs.$observe('max', function (v) {\n\t scope.max = v;\n\t reloadThis();\n\t });\n\t attrs.$observe('currencySymbol', function (v) {\n\t scope.currencySymbol = v;\n\t reloadThis();\n\t });\n\t attrs.$observe('ngRequired', function (v) {\n\t scope.ngRequired = v;\n\t reloadThis();\n\t });\n\t attrs.$observe('fraction', function (v) {\n\t scope.fraction = v;\n\t reloadThis();\n\t });\n\t\n\t scope.fraction = scope.fraction || 2;\n\t\n\t function reloadThis() {\n\t $timeout(function () {\n\t scope.$emit(\"currencyRedraw\");\n\t });\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp(\"\\\\d|\\\\-|\\\\\" + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp(\"\\\\-{0,1}((\\\\\" + dChar + \")|([0-9]{1,}\\\\\" + dChar + \"?))&?[0-9]{0,\" + scope.fraction + \"}\", 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && scope.fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')(\"-1\", getCurrencySymbol(), scope.fraction);\n\t var neg_regexp = RegExp(\"[0-9.\" + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + \"]+\");\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), \"\");\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), \"\");\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp(\"^-[\\\\s]*$\", 'g').test(value)) {\n\t value = \"-0\";\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join(\"\").match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, \".\") : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (scope.currencySymbol !== undefined) {\n\t return scope.currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function reformatViewValue() {\n\t var formatters = ngModel.$formatters;\n\t var idx = formatters.length;\n\t\n\t var viewValue = ngModel.$$rawModelValue;\n\t while (idx--) {\n\t viewValue = formatters[idx](viewValue);\n\t }\n\t\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t var cVal = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (cVal === \".\" || cVal === \"-.\") {\n\t cVal = \".0\";\n\t }\n\t return parseFloat(cVal);\n\t });\n\t\n\t element.on(\"blur\", function () {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t });\n\t\n\t ngModel.$formatters.unshift(function (value) {\n\t return $filter('currency')(value, getCurrencySymbol(), scope.fraction);\n\t });\n\t\n\t ngModel.$validators.min = function (cVal) {\n\t if (!scope.ngRequired && isNaN(cVal)) {\n\t return true;\n\t }\n\t if (typeof scope.min !== 'undefined') {\n\t return cVal >= parseFloat(scope.min);\n\t }\n\t return true;\n\t };\n\t\n\t scope.$watch('min', function (val) {\n\t ngModel.$validate();\n\t });\n\t\n\t ngModel.$validators.max = function (cVal) {\n\t if (!scope.ngRequired && isNaN(cVal)) {\n\t return true;\n\t }\n\t if (typeof scope.max !== 'undefined') {\n\t return cVal <= parseFloat(scope.max);\n\t }\n\t return true;\n\t };\n\t\n\t scope.$watch('max', function (val) {\n\t ngModel.$validate();\n\t });\n\t\n\t ngModel.$validators.fraction = function (cVal) {\n\t if (cVal && isNaN(cVal)) {\n\t return false;\n\t }\n\t\n\t return true;\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = parseFloat(viewValue).toFixed(scope.fraction);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 49510ac440bcb1c1ddbe\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n scope: {},\n link: function(scope, element, attrs, ngModel) {\n if (attrs.ngCurrency === 'false') return;\n\n attrs.$observe('min', function(v) {\n scope.min = v;\n reloadThis();\n });\n attrs.$observe('max', function(v) {\n scope.max = v;\n reloadThis();\n });\n attrs.$observe('currencySymbol', function(v) {\n scope.currencySymbol = v;\n reloadThis();\n });\n attrs.$observe('ngRequired', function(v) {\n scope.ngRequired = v;\n reloadThis();\n });\n attrs.$observe('fraction', function(v) {\n scope.fraction = v;\n reloadThis();\n });\n\n scope.fraction = scope.fraction || 2;\n\n function reloadThis() {\n $timeout(function() {\n scope.$emit(\"currencyRedraw\");\n });\n }\n\n function decimalRex(dChar) {\n return RegExp(\"\\\\d|\\\\-|\\\\\" + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp(\"\\\\-{0,1}((\\\\\" + dChar + \")|([0-9]{1,}\\\\\" + dChar + \"?))&?[0-9]{0,\" + scope.fraction + \"}\", 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n var cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n scope.fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n var neg_dummy = $filter('currency')(\"-1\", getCurrencySymbol(), scope.fraction);\n var neg_regexp = RegExp(\"[0-9.\" + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + \"]+\");\n var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), \"\");\n var value_dummy_txt = value.replace(neg_regexp.exec(value), \"\");\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp(\"^-[\\\\s]*$\", 'g').test(value)) {\n value = \"-0\";\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join(\"\").match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, \".\") : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (scope.currencySymbol !== undefined) {\n return scope.currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function reformatViewValue() {\n var formatters = ngModel.$formatters;\n var idx = formatters.length;\n\n var viewValue = ngModel.$$rawModelValue;\n while (idx--) {\n viewValue = formatters[idx](viewValue);\n }\n\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n ngModel.$parsers.push(function(viewValue) {\n var cVal = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (cVal === \".\" || cVal === \"-.\") {\n cVal = \".0\";\n }\n return parseFloat(cVal);\n });\n\n element.on(\"blur\", function() {\n ngModel.$commitViewValue();\n reformatViewValue();\n });\n\n ngModel.$formatters.unshift(function(value) {\n return $filter('currency')(value, getCurrencySymbol(), scope.fraction);\n });\n\n ngModel.$validators.min = function(cVal) {\n if (!scope.ngRequired && isNaN(cVal)) {\n return true;\n }\n if (typeof scope.min !== 'undefined') {\n return cVal >= parseFloat(scope.min);\n }\n return true;\n };\n\n scope.$watch('min', function(val) {\n ngModel.$validate();\n });\n\n ngModel.$validators.max = function(cVal) {\n if (!scope.ngRequired && isNaN(cVal)) {\n return true;\n }\n if (typeof scope.max !== 'undefined') {\n return cVal <= parseFloat(scope.max);\n }\n return true;\n };\n\n scope.$watch('max', function(val) {\n ngModel.$validate();\n });\n\n ngModel.$validators.fraction = function(cVal) {\n if (cVal && isNaN(cVal)) {\n return false;\n }\n\n return true;\n };\n\n scope.$on('currencyRedraw', function() {\n ngModel.$commitViewValue();\n reformatViewValue();\n });\n\n element.on('focus', function() {\n var viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = parseFloat(viewValue).toFixed(scope.fraction);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap a039a0c76350a886b635","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","reloadThis","initialized","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","reformatViewValue","formatters","$formatters","idx","length","viewValue","$$rawModelValue","$setViewValue","$render","min","max","ngRequired","$observe","Number","$validate","$parsers","push","cVal","on","$commitViewValue","unshift","$validators","isNaN","$on","toFixed","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t if (attrs.ngCurrency === 'false') return;\n\t var initialized = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0,\n\t fraction = void 0;\n\t\n\t attrs.$observe('min', function (value) {\n\t min = Number(value);\n\t ngModel.$validate();\n\t reloadThis();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = Number(value);\n\t ngModel.$validate();\n\t reloadThis();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reloadThis();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t reloadThis();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value;\n\t reloadThis();\n\t });\n\t\n\t fraction = fraction || 2;\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t reloadThis();\n\t });\n\t\n\t function reloadThis() {\n\t if (initialized) {\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp(\"\\\\d|\\\\-|\\\\\" + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp(\"\\\\-{0,1}((\\\\\" + dChar + \")|([0-9]{1,}\\\\\" + dChar + \"?))&?[0-9]{0,\" + fraction + \"}\", 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')(\"-1\", getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp(\"[0-9.\" + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + \"]+\");\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), \"\");\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), \"\");\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp(\"^-[\\\\s]*$\", 'g').test(value)) {\n\t value = \"-0\";\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join(\"\").match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, \".\") : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function reformatViewValue() {\n\t var formatters = ngModel.$formatters;\n\t var idx = formatters.length;\n\t\n\t var viewValue = ngModel.$$rawModelValue;\n\t while (idx--) {\n\t viewValue = formatters[idx](viewValue);\n\t }\n\t\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t var cVal = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (cVal === \".\" || cVal === \"-.\") {\n\t cVal = \".0\";\n\t }\n\t return Number(cVal);\n\t });\n\t\n\t element.on(\"blur\", function () {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t });\n\t\n\t ngModel.$formatters.unshift(function (value) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !min || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !max || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap a039a0c76350a886b635\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n if (attrs.ngCurrency === 'false') return;\n let initialized, min, max, currencySymbol, ngRequired, fraction;\n\n attrs.$observe('min', (value) => {\n min = Number(value);\n ngModel.$validate();\n reloadThis();\n });\n attrs.$observe('max', (value) => {\n max = Number(value);\n ngModel.$validate();\n reloadThis();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reloadThis();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n reloadThis();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value;\n reloadThis();\n });\n\n fraction = fraction || 2;\n\n $timeout(() => {\n initialized = true;\n reloadThis();\n });\n\n function reloadThis() {\n if (initialized) {\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp(\"\\\\d|\\\\-|\\\\\" + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp(\"\\\\-{0,1}((\\\\\" + dChar + \")|([0-9]{1,}\\\\\" + dChar + \"?))&?[0-9]{0,\" + fraction + \"}\", 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n var cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n var neg_dummy = $filter('currency')(\"-1\", getCurrencySymbol(), fraction);\n var neg_regexp = RegExp(\"[0-9.\" + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + \"]+\");\n var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), \"\");\n var value_dummy_txt = value.replace(neg_regexp.exec(value), \"\");\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp(\"^-[\\\\s]*$\", 'g').test(value)) {\n value = \"-0\";\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join(\"\").match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, \".\") : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function reformatViewValue() {\n var formatters = ngModel.$formatters;\n var idx = formatters.length;\n\n var viewValue = ngModel.$$rawModelValue;\n while (idx--) {\n viewValue = formatters[idx](viewValue);\n }\n\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n ngModel.$parsers.push(function(viewValue) {\n var cVal = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (cVal === \".\" || cVal === \"-.\") {\n cVal = \".0\";\n }\n return Number(cVal);\n });\n\n element.on(\"blur\", function() {\n ngModel.$commitViewValue();\n reformatViewValue();\n });\n\n ngModel.$formatters.unshift(function(value) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n });\n\n ngModel.$validators.min = function(value) {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !min || value >= min;\n };\n\n ngModel.$validators.max = function(value) {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !max || value <= max;\n };\n\n ngModel.$validators.fraction = function(value) {\n return !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', function() {\n ngModel.$commitViewValue();\n reformatViewValue();\n });\n\n element.on('focus', function() {\n var viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 535efcd..339354a 100644 --- a/package.json +++ b/package.json @@ -14,13 +14,6 @@ ], "license": "MIT", "homepage": "http://alaguirre.com", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], "devDependencies": { "angular": "~1.3", "angular-mocks": "~1.3", @@ -48,6 +41,7 @@ "scripts": { "tdd": "karma start", "test": "karma start --single-run", - "build": "webpack -p" + "build:dev": "webpack -d", + "build:prod": "webpack -p" } } diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index ae7a869..428eedd 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -6,40 +6,48 @@ * License: MIT */ +/* @ngInject */ export default function ngCurrency($filter, $locale, $timeout) { return { require: 'ngModel', - scope: {}, - link: function(scope, element, attrs, ngModel) { + link: (scope, element, attrs, ngModel) => { if (attrs.ngCurrency === 'false') return; + let initialized, min, max, currencySymbol, ngRequired, fraction; - attrs.$observe('min', function(v) { - scope.min = v; + attrs.$observe('min', (value) => { + min = Number(value); + ngModel.$validate(); reloadThis(); }); - attrs.$observe('max', function(v) { - scope.max = v; + attrs.$observe('max', (value) => { + max = Number(value); + ngModel.$validate(); reloadThis(); }); - attrs.$observe('currencySymbol', function(v) { - scope.currencySymbol = v; + attrs.$observe('currencySymbol', (value) => { + currencySymbol = value; reloadThis(); }); - attrs.$observe('ngRequired', function(v) { - scope.ngRequired = v; + attrs.$observe('ngRequired', (value) => { + ngRequired = value; reloadThis(); }); - attrs.$observe('fraction', function(v) { - scope.fraction = v; + attrs.$observe('fraction', (value) => { + fraction = value; reloadThis(); }); - scope.fraction = scope.fraction || 2; + fraction = fraction || 2; + + $timeout(() => { + initialized = true; + reloadThis(); + }); function reloadThis() { - $timeout(function() { - scope.$emit("currencyRedraw"); - }); + if (initialized) { + scope.$emit('currencyRedraw'); + } } function decimalRex(dChar) { @@ -47,7 +55,7 @@ export default function ngCurrency($filter, $locale, $timeout) { } function clearRex(dChar) { - return RegExp("\\-{0,1}((\\" + dChar + ")|([0-9]{1,}\\" + dChar + "?))&?[0-9]{0," + scope.fraction + "}", 'g'); + return RegExp("\\-{0,1}((\\" + dChar + ")|([0-9]{1,}\\" + dChar + "?))&?[0-9]{0," + fraction + "}", 'g'); } function clearValue(value) { @@ -57,12 +65,12 @@ export default function ngCurrency($filter, $locale, $timeout) { if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && - scope.fraction > 0) { + fraction > 0) { dSeparator = '.'; } // Replace negative pattern to minus sign (-) - var neg_dummy = $filter('currency')("-1", getCurrencySymbol(), scope.fraction); + var neg_dummy = $filter('currency')("-1", getCurrencySymbol(), fraction); var neg_regexp = RegExp("[0-9." + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + "]+"); var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ""); var value_dummy_txt = value.replace(neg_regexp.exec(value), ""); @@ -86,8 +94,8 @@ export default function ngCurrency($filter, $locale, $timeout) { } function getCurrencySymbol() { - if (scope.currencySymbol !== undefined) { - return scope.currencySymbol; + if (currencySymbol !== undefined) { + return currencySymbol; } return $locale.NUMBER_FORMATS.CURRENCY_SYM; } @@ -111,7 +119,7 @@ export default function ngCurrency($filter, $locale, $timeout) { if (cVal === "." || cVal === "-.") { cVal = ".0"; } - return parseFloat(cVal); + return Number(cVal); }); element.on("blur", function() { @@ -120,43 +128,25 @@ export default function ngCurrency($filter, $locale, $timeout) { }); ngModel.$formatters.unshift(function(value) { - return $filter('currency')(value, getCurrencySymbol(), scope.fraction); + return $filter('currency')(value, getCurrencySymbol(), fraction); }); - ngModel.$validators.min = function(cVal) { - if (!scope.ngRequired && isNaN(cVal)) { + ngModel.$validators.min = function(value) { + if (!ngRequired && isNaN(value)) { return true; } - if (typeof scope.min !== 'undefined') { - return cVal >= parseFloat(scope.min); - } - return true; + return !min || value >= min; }; - scope.$watch('min', function(val) { - ngModel.$validate(); - }); - - ngModel.$validators.max = function(cVal) { - if (!scope.ngRequired && isNaN(cVal)) { + ngModel.$validators.max = function(value) { + if (!ngRequired && isNaN(value)) { return true; } - if (typeof scope.max !== 'undefined') { - return cVal <= parseFloat(scope.max); - } - return true; + return !max || value <= max; }; - scope.$watch('max', function(val) { - ngModel.$validate(); - }); - - ngModel.$validators.fraction = function(cVal) { - if (cVal && isNaN(cVal)) { - return false; - } - - return true; + ngModel.$validators.fraction = function(value) { + return !value || !isNaN(value); }; scope.$on('currencyRedraw', function() { @@ -170,7 +160,7 @@ export default function ngCurrency($filter, $locale, $timeout) { if (isNaN(viewValue) || viewValue === '' || viewValue === null) { viewValue = ''; } else { - viewValue = parseFloat(viewValue).toFixed(scope.fraction); + viewValue = Number(viewValue).toFixed(fraction); } ngModel.$setViewValue(viewValue); ngModel.$render(); diff --git a/test/.eslintrc.yml b/test/.eslintrc.yml index 5475a26..158cc84 100644 --- a/test/.eslintrc.yml +++ b/test/.eslintrc.yml @@ -1,4 +1,4 @@ -extends: google +extends: ../.eslintrc.yml plugins: - jasmine env: @@ -7,7 +7,6 @@ globals: assert: true expect: true rules: - no-unused-expressions: 0 jasmine/no-suite-callback-args: 2 jasmine/no-suite-dupes: - 2 diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index 0800094..9126806 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -1,16 +1,7 @@ import ngCurrency from '../../src/ng-currency.module.js'; describe('ngCurrency directive tests', function() { - var elem; - var elemdefault; - var scope; - var elemmo; - var elemfpos; - var elemfpos5; - var elemcurrdisabled; - var elemnreq; - var elemfastfraction; - var elemminmaxvar; + let elem, elemdefault, scope, elemmo, elemfpos, elemfpos5, elemcurrdisabled, elemnreq, elemfastfraction, elemminmaxvar; beforeEach(angular.mock.module(ngCurrency)); @@ -19,6 +10,7 @@ describe('ngCurrency directive tests', function() { return { restrict: 'A', require: 'ngModel', + scope: {}, link: function(scope, elem, attrs, ngModel) { ngModel.$parsers.push(function(viewValue) { return Math.round(parseFloat(viewValue || 0) * 100); @@ -176,6 +168,26 @@ describe('ngCurrency directive tests', function() { }) ); + it('should do nothing when max value is not a valid number', + angular.mock.inject(function($rootScope, $compile) { + elem = $compile(elemminmaxvar)(scope); + scope.testModel = 4; + scope.maxi = '3px'; + scope.$digest(); + expect(elem.hasClass('ng-valid-max')).toEqual(true); + }) + ); + + it('should do nothing when min value is not a valid number', + angular.mock.inject(function($rootScope, $compile) { + elem = $compile(elemminmaxvar)(scope); + scope.testModel = 4; + scope.mini = '5px'; + scope.$digest(); + expect(elem.hasClass('ng-valid-min')).toEqual(true); + }) + ); + it('should tigger invalid min after change mini variable', angular.mock.inject(function($rootScope, $compile) { scope.testModel = 0; From b90dfe8e6d9d9a29468ebb484803ccc7e80f0127 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Sat, 30 Jul 2016 14:59:34 -0500 Subject: [PATCH 003/159] Reduced the amount of duplication in the Unit Tests * Refactored tests to prevent duplicate and limit the number of templates * Migrated html templates outside of the test file * ngCurrency now supports being dynamically disabled * Added a eslint rule to require single quotes rather then double quotes * Added gitattributes file to fix EOL eslint issues on Windows * Fixed a bug which broke setting the min or max to zero --- .eslintrc.yml | 5 + .gitattributes | 5 + dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- package.json | 2 +- src/ng-currency.directive.js | 120 +-- .../ng-currency/ng-currency.directive.spec.js | 757 +++++++----------- .../templates/cents-to-dollars.html | 1 + test/ng-currency/templates/defaults.html | 1 + test/ng-currency/templates/variables.html | 8 + webpack.test.config.js | 4 + 11 files changed, 397 insertions(+), 510 deletions(-) create mode 100644 .gitattributes create mode 100644 test/ng-currency/templates/cents-to-dollars.html create mode 100644 test/ng-currency/templates/defaults.html create mode 100644 test/ng-currency/templates/variables.html diff --git a/.eslintrc.yml b/.eslintrc.yml index 5d33ae5..e1c1da4 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -6,6 +6,11 @@ env: globals: angular: true rules: + # Rules we want to add + quotes: + - 2 + - single + # Rules we want to ignore max-nested-callbacks: 0 no-warning-comments: 0 require-jsdoc: 0 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..b7ca95b --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# JS files must always use LF for tools to work +*.js eol=lf diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 7979a40..7e1619d 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),o=t(u),i=r(1),c=t(i),a=o["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,o,i){function c(){$&&t.$emit("currencyRedraw")}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+g+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&g>0&&(t=".");var o=e("currency")("-1",d(),g),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=o.replace(i.exec(o),""),l=r.replace(i.exec(r),"");return c===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==m?m:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=i.$formatters,n=e.length,r=i.$$rawModelValue;n--;)r=e[n](r);i.$setViewValue(r),i.$render()}if("false"!==o.ngCurrency){var $=void 0,v=void 0,p=void 0,m=void 0,x=void 0,g=void 0;o.$observe("min",function(e){v=Number(e),i.$validate(),c()}),o.$observe("max",function(e){p=Number(e),i.$validate(),c()}),o.$observe("currencySymbol",function(e){m=e,c()}),o.$observe("ngRequired",function(e){x=e,c()}),o.$observe("fraction",function(e){g=e,c()}),g=g||2,r(function(){$=!0,c()}),i.$parsers.push(function(e){var n=l(e);return"."!==n&&"-."!==n||(n=".0"),Number(n)}),u.on("blur",function(){i.$commitViewValue(),s()}),i.$formatters.unshift(function(n){return e("currency")(n,d(),g)}),i.$validators.min=function(e){return!(x||!isNaN(e))||(!v||e>=v)},i.$validators.max=function(e){return!(x||!isNaN(e))||(!p||e<=p)},i.$validators.fraction=function(e){return!e||!isNaN(e)},t.$on("currencyRedraw",function(){i.$commitViewValue(),s()}),u.on("focus",function(){var e=i.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(g),i.$setViewValue(e),i.$render()})}}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),o=t(u),i=r(1),c=t(i),a=o["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,o,i){function c(){v&&(i.$validate(),t.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+g+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&g>0&&(t=".");var o=e("currency")("-1",d(),g),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=o.replace(i.exec(o),""),l=r.replace(i.exec(r),"");return c===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==m?m:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=i.$$rawModelValue,n=i.$formatters.length-1;n>=0;n--)e=i.$formatters[n](e);i.$setViewValue(e),i.$render()}var v=void 0,$=void 0,p=void 0,m=void 0,x=void 0,N=!0,g=2;o.$observe("ngCurrency",function(e){N="false"!==e,c()}),o.$observe("min",function(e){$=e?Number(e):void 0,c()}),o.$observe("max",function(e){p=e?Number(e):void 0,c()}),o.$observe("currencySymbol",function(e){m=e,c()}),o.$observe("ngRequired",function(e){x=e,c()}),o.$observe("fraction",function(e){g=e||2,c()}),r(function(){v=!0,c()}),i.$parsers.push(function(e){if(N){var n=l(e);return"."!==n&&"-."!==n||(n=".0"),Number(n)}return e}),i.$formatters.push(function(n){return N?e("currency")(n,d(),g):n}),i.$validators.min=function(e){return!(x||!isNaN(e))||(!N||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},i.$validators.max=function(e){return!(x||!isNaN(e))||(!N||[void 0,null].indexOf(p)!==-1||isNaN(p)||e<=p)},i.$validators.fraction=function(e){return!N||!e||!isNaN(e)},t.$on("currencyRedraw",function(){v&&(i.$commitViewValue(),s())}),u.on("focus",function(){var e=i.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(g),i.$setViewValue(e),i.$render()}),u.on("blur",function(){i.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 44298f7..2cd20cb 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap a039a0c76350a886b635","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","reloadThis","initialized","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","reformatViewValue","formatters","$formatters","idx","length","viewValue","$$rawModelValue","$setViewValue","$render","min","max","ngRequired","$observe","Number","$validate","$parsers","push","cVal","on","$commitViewValue","unshift","$validators","isNaN","$on","toFixed","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t if (attrs.ngCurrency === 'false') return;\n\t var initialized = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0,\n\t fraction = void 0;\n\t\n\t attrs.$observe('min', function (value) {\n\t min = Number(value);\n\t ngModel.$validate();\n\t reloadThis();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = Number(value);\n\t ngModel.$validate();\n\t reloadThis();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reloadThis();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t reloadThis();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value;\n\t reloadThis();\n\t });\n\t\n\t fraction = fraction || 2;\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t reloadThis();\n\t });\n\t\n\t function reloadThis() {\n\t if (initialized) {\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp(\"\\\\d|\\\\-|\\\\\" + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp(\"\\\\-{0,1}((\\\\\" + dChar + \")|([0-9]{1,}\\\\\" + dChar + \"?))&?[0-9]{0,\" + fraction + \"}\", 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')(\"-1\", getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp(\"[0-9.\" + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + \"]+\");\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), \"\");\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), \"\");\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp(\"^-[\\\\s]*$\", 'g').test(value)) {\n\t value = \"-0\";\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join(\"\").match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, \".\") : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function reformatViewValue() {\n\t var formatters = ngModel.$formatters;\n\t var idx = formatters.length;\n\t\n\t var viewValue = ngModel.$$rawModelValue;\n\t while (idx--) {\n\t viewValue = formatters[idx](viewValue);\n\t }\n\t\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t var cVal = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (cVal === \".\" || cVal === \"-.\") {\n\t cVal = \".0\";\n\t }\n\t return Number(cVal);\n\t });\n\t\n\t element.on(\"blur\", function () {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t });\n\t\n\t ngModel.$formatters.unshift(function (value) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !min || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !max || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap a039a0c76350a886b635\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n if (attrs.ngCurrency === 'false') return;\n let initialized, min, max, currencySymbol, ngRequired, fraction;\n\n attrs.$observe('min', (value) => {\n min = Number(value);\n ngModel.$validate();\n reloadThis();\n });\n attrs.$observe('max', (value) => {\n max = Number(value);\n ngModel.$validate();\n reloadThis();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reloadThis();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n reloadThis();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value;\n reloadThis();\n });\n\n fraction = fraction || 2;\n\n $timeout(() => {\n initialized = true;\n reloadThis();\n });\n\n function reloadThis() {\n if (initialized) {\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp(\"\\\\d|\\\\-|\\\\\" + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp(\"\\\\-{0,1}((\\\\\" + dChar + \")|([0-9]{1,}\\\\\" + dChar + \"?))&?[0-9]{0,\" + fraction + \"}\", 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n var cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n var neg_dummy = $filter('currency')(\"-1\", getCurrencySymbol(), fraction);\n var neg_regexp = RegExp(\"[0-9.\" + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + \"]+\");\n var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), \"\");\n var value_dummy_txt = value.replace(neg_regexp.exec(value), \"\");\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp(\"^-[\\\\s]*$\", 'g').test(value)) {\n value = \"-0\";\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join(\"\").match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, \".\") : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function reformatViewValue() {\n var formatters = ngModel.$formatters;\n var idx = formatters.length;\n\n var viewValue = ngModel.$$rawModelValue;\n while (idx--) {\n viewValue = formatters[idx](viewValue);\n }\n\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n ngModel.$parsers.push(function(viewValue) {\n var cVal = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (cVal === \".\" || cVal === \"-.\") {\n cVal = \".0\";\n }\n return Number(cVal);\n });\n\n element.on(\"blur\", function() {\n ngModel.$commitViewValue();\n reformatViewValue();\n });\n\n ngModel.$formatters.unshift(function(value) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n });\n\n ngModel.$validators.min = function(value) {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !min || value >= min;\n };\n\n ngModel.$validators.max = function(value) {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !max || value <= max;\n };\n\n ngModel.$validators.fraction = function(value) {\n return !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', function() {\n ngModel.$commitViewValue();\n reformatViewValue();\n });\n\n element.on('focus', function() {\n var viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 2c6df34ff34d6d6af22c","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","reformatViewValue","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","min","max","ngRequired","active","$observe","Number","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t refresh();\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function reformatViewValue() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$formatters.push(function (value) {\n\t if (active) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 2c6df34ff34d6d6af22c\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n refresh();\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n var cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function reformatViewValue() {\n var viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$formatters.push((value) => {\n if (active) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n reformatViewValue();\n }\n });\n\n element.on('focus', () => {\n var viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n reformatViewValue();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 339354a..61fa944 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "eslint-config-google": "0.6.0", "eslint-loader": "1.4.1", "eslint-plugin-jasmine": "^1.8.1", + "html-loader": "^0.4.3", "isparta-loader": "2.0.0", "jasmine-core": "^2.4.1", "karma": "1.1.2", @@ -35,7 +36,6 @@ "karma-webpack": "1.7.0", "ng-annotate-loader": "0.1.1", "phantomjs-prebuilt": "2.1.8", - "unminified-webpack-plugin": "^1.1.0", "webpack": "1.13.1" }, "scripts": { diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 428eedd..124c921 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -11,51 +11,53 @@ export default function ngCurrency($filter, $locale, $timeout) { return { require: 'ngModel', link: (scope, element, attrs, ngModel) => { - if (attrs.ngCurrency === 'false') return; - let initialized, min, max, currencySymbol, ngRequired, fraction; + let initialized, min, max, currencySymbol, ngRequired; + let active = true; + let fraction = 2; + attrs.$observe('ngCurrency', (value) => { + active = (value !== 'false'); + refresh(); + }); attrs.$observe('min', (value) => { - min = Number(value); - ngModel.$validate(); - reloadThis(); + min = value ? Number(value) : undefined; + refresh(); }); attrs.$observe('max', (value) => { - max = Number(value); - ngModel.$validate(); - reloadThis(); + max = value ? Number(value) : undefined; + refresh(); }); attrs.$observe('currencySymbol', (value) => { currencySymbol = value; - reloadThis(); + refresh(); }); attrs.$observe('ngRequired', (value) => { ngRequired = value; - reloadThis(); + refresh(); }); attrs.$observe('fraction', (value) => { - fraction = value; - reloadThis(); + fraction = value || 2; + refresh(); }); - fraction = fraction || 2; - $timeout(() => { initialized = true; - reloadThis(); + refresh(); }); - function reloadThis() { + function refresh() { if (initialized) { + ngModel.$validate(); scope.$emit('currencyRedraw'); } } function decimalRex(dChar) { - return RegExp("\\d|\\-|\\" + dChar, 'g'); + return RegExp('\\d|\\-|\\' + dChar, 'g'); } function clearRex(dChar) { - return RegExp("\\-{0,1}((\\" + dChar + ")|([0-9]{1,}\\" + dChar + "?))&?[0-9]{0," + fraction + "}", 'g'); + return RegExp('\\-{0,1}((\\' + dChar + ')|([0-9]{1,}\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g'); } function clearValue(value) { @@ -70,24 +72,24 @@ export default function ngCurrency($filter, $locale, $timeout) { } // Replace negative pattern to minus sign (-) - var neg_dummy = $filter('currency')("-1", getCurrencySymbol(), fraction); - var neg_regexp = RegExp("[0-9." + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + "]+"); - var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ""); - var value_dummy_txt = value.replace(neg_regexp.exec(value), ""); + var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction); + var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); + var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); + var value_dummy_txt = value.replace(neg_regexp.exec(value), ''); // If is negative if (neg_dummy_txt === value_dummy_txt) { value = '-' + neg_regexp.exec(value); } - if (RegExp("^-[\\s]*$", 'g').test(value)) { - value = "-0"; + if (RegExp('^-[\\s]*$', 'g').test(value)) { + value = '-0'; } if (decimalRex(dSeparator).test(value)) { cleared = value.match(decimalRex(dSeparator)) - .join("").match(clearRex(dSeparator)); - cleared = cleared ? cleared[0].replace(dSeparator, ".") : null; + .join('').match(clearRex(dSeparator)); + cleared = cleared ? cleared[0].replace(dSeparator, '.') : null; } return cleared; @@ -101,60 +103,63 @@ export default function ngCurrency($filter, $locale, $timeout) { } function reformatViewValue() { - var formatters = ngModel.$formatters; - var idx = formatters.length; - var viewValue = ngModel.$$rawModelValue; - while (idx--) { - viewValue = formatters[idx](viewValue); + for (let i = ngModel.$formatters.length - 1; i >= 0; i--) { + viewValue = ngModel.$formatters[i](viewValue); } - ngModel.$setViewValue(viewValue); ngModel.$render(); } - ngModel.$parsers.push(function(viewValue) { - var cVal = clearValue(viewValue); - // Check for fast digitation (-. or .) - if (cVal === "." || cVal === "-.") { - cVal = ".0"; + ngModel.$parsers.push((viewValue) => { + if (active) { + let value = clearValue(viewValue); + // Check for fast digitation (-. or .) + if (value === '.' || value === '-.') { + value = '.0'; + } + return Number(value); } - return Number(cVal); + return viewValue; }); - element.on("blur", function() { - ngModel.$commitViewValue(); - reformatViewValue(); - }); - - ngModel.$formatters.unshift(function(value) { - return $filter('currency')(value, getCurrencySymbol(), fraction); + ngModel.$formatters.push((value) => { + if (active) { + return $filter('currency')(value, getCurrencySymbol(), fraction); + } + return value; }); - ngModel.$validators.min = function(value) { + ngModel.$validators.min = (value) => { if (!ngRequired && isNaN(value)) { return true; } - return !min || value >= min; + return !active || + [undefined, null].indexOf(min) !== -1 || isNaN(min) || + value >= min; }; - ngModel.$validators.max = function(value) { + ngModel.$validators.max = (value) => { if (!ngRequired && isNaN(value)) { return true; } - return !max || value <= max; + return !active || + [undefined, null].indexOf(max) !== -1 || isNaN(max) || + value <= max; }; - ngModel.$validators.fraction = function(value) { - return !value || !isNaN(value); + ngModel.$validators.fraction = (value) => { + return !active || !value || !isNaN(value); }; - scope.$on('currencyRedraw', function() { - ngModel.$commitViewValue(); - reformatViewValue(); + scope.$on('currencyRedraw', () => { + if (initialized) { + ngModel.$commitViewValue(); + reformatViewValue(); + } }); - element.on('focus', function() { + element.on('focus', () => { var viewValue = ngModel.$$rawModelValue; if (isNaN(viewValue) || viewValue === '' || viewValue === null) { @@ -165,6 +170,11 @@ export default function ngCurrency($filter, $locale, $timeout) { ngModel.$setViewValue(viewValue); ngModel.$render(); }); + + element.on('blur', () => { + ngModel.$commitViewValue(); + reformatViewValue(); + }); } }; } diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index 9126806..a08308e 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -1,22 +1,23 @@ import ngCurrency from '../../src/ng-currency.module.js'; +import defaults from './templates/defaults.html'; +import variables from './templates/variables.html'; +import centsToDollars from './templates/cents-to-dollars.html'; -describe('ngCurrency directive tests', function() { - let elem, elemdefault, scope, elemmo, elemfpos, elemfpos5, elemcurrdisabled, elemnreq, elemfastfraction, elemminmaxvar; +describe('ngCurrency directive tests', () => { + let element, scope; beforeEach(angular.mock.module(ngCurrency)); - - beforeEach(angular.mock.module(ngCurrency, function($compileProvider) { - $compileProvider.directive('centsToDollars', function() { + beforeEach(angular.mock.module(ngCurrency, ($compileProvider) => { + $compileProvider.directive('centsToDollars', () => { return { - restrict: 'A', require: 'ngModel', scope: {}, - link: function(scope, elem, attrs, ngModel) { - ngModel.$parsers.push(function(viewValue) { + link: (scope, elem, attrs, ngModel) => { + ngModel.$parsers.push((viewValue) => { return Math.round(parseFloat(viewValue || 0) * 100); }); - ngModel.$formatters.push(function(modelValue) { + ngModel.$formatters.push((modelValue) => { return (parseFloat(modelValue || 0) / 100).toFixed(2); }); } @@ -24,471 +25,323 @@ describe('ngCurrency directive tests', function() { }); })); - beforeEach(angular.mock.inject(function($rootScope, $compile) { - scope = $rootScope.$new(); - elemdefault = angular.element(""); - elem = angular.element(""); - elemmo = angular.element(""); - elemfpos = angular.element(""); - elemfpos5 = angular.element(""); - elemcurrdisabled = angular.element(""); - elemnreq = angular.element(""); - elemfastfraction = angular.element(""); - elemminmaxvar = angular.element(""); - })); - - it('should format Model float 123.45 to "$123.45" view as locale currency', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 123.45; - elem = $compile(elem)(scope); - scope.$digest(); - expect(elem.val()).toEqual("$123.45"); - }) - ); - - it('should format Model "123.451" to "$123.45" view as locale currency', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 123.451; - elem = $compile(elem)(scope); + // Functionality that is always on (excluding active) + describe('Core Functionality', () => { + beforeEach(angular.mock.inject(($rootScope, $compile, $timeout) => { + scope = $rootScope.$new(); + scope.value = 0; scope.$digest(); - expect(elem.val()).toEqual("$123.45"); - }) - ); - - it('should format Model "123.457" to "$123.46" (round) view as locale currency', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 123.457; - elem = $compile(elem)(scope); + element = $compile(defaults)(scope); + $timeout.flush(); + })); + + it('should be able to parse values with thousand separators', () => { + element.val('$123,123.45'); + element.triggerHandler('input'); + expect(scope.value).toEqual(123123.45); + }); + + it('should be able to parse negatives', () => { + element.val('-1.11'); + element.triggerHandler('input'); + expect(scope.value).toEqual(-1.11); + }); + + it('should be able to parse values with spaces', () => { + element.val('$ -1.11'); + element.triggerHandler('input'); + expect(scope.value).toEqual(-1.11); + }); + + it('should be able to parse and reformat a value', () => { + element.val('123123.45'); + element.triggerHandler('input'); + element.triggerHandler('focus'); + expect(element.val()).toEqual('123123.45'); + element.triggerHandler('blur'); + expect(element.val()).toEqual('$123,123.45'); + expect(scope.value).toEqual(123123.45); + }); + + it('should be able to parse and reformat a value, change the value and format again', () => { + scope.value = 0; + element.val('$123.45'); + element.triggerHandler('input'); + element.triggerHandler('focus'); + expect(element.val()).toEqual('123.45'); + element.val('456.78'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(element.val()).toEqual('$456.78'); + expect(scope.value).toEqual(456.78); + }); + + it('should not be able to parse characters', () => { + scope.value = 'a'; scope.$digest(); - expect(elem.val()).toEqual("$123.46"); - }) - ); + expect(element.val()).toEqual(''); + }); - describe("when currency-symbol is declared", function() { - beforeEach(angular.mock.inject(function($rootScope) { - scope = $rootScope.$new(); - elem = angular.element(""); - })); + describe('Fast Digitation', () => { + it('should parse "-" to 0', () => { + element.val('-'); + element.triggerHandler('input'); + expect(scope.value).toEqual(0); + }); + + it('should parse "- " to 0', () => { + element.val('- '); + element.triggerHandler('input'); + expect(scope.value).toEqual(0); + }); + }); - it('should format with declared symbol', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 123.45; - elem = $compile(elem)(scope); + describe('Fast Fraction', () => { + it('should parse ".5" to 0.5', () => { + element.val('.5'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(scope.value).toEqual(0.5); + expect(element.val()).toEqual('$0.50'); + }); + + it('should parse "-.5" to ($0.50)', () => { + element.val('-.5'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(scope.value).toEqual(-0.5); + expect(element.val()).toEqual('($0.50)'); + }); + }); + + describe('Support other Directives', () => { + beforeEach(angular.mock.inject(($compile) => { + element = $compile(centsToDollars)(scope); + scope.value = 100; scope.$digest(); - expect(elem.val()).toEqual("¥123.45"); - }) - ); - - describe("when currency-symbol declared is empty", function() { - beforeEach(angular.mock.inject(function($rootScope) { - scope = $rootScope.$new(); - elem = angular.element(""); })); - it('should format without symbol', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 123.45; - elem = $compile(elem)(scope); - scope.$digest(); - expect(elem.val()).toEqual("123.45"); - }) - ); + it('should support multiple directives', () => { + expect(element.val()).toEqual('$1.00'); + }); + + it('should update the model correctly', () => { + element.val('$123.45'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(scope.value).toEqual(12345); + expect(element.val()).toEqual('$123.45'); + }); }); }); - it('should set ngModel to 123.45 from string $123.45 as locale currency', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("$123.45"); - elem.triggerHandler('input'); - expect(scope.testModel).toEqual(123.45); - }) - ); - - it('should set ngModel to 123123.45 from string $123,123.45 as locale currency', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("$123,123.45"); - elem.triggerHandler('input'); - expect(scope.testModel).toEqual(123123.45); - }) - ); - - it('should set input value to $123,123.45 and Model to float 123123.45 from string 123123.45 as locale currency', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("123123.45"); - elem.triggerHandler('input'); - elem.triggerHandler('blur'); - expect(elem.val()).toEqual("$123,123.45"); - expect(scope.testModel).toEqual(123123.45); - }) - ); - - it('should trigger max error for 1999999 from string $1999999.0 as locale currency', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("$1999999.0"); - elem.triggerHandler('input'); - elem.triggerHandler('blur'); - elem.hasClass('ng-invalid-max'); - expect(elem.val()).toEqual("$1,999,999.00"); - }) - ); - - it('should trigger min error for 0.01 from string $0.01 as locale currency', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("$0.01"); - elem.triggerHandler('input'); - elem.triggerHandler('blur'); - elem.hasClass('ng-invalid-min'); - expect(elem.val()).toEqual("$0.01"); - }) - ); - - it('should tigger invalid max after change maxi variable', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - scope.mini = 1; - scope.maxi = 10; - elem = $compile(elemminmaxvar)(scope); - elem.val("$4"); - elem.triggerHandler('input'); - elem.triggerHandler('blur'); - expect(elem.hasClass('ng-valid-max')).toEqual(true); - scope.maxi = 3; - scope.$digest(); - expect(elem.hasClass('ng-invalid-max')).toEqual(true); - }) - ); - - it('should do nothing when max value is not a valid number', - angular.mock.inject(function($rootScope, $compile) { - elem = $compile(elemminmaxvar)(scope); - scope.testModel = 4; - scope.maxi = '3px'; - scope.$digest(); - expect(elem.hasClass('ng-valid-max')).toEqual(true); - }) - ); - - it('should do nothing when min value is not a valid number', - angular.mock.inject(function($rootScope, $compile) { - elem = $compile(elemminmaxvar)(scope); - scope.testModel = 4; - scope.mini = '5px'; + // Functionality that is specific to the default values + describe('Defaults', () => { + beforeEach(angular.mock.inject(($rootScope, $compile, $timeout) => { + scope = $rootScope.$new(); + scope.value = 0; scope.$digest(); - expect(elem.hasClass('ng-valid-min')).toEqual(true); - }) - ); - - it('should tigger invalid min after change mini variable', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - scope.mini = 1; - scope.maxi = 10; - elem = $compile(elemminmaxvar)(scope); - elem.val("$4"); - elem.triggerHandler('input'); - elem.triggerHandler('blur'); - expect(elem.hasClass('ng-valid-min')).toEqual(true); - scope.mini = 5; + element = $compile(defaults)(scope); + $timeout.flush(); + })); + + it('New for version 0.9.1 - Original value $0.00, should set input value to 0.00 on focus, then $0.00 on blur', () => { + element.triggerHandler('focus'); + expect(element.val()).toEqual('0.00'); + element.triggerHandler('blur'); + expect(element.val()).toEqual('$0.00'); + }); + + it('Issue #59 - Parse a string value as a float on focus', () => { + scope.value = '1.00'; scope.$digest(); - expect(elem.hasClass('ng-invalid-min')).toEqual(true); - }) - ); - - it('should trigger ng-required error', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val(""); - elem.triggerHandler('input'); - elem.hasClass('ng-invalid-required'); - }) - ); - - describe('model value should be undefined when view value does not pass validation', function() { - it('should not set 0 value from string 0 when required min is not met', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("0"); - elem.triggerHandler('input'); - elem.triggerHandler('blur'); - expect(scope.testModel).toBeUndefined(); - expect(elem.val()).toEqual("$0.00"); - }) - ); - - it('should not set 9999991 value from string 9999991 when required max is not met', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("9999991"); - elem.triggerHandler('input'); - elem.triggerHandler('blur'); - expect(scope.testModel).toBeUndefined(); - expect(elem.val()).toEqual("$9,999,991.00"); - }) - ); - }); + expect(element.val()).toEqual('$1.00'); + element.triggerHandler('focus'); + expect(element.val()).toEqual('1.00'); + }); - describe('when the min is set to zero or lower', function() { - beforeEach(function() { - elem = angular.element(""); + describe('Currency Symbol', () => { + it('default currency symbol should be the match the locale', () => { + scope.value = 123.45; + scope.$digest(); + expect(element.val()).toEqual('$123.45'); + }); }); - it('should set -0 value from string - ', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("-"); - elem.triggerHandler('input'); - expect(scope.testModel).toBe(-0); - }) - ); - it('should set -0 value from string \'- \' ', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("- "); - elem.triggerHandler('input'); - expect(scope.testModel).toBe(-0); - }) - ); - it('should set -1.11 value from string -1.11', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("-1.11"); - elem.triggerHandler('input'); - expect(scope.testModel).toBe(-1.11); - }) - ); - it('should set -1.11 value from string $ -1.11', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("$ -1.11"); - elem.triggerHandler('input'); - expect(scope.testModel).toBe(-1.11); - }) - ); + describe('Fraction', () => { + it('should round (down) to two decimal places by default', () => { + scope.value = 123.451; + scope.$digest(); + expect(element.val()).toEqual('$123.45'); + }); + + it('should round (up) to two decimal places by default', () => { + scope.value = 123.457; + scope.$digest(); + expect(element.val()).toEqual('$123.46'); + }); + }); }); - it('issue #14 - should set input value to $123.45 from string 123.45 as locale currency with ng-model-options="{ updateOn:\'blur\' }"', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elemmo = $compile(elemmo)(scope); - elemmo.val("$123.45"); - elemmo.triggerHandler('input'); - elemmo.triggerHandler('blur'); - expect(scope.testModel).toEqual(123.45); - expect(elemmo.val()).toEqual('$123.45'); - }) - ); - - it('issue #28 - Fast fraction - Input should not filter fast fraction notation ej: .5"', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elemmo = $compile(elemfastfraction)(scope); - elemmo.val(".5"); - elemmo.triggerHandler('input'); - elemmo.triggerHandler('blur'); - expect(scope.testModel).toEqual(0.5); - expect(elemmo.val()).toEqual('$0.50'); - }) - ); - - it('issue #28 - Fast fraction - Input should not filter fast fraction notation ej: -.5"', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elemmo = $compile(elemfastfraction)(scope); - elemmo.val("-.5"); - elemmo.triggerHandler('input'); - elemmo.triggerHandler('blur'); - expect(scope.testModel).toEqual(-0.5); - expect(elemmo.val()).toEqual('($0.50)'); - }) - ); - - it('Adding an optional fraction value to take advantage of the currency filter\'s third param fraction="0"', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 123.45; - elem = $compile(elemfpos)(scope); - scope.$digest(); - expect(elem.val()).toEqual("$123"); - }) - ); - - it('Adding an optional fraction value to take advantage of the currency filter\'s third param fraction="5"', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 123.45678; - elem = $compile(elemfpos5)(scope); - scope.$digest(); - expect(elem.val()).toEqual("$123.45678"); - }) - ); - - it('Adding an optional fraction value to take advantage of the currency filter\'s third param fraction="0" model="a"', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 'a'; - elem = $compile(elemfpos)(scope); - scope.$digest(); - expect(elem.val()).toEqual(""); - }) - ); - - it('Disable ng-currency format', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 123.45; - scope.isCurrency = false; - elem = $compile(elemcurrdisabled)(scope); - scope.$digest(); - expect(elem.val()).toEqual("123.45"); - }) - ); - - it('Not required and not a number with max and min', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 'a'; - scope.isCurrency = false; - elem = $compile(elemnreq)(scope); - elem.triggerHandler('input'); + // Functionality that is specific to the default values being overridden + describe('Variables', () => { + beforeEach(angular.mock.inject(($rootScope, $compile, $timeout) => { + scope = $rootScope.$new(); + scope.value = 0; + scope.active = true; + scope.modelOptions = {}; + scope.currencySymbol = '$'; scope.$digest(); - expect(elem.val()).toEqual(""); - }) - ); + element = $compile(variables)(scope); + $timeout.flush(); + })); - describe("issue #18 - ng-currency doesn't play well with other directives when loosing focus", function() { - var el; + describe('NG Currency', () => { + it('should support dynamically disabling ngCurrency', () => { + scope.active = false; + scope.value = 123.45; + scope.$digest(); + expect(element.val()).toEqual('123.45'); + }); - beforeEach(angular.mock.inject(function($compile) { - var template = ""; - el = $compile(template)(scope); - scope.modelInCents = 100; - scope.$digest(); - })); + it('should disable validators when inactive', () => { + scope.active = false; + scope.value = 'a'; + scope.$digest(); + expect(element.val()).toEqual('a'); + }); + }); - it("should load the model correctly", - angular.mock.inject(function($compile) { - expect(el.val()).toEqual('$1.00'); - })); + describe('Currency Symbol', () => { + it('should support an empty currency symbol', () => { + scope.currencySymbol = ''; + scope.value = 123.45; + scope.$digest(); + expect(element.val()).toEqual('123.45'); + }); - it("should update the model correctly", - angular.mock.inject(function($compile) { - el.val("$123.45"); - el.triggerHandler('input'); - el.triggerHandler('blur'); + it('should support custom currency symbols', () => { + scope.currencySymbol = '¥'; + scope.value = 123.45; + scope.$digest(); + expect(element.val()).toEqual('¥123.45'); + }); + }); - expect(scope.modelInCents).toEqual(12345); - expect(el.val()).toEqual('$123.45'); - })); - }); + describe('Fraction', () => { + it('should support a fraction value of zero', () => { + scope.fraction = 0; + scope.value = 123.45; + scope.$digest(); + expect(element.val()).toEqual('$123'); + }); - it('New for version 0.9.1 - Original value $123.45, should set input value to 123.45 on focus, then $123.45 on blur', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("$123.45"); - elem.triggerHandler('input'); - elem.triggerHandler('focus'); - expect(elem.val()).toEqual('123.45'); - elem.triggerHandler('blur'); - expect(scope.testModel).toEqual(123.45); - expect(elem.val()).toEqual('$123.45'); - }) - ); - - it('New for version 0.9.1 - Original value $123.45, should set input value to 123.45 on focus, change to 456.78, then $456.76 on blur', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("$123.45"); - elem.triggerHandler('input'); - elem.triggerHandler('focus'); - expect(elem.val()).toEqual('123.45'); - elem.val("456.78"); - elem.triggerHandler('blur'); - expect(scope.testModel).toEqual(123.45); - expect(elem.val()).toEqual('$123.45'); - }) - ); - - it('New for version 0.9.1 - Original value $123.45, should set input value to 123.45 on focus, change to $456.78, then $456.76 on blur', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("$123.45"); - elem.triggerHandler('input'); - elem.triggerHandler('focus'); - expect(elem.val()).toEqual('123.45'); - elem.val("$456.78"); - elem.triggerHandler('input'); - elem.triggerHandler('blur'); - expect(scope.testModel).toEqual(456.78); - expect(elem.val()).toEqual('$456.78'); - }) - ); - - it('New for version 0.9.1 - Original value $123.00, should set input value to 123.00 on focus, then $123.00 on blur', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elem)(scope); - elem.val("$123.00"); - elem.triggerHandler('input'); - elem.triggerHandler('focus'); - expect(elem.val()).toEqual('123.00'); - elem.triggerHandler('blur'); - expect(scope.testModel).toEqual(123.00); - expect(elem.val()).toEqual('$123.00'); - }) - ); - - it('New for version 0.9.1 - Original value $0.00, should set input value to 0.00 on focus, then $0.00 on blur', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elemdefault)(scope); - elem.val("$0.00"); - elem.triggerHandler('input'); - elem.triggerHandler('focus'); - expect(elem.val()).toEqual('0.00'); - elem.triggerHandler('blur'); - expect(scope.testModel).toEqual(0); - expect(elem.val()).toEqual('$0.00'); - }) - ); - - it('New for version 0.9.2 - Original value $123,456, should set input value to 123456 on focus, then $123456 on blur', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = 0; - elem = $compile(elemfpos)(scope); - elem.val("$123,456"); - elem.triggerHandler('input'); - elem.triggerHandler('focus'); - expect(elem.val()).toEqual('123456'); - elem.triggerHandler('blur'); - expect(scope.testModel).toEqual(123456); - expect(elem.val()).toEqual('$123,456'); - }) - ); - - it('Issue #59 - Parse a string value as a float on focus', - angular.mock.inject(function($rootScope, $compile) { - scope.testModel = '1.00'; - elem = $compile(elemdefault)(scope); - scope.$digest(); - expect(elem.val()).toEqual("$1.00"); - elem.triggerHandler('input'); - elem.triggerHandler('focus'); - expect(elem.val()).toEqual("1.00"); - }) - ); + it('should support a custom fraction value', () => { + scope.fraction = 5; + scope.value = 123.45678; + scope.$digest(); + expect(element.val()).toEqual('$123.45678'); + }); + }); + + describe('Model Options', () => { + it('should support updating on blur', () => { + scope.modelOptions = { updateOn: 'blur' }; + scope.$digest(); + element.val('$123.45'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(scope.value).toEqual(123.45); + expect(element.val()).toEqual('$123.45'); + }); + }); + + describe('Max', () => { + it('should become invalid when the value exceeds the max', () => { + scope.value = 1999999; + scope.max = 1000000; + scope.$digest(); + expect(element.hasClass('ng-invalid-max')).toBeTruthy(); + expect(element.val()).toEqual('$1,999,999.00'); + }); + + it('should become invalid when the max changes', () => { + scope.value = 1999999; + scope.max = 2000000; + scope.$digest(); + expect(element.hasClass('ng-valid-max')).toBeTruthy(); + expect(element.val()).toEqual('$1,999,999.00'); + scope.max = 1999998; + scope.$digest(); + expect(element.hasClass('ng-invalid-max')).toBeTruthy(); + expect(element.val()).toEqual('$1,999,999.00'); + }); + + it('should be valid if no max value is set', () => { + scope.value = 1999999; + scope.$digest(); + expect(element.hasClass('ng-valid-max')).toBeTruthy(); + expect(element.val()).toEqual('$1,999,999.00'); + }); + + it('should support a max of zero', () => { + scope.value = 0.01; + scope.max = 0; + scope.$digest(); + expect(element.hasClass('ng-invalid-max')).toBeTruthy(); + expect(element.val()).toEqual('$0.01'); + }); + + it('should do nothing when an invalid value is provided', () => { + scope.value = 4; + scope.max = '3px'; + scope.$digest(); + expect(element.hasClass('ng-valid-max')).toBeTruthy(); + }); + }); + + describe('Min', () => { + it('should become invalid when the value falls below the min', () => { + scope.value = 0.01; + scope.min = 1; + scope.$digest(); + expect(element.hasClass('ng-invalid-min')).toBeTruthy(); + expect(element.val()).toEqual('$0.01'); + }); + + it('should become invalid when the min changes', () => { + scope.value = 0.01; + scope.min = 0; + scope.$digest(); + expect(element.hasClass('ng-valid-min')).toBeTruthy(); + expect(element.val()).toEqual('$0.01'); + scope.min = 1; + scope.$digest(); + expect(element.hasClass('ng-invalid-min')).toBeTruthy(); + expect(element.val()).toEqual('$0.01'); + }); + + it('should be valid if no min value is set', () => { + scope.value = 0.01; + scope.$digest(); + expect(element.hasClass('ng-valid-min')).toBeTruthy(); + expect(element.val()).toEqual('$0.01'); + }); + + it('should support a min of zero', () => { + scope.value = -0.01; + scope.min = 0; + scope.$digest(); + expect(element.hasClass('ng-invalid-min')).toBeTruthy(); + expect(element.val()).toEqual('($0.01)'); + }); + + it('should do nothing when an invalid value is provided', () => { + scope.value = 4; + scope.min = '5px'; + scope.$digest(); + expect(element.hasClass('ng-valid-min')).toBeTruthy(); + }); + }); + }); }); diff --git a/test/ng-currency/templates/cents-to-dollars.html b/test/ng-currency/templates/cents-to-dollars.html new file mode 100644 index 0000000..de33c91 --- /dev/null +++ b/test/ng-currency/templates/cents-to-dollars.html @@ -0,0 +1 @@ + diff --git a/test/ng-currency/templates/defaults.html b/test/ng-currency/templates/defaults.html new file mode 100644 index 0000000..ff6ea1f --- /dev/null +++ b/test/ng-currency/templates/defaults.html @@ -0,0 +1 @@ + diff --git a/test/ng-currency/templates/variables.html b/test/ng-currency/templates/variables.html new file mode 100644 index 0000000..b2d3974 --- /dev/null +++ b/test/ng-currency/templates/variables.html @@ -0,0 +1,8 @@ + diff --git a/webpack.test.config.js b/webpack.test.config.js index 4070786..3a895aa 100644 --- a/webpack.test.config.js +++ b/webpack.test.config.js @@ -16,6 +16,10 @@ module.exports = { test: /\.js$/, exclude: /node_modules/, loader: 'babel' + }, { + test: /\.html$/, + exclude: /node_modules/, + loader: 'html' }] }, devtool: 'inline-source-map' From 71184d45c1b65d004027ce5fa1bfa89f52fab09a Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Sat, 30 Jul 2016 19:09:27 -0500 Subject: [PATCH 004/159] Added hard-cap support * Added unit tests for hard caps --- dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- src/ng-currency.directive.js | 33 ++- .../ng-currency/ng-currency.directive.spec.js | 274 +++++++++++++----- test/ng-currency/templates/variables.html | 3 +- 5 files changed, 229 insertions(+), 85 deletions(-) diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 7e1619d..fca3d76 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),o=t(u),i=r(1),c=t(i),a=o["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,o,i){function c(){v&&(i.$validate(),t.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+g+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&g>0&&(t=".");var o=e("currency")("-1",d(),g),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=o.replace(i.exec(o),""),l=r.replace(i.exec(r),"");return c===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==m?m:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=i.$$rawModelValue,n=i.$formatters.length-1;n>=0;n--)e=i.$formatters[n](e);i.$setViewValue(e),i.$render()}var v=void 0,$=void 0,p=void 0,m=void 0,x=void 0,N=!0,g=2;o.$observe("ngCurrency",function(e){N="false"!==e,c()}),o.$observe("min",function(e){$=e?Number(e):void 0,c()}),o.$observe("max",function(e){p=e?Number(e):void 0,c()}),o.$observe("currencySymbol",function(e){m=e,c()}),o.$observe("ngRequired",function(e){x=e,c()}),o.$observe("fraction",function(e){g=e||2,c()}),r(function(){v=!0,c()}),i.$parsers.push(function(e){if(N){var n=l(e);return"."!==n&&"-."!==n||(n=".0"),Number(n)}return e}),i.$formatters.push(function(n){return N?e("currency")(n,d(),g):n}),i.$validators.min=function(e){return!(x||!isNaN(e))||(!N||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},i.$validators.max=function(e){return!(x||!isNaN(e))||(!N||[void 0,null].indexOf(p)!==-1||isNaN(p)||e<=p)},i.$validators.fraction=function(e){return!N||!e||!isNaN(e)},t.$on("currencyRedraw",function(){v&&(i.$commitViewValue(),s())}),u.on("focus",function(){var e=i.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(g),i.$setViewValue(e),i.$render()}),u.on("blur",function(){i.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),o=t(u),i=r(1),c=t(i),a=o["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,o,i){function c(){$&&(i.$validate(),t.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(t=".");var o=e("currency")("-1",d(),R),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=o.replace(i.exec(o),""),l=r.replace(i.exec(r),"");return c===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==M?M:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=i.$$rawModelValue,n=i.$formatters.length-1;n>=0;n--)e=i.$formatters[n](e);i.$setViewValue(e),i.$render()}function v(e){if(g&&p&&[void 0,null,""].indexOf(e)===-1){if(void 0!==x&&e>x)return x;if(void 0!==m&&e=m)},i.$validators.max=function(e){return!(N||!isNaN(e))||(!g||[void 0,null].indexOf(x)!==-1||isNaN(x)||e<=x)},i.$validators.fraction=function(e){return!g||!e||!isNaN(e)},t.$on("currencyRedraw",function(){if($){i.$commitViewValue();var e=v(i.$$rawModelValue);e!==i.$$rawModelValue&&(i.$setViewValue(e),i.$commitViewValue()),s()}}),u.on("focus",function(){var e=i.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(R),i.$setViewValue(e),i.$render()}),u.on("blur",function(){i.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 2cd20cb..556792f 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 2c6df34ff34d6d6af22c","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","reformatViewValue","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","min","max","ngRequired","active","$observe","Number","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t refresh();\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function reformatViewValue() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$formatters.push(function (value) {\n\t if (active) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t reformatViewValue();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 2c6df34ff34d6d6af22c\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n refresh();\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n var cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function reformatViewValue() {\n var viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$formatters.push((value) => {\n if (active) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n reformatViewValue();\n }\n });\n\n element.on('focus', () => {\n var viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n reformatViewValue();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 1554cdbb6e2cb475acdf","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","executeFormatters","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","keepInRange","active","hardCap","max","min","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t refresh();\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function executeFormatters() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t function keepInRange(value) {\n\t if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n\t if (max !== undefined && value > max) {\n\t return max;\n\t } else if (min !== undefined && value < min) {\n\t return min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$parsers.push(keepInRange);\n\t ngModel.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t var value = keepInRange(ngModel.$$rawModelValue);\n\t if (value !== ngModel.$$rawModelValue) {\n\t ngModel.$setViewValue(value);\n\t ngModel.$commitViewValue();\n\t }\n\t executeFormatters();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t executeFormatters();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 1554cdbb6e2cb475acdf\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n refresh();\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n var cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function executeFormatters() {\n var viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n function keepInRange(value) {\n if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n if (max !== undefined && value > max) {\n return max;\n } else if (min !== undefined && value < min) {\n return min;\n }\n }\n return value;\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$parsers.push(keepInRange);\n ngModel.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n let value = keepInRange(ngModel.$$rawModelValue);\n if (value !== ngModel.$$rawModelValue) {\n ngModel.$setViewValue(value);\n ngModel.$commitViewValue();\n }\n executeFormatters();\n }\n });\n\n element.on('focus', () => {\n var viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n executeFormatters();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 124c921..4801a7c 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -11,7 +11,7 @@ export default function ngCurrency($filter, $locale, $timeout) { return { require: 'ngModel', link: (scope, element, attrs, ngModel) => { - let initialized, min, max, currencySymbol, ngRequired; + let initialized, hardCap, min, max, currencySymbol, ngRequired; let active = true; let fraction = 2; @@ -19,6 +19,10 @@ export default function ngCurrency($filter, $locale, $timeout) { active = (value !== 'false'); refresh(); }); + attrs.$observe('hardCap', (value) => { + hardCap = (value === 'true'); + refresh(); + }); attrs.$observe('min', (value) => { min = value ? Number(value) : undefined; refresh(); @@ -102,7 +106,7 @@ export default function ngCurrency($filter, $locale, $timeout) { return $locale.NUMBER_FORMATS.CURRENCY_SYM; } - function reformatViewValue() { + function executeFormatters() { var viewValue = ngModel.$$rawModelValue; for (let i = ngModel.$formatters.length - 1; i >= 0; i--) { viewValue = ngModel.$formatters[i](viewValue); @@ -111,8 +115,19 @@ export default function ngCurrency($filter, $locale, $timeout) { ngModel.$render(); } + function keepInRange(value) { + if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) { + if (max !== undefined && value > max) { + return max; + } else if (min !== undefined && value < min) { + return min; + } + } + return value; + } + ngModel.$parsers.push((viewValue) => { - if (active) { + if (active && [undefined, null, ''].indexOf(viewValue) === -1) { let value = clearValue(viewValue); // Check for fast digitation (-. or .) if (value === '.' || value === '-.') { @@ -123,8 +138,9 @@ export default function ngCurrency($filter, $locale, $timeout) { return viewValue; }); + ngModel.$parsers.push(keepInRange); ngModel.$formatters.push((value) => { - if (active) { + if (active && [undefined, null, ''].indexOf(value) === -1) { return $filter('currency')(value, getCurrencySymbol(), fraction); } return value; @@ -155,7 +171,12 @@ export default function ngCurrency($filter, $locale, $timeout) { scope.$on('currencyRedraw', () => { if (initialized) { ngModel.$commitViewValue(); - reformatViewValue(); + let value = keepInRange(ngModel.$$rawModelValue); + if (value !== ngModel.$$rawModelValue) { + ngModel.$setViewValue(value); + ngModel.$commitViewValue(); + } + executeFormatters(); } }); @@ -173,7 +194,7 @@ export default function ngCurrency($filter, $locale, $timeout) { element.on('blur', () => { ngModel.$commitViewValue(); - reformatViewValue(); + executeFormatters(); }); } }; diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index a08308e..63b1f8b 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -257,90 +257,212 @@ describe('ngCurrency directive tests', () => { }); describe('Max', () => { - it('should become invalid when the value exceeds the max', () => { - scope.value = 1999999; - scope.max = 1000000; - scope.$digest(); - expect(element.hasClass('ng-invalid-max')).toBeTruthy(); - expect(element.val()).toEqual('$1,999,999.00'); - }); - - it('should become invalid when the max changes', () => { - scope.value = 1999999; - scope.max = 2000000; - scope.$digest(); - expect(element.hasClass('ng-valid-max')).toBeTruthy(); - expect(element.val()).toEqual('$1,999,999.00'); - scope.max = 1999998; - scope.$digest(); - expect(element.hasClass('ng-invalid-max')).toBeTruthy(); - expect(element.val()).toEqual('$1,999,999.00'); - }); - - it('should be valid if no max value is set', () => { - scope.value = 1999999; - scope.$digest(); - expect(element.hasClass('ng-valid-max')).toBeTruthy(); - expect(element.val()).toEqual('$1,999,999.00'); - }); - - it('should support a max of zero', () => { - scope.value = 0.01; - scope.max = 0; - scope.$digest(); - expect(element.hasClass('ng-invalid-max')).toBeTruthy(); - expect(element.val()).toEqual('$0.01'); + describe('Soft Cap', () => { + it('should become invalid when the value exceeds the max', () => { + scope.value = 1999999; + scope.max = 1000000; + scope.$digest(); + expect(element.hasClass('ng-invalid-max')).toBeTruthy(); + expect(element.val()).toEqual('$1,999,999.00'); + }); + + it('should become invalid when the max changes', () => { + scope.value = 1999999; + scope.max = 2000000; + scope.$digest(); + expect(element.hasClass('ng-valid-max')).toBeTruthy(); + expect(element.val()).toEqual('$1,999,999.00'); + scope.max = 1999998; + scope.$digest(); + expect(element.hasClass('ng-invalid-max')).toBeTruthy(); + expect(element.val()).toEqual('$1,999,999.00'); + }); + + it('should be valid if no max value is set', () => { + scope.value = 1999999; + scope.$digest(); + expect(element.hasClass('ng-valid-max')).toBeTruthy(); + expect(element.val()).toEqual('$1,999,999.00'); + }); + + it('should support a max of zero', () => { + scope.value = 0.01; + scope.max = 0; + scope.$digest(); + expect(element.hasClass('ng-invalid-max')).toBeTruthy(); + expect(element.val()).toEqual('$0.01'); + }); + + it('should do nothing when an invalid value is provided', () => { + scope.value = 4; + scope.max = '3px'; + scope.$digest(); + expect(element.hasClass('ng-valid-max')).toBeTruthy(); + }); }); - it('should do nothing when an invalid value is provided', () => { - scope.value = 4; - scope.max = '3px'; - scope.$digest(); - expect(element.hasClass('ng-valid-max')).toBeTruthy(); + describe('Hard Cap', () => { + beforeEach(() => { + scope.hardCap = true; + scope.$digest(); + }); + + it('should change the value to the max if it exceeds the max', () => { + scope.max = 1; + scope.value = 2; + scope.$digest(); + expect(element.val()).toEqual('$1.00'); + expect(scope.value).toEqual(1); + }); + + it('should change the value to max when the max changes', () => { + scope.max = 2; + scope.value = 2; + scope.$digest(); + expect(element.val()).toEqual('$2.00'); + expect(scope.value).toEqual(2); + scope.max = 1; + scope.$digest(); + expect(element.val()).toEqual('$1.00'); + expect(scope.value).toEqual(1); + }); + + it('should do nothing if no max value is set', () => { + scope.value = 1999999; + scope.$digest(); + expect(element.val()).toEqual('$1,999,999.00'); + }); + + it('should do nothing if no max value is set and no ngModel value is provided', () => { + scope.value = ''; + scope.$digest(); + expect(element.val()).toEqual(''); + }); + + it('should support a max of zero', () => { + scope.value = 0.01; + scope.max = 0; + scope.$digest(); + expect(element.val()).toEqual('$0.00'); + }); + + it('should do nothing when an invalid value is provided', () => { + scope.value = 4; + scope.max = '3px'; + scope.$digest(); + expect(element.val()).toEqual('$4.00'); + }); }); }); describe('Min', () => { - it('should become invalid when the value falls below the min', () => { - scope.value = 0.01; - scope.min = 1; - scope.$digest(); - expect(element.hasClass('ng-invalid-min')).toBeTruthy(); - expect(element.val()).toEqual('$0.01'); - }); - - it('should become invalid when the min changes', () => { - scope.value = 0.01; - scope.min = 0; - scope.$digest(); - expect(element.hasClass('ng-valid-min')).toBeTruthy(); - expect(element.val()).toEqual('$0.01'); - scope.min = 1; - scope.$digest(); - expect(element.hasClass('ng-invalid-min')).toBeTruthy(); - expect(element.val()).toEqual('$0.01'); - }); - - it('should be valid if no min value is set', () => { - scope.value = 0.01; - scope.$digest(); - expect(element.hasClass('ng-valid-min')).toBeTruthy(); - expect(element.val()).toEqual('$0.01'); - }); - - it('should support a min of zero', () => { - scope.value = -0.01; - scope.min = 0; - scope.$digest(); - expect(element.hasClass('ng-invalid-min')).toBeTruthy(); - expect(element.val()).toEqual('($0.01)'); + describe('Soft Cap', () => { + it('should become invalid when the value falls below the min', () => { + scope.value = 0.01; + scope.min = 1; + scope.$digest(); + expect(element.hasClass('ng-invalid-min')).toBeTruthy(); + expect(element.val()).toEqual('$0.01'); + }); + + it('should become invalid when the min changes', () => { + scope.value = 0.01; + scope.min = 0; + scope.$digest(); + expect(element.hasClass('ng-valid-min')).toBeTruthy(); + expect(element.val()).toEqual('$0.01'); + scope.min = 1; + scope.$digest(); + expect(element.hasClass('ng-invalid-min')).toBeTruthy(); + expect(element.val()).toEqual('$0.01'); + }); + + it('should be valid if no min value is set', () => { + scope.value = 0.01; + scope.$digest(); + expect(element.hasClass('ng-valid-min')).toBeTruthy(); + expect(element.val()).toEqual('$0.01'); + }); + + it('should do nothing if no min value is set and no ngModel value is provided', () => { + scope.value = undefined; + scope.$digest(); + expect(element.val()).toEqual(''); + scope.value = null; + scope.$digest(); + expect(element.val()).toEqual(''); + scope.value = ''; + scope.$digest(); + expect(element.val()).toEqual(''); + }); + + it('should support a min of zero', () => { + scope.value = -0.01; + scope.min = 0; + scope.$digest(); + expect(element.hasClass('ng-invalid-min')).toBeTruthy(); + expect(element.val()).toEqual('($0.01)'); + }); + + it('should do nothing when an invalid value is provided', () => { + scope.value = 4; + scope.min = '5px'; + scope.$digest(); + expect(element.hasClass('ng-valid-min')).toBeTruthy(); + }); + + it('should do nothing when no value is provided', () => { + scope.value = 4; + scope.$digest(); + expect(element.hasClass('ng-valid-min')).toBeTruthy(); + }); }); - it('should do nothing when an invalid value is provided', () => { - scope.value = 4; - scope.min = '5px'; - scope.$digest(); - expect(element.hasClass('ng-valid-min')).toBeTruthy(); + describe('Hard Cap', () => { + beforeEach(() => { + scope.hardCap = true; + scope.$digest(); + }); + + it('should change the value to the min if it falls below the min', () => { + scope.min = 1; + scope.value = 0; + scope.$digest(); + expect(element.val()).toEqual('$1.00'); + expect(scope.value).toEqual(1); + }); + + it('should change the value to min when the min changes', () => { + scope.min = 0; + scope.value = 0; + scope.$digest(); + expect(element.val()).toEqual('$0.00'); + expect(scope.value).toEqual(0); + scope.min = 1; + scope.$digest(); + expect(element.val()).toEqual('$1.00'); + expect(scope.value).toEqual(1); + }); + + it('should do nothing if no min value is set', () => { + scope.value = 1999999; + scope.$digest(); + expect(element.val()).toEqual('$1,999,999.00'); + }); + + it('should support a min of zero', () => { + scope.value = -0.01; + scope.min = 0; + scope.$digest(); + expect(element.val()).toEqual('$0.00'); + }); + + it('should do nothing when an invalid value is provided', () => { + scope.value = 4; + scope.min = '3px'; + scope.$digest(); + expect(element.val()).toEqual('$4.00'); + }); }); }); }); diff --git a/test/ng-currency/templates/variables.html b/test/ng-currency/templates/variables.html index b2d3974..9023a2a 100644 --- a/test/ng-currency/templates/variables.html +++ b/test/ng-currency/templates/variables.html @@ -5,4 +5,5 @@ min="{{min}}" max="{{max}}" fraction="{{fraction}}" - currency-symbol="{{currencySymbol}}"/> + currency-symbol="{{currencySymbol}}" + hard-cap="{{hardCap}}"/> From 4228d7bc06a3adb9895175887f1dc521f51e7634 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Mon, 1 Aug 2016 18:33:20 -0500 Subject: [PATCH 005/159] Preparation for 0.11.0 release * Updated examples in README * Added an issue template * Moved the changelog and contribution info to its own file * Added some extra information into the package.json file * Added myself to the authors/contributors list --- .github/ISSUE_TEMPLATE.md | 32 ++++++++++++++ CHANGELOG.md | 18 ++++++++ CONTRIBUTING.md | 4 ++ LICENSE | 21 +++++++++ README.md | 89 ++++++++++++++++++--------------------- bower.json | 9 ++-- package.json | 29 +++++++------ 7 files changed, 139 insertions(+), 63 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..fa6727c --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,32 @@ +### Description + + +### Expected outcome + + + +### Actual outcome + + + +### Live Demo + + +### Steps to reproduce + + + +### Browsers Affected + +- [ ] Chrome +- [ ] Firefox +- [ ] Safari 9 +- [ ] Safari 8 +- [ ] Safari 7 +- [ ] Edge +- [ ] IE 11 +- [ ] IE 10 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..532d1c6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,18 @@ +## 0.10.x + +* Migrated scope bindings to use `attrs.$observe` + +**Migration from 0.9.x!** +Bindings should be updated to use the curly brace syntax + +## 0.9.x + +* Focusing on an input will show the model value rather then the formatted value + +## 0.8.x + +* Updated to Angular 1.3.x + +## 0.7.x + +* Supports Angular 1.2.x diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..1fd61b5 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,4 @@ +# ng-currency +## Guide for Contributors + +Please submit all pull requests the against master branch. If your unit test contains JavaScript patches or features, you should include relevant unit tests. Thanks! diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..79a7163 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2012 - 2016 Luis Aguirre + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md index 55d90ba..994725e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ -[![Build Status](https://travis-ci.org/aguirrel/ng-currency.svg?branch=master)](https://travis-ci.org/aguirrel/ng-currency) +# ng-currency +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Travis][travis-ci-image]][travis-ci-url] ngCurrency is a directive that enables seamless use of currency inputs. @@ -15,21 +18,6 @@ Main features: * Enable/Disable show zeroes using display-zeroes 'true' or 'false' * Not isolated scope. It plays well with others directives! -## Versions - -* 0.10.x vs 0.9.x - -Now directive plays well with others directives, mainly "scope" was removed and now only use attrs variables. -**If you migrate from 0.9.x!** Main impact in this new change is if you use something like min="minvar", you should change it to min="{{minvar}}". - -* 0.9.x vs 0.8.x - -When you focus on input with ng-currency directive, model value will be displayed instead of currency formatted text (I.E: instead of 1,40 € will be 1.4 on focus) . So it's easier to use only numeric pad. - -* 0.7.x vs 0.8.x - -If you use angular 1.2.x please, use 0.7.x version (v0.7.0 branch). If you use angular 1.3.x or above just use 0.8.x version instead (master branch). - ## npm ```sh @@ -53,76 +41,76 @@ Then add a ` ``` + Inject the `ngCurrency` module into your app: -> -``` JavaScript +```javascript angular.module('myApp', ['ng-currency']); ``` + In your input tag -> -``` html +```html ``` -+ It is also possible to add 'min' and 'max' validations +## Bindings + +### Min/Max +* Default: undefined +* Description: Specifies the range the ngModel value can be within for validation and hard-cap -> -``` html +```html ``` + If you want to be able to dynamically enable/disable validations from a controller you can use the following -> -``` html +```html ``` -+ It already shows the default currency symbol, but you can define a currency symbol, so that it will use this instead. +### Currency Symbol +* Default: Locale Currency Symbol +* Description: Prefixes the formatted currency value with the currency symbol -> -``` html +```html ``` -+ Disable currency in field +### Active +* Default: true +* Description: Dynamically disable/enable ng-currency -> -``` html +```html ``` -+ Optional fraction value to take advantage of the currency filter's third param. The default remains 2 decimal places. +### Fraction +* Default: 2 +* Description: Determines the number of decimal places -> -``` html - +```html + ``` +### Hard Cap +* Default: false +* Description: Forces the ngModel value to stay within the min/max range - -## Contributing - -Please submit all pull requests the against master branch. If your unit test contains JavaScript patches or features, you should include relevant unit tests. Thanks! - - +```html + +``` ## Authors @@ -135,7 +123,7 @@ Please submit all pull requests the against master branch. If your unit test con The MIT License - Copyright (c) 2012 - 2014 Olivier Louvignes + Copyright (c) 2012 - 2016 Luis Aguirre Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -154,3 +142,10 @@ Please submit all pull requests the against master branch. If your unit test con LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +[npm-version-image]: http://img.shields.io/npm/v/ng-currency.svg?style=flat +[npm-downloads-image]: http://img.shields.io/npm/dm/ng-currency.svg?style=flat +[npm-url]: https://npmjs.org/package/ng-currency + +[travis-ci-image]: https://img.shields.io/travis/aguirrel/ng-currency.svg?style=flat +[travis-ci-url]: https://travis-ci.org/aguirrel/ng-currency diff --git a/bower.json b/bower.json index c3ac95d..4d71c62 100644 --- a/bower.json +++ b/bower.json @@ -1,18 +1,19 @@ { "name": "ng-currency", "version": "0.10.1", + "main": "dist/ng-currency.js", + "description": "Directive that works in conjunction with currency filter.", + "homepage": "http://alaguirre.com", "authors": [ - "Luis Aguirre " + "Luis Aguirre ", + "Nick Woodward " ], - "description": "Directive that works in conjunction with currency filter.", - "main": "dist/ng-currency.js", "keywords": [ "currency", "directive", "filter" ], "license": "MIT", - "homepage": "http://alaguirre.com", "ignore": [ "**/.*", "node_modules", diff --git a/package.json b/package.json index 61fa944..7f020f7 100644 --- a/package.json +++ b/package.json @@ -1,19 +1,30 @@ { "name": "ng-currency", "version": "0.10.1", - "authors": [ - "Luis Aguirre " - ], - "description": "Directive that works in conjunction with currency filter.", - "url": "https://github.com/aguirrel/ng-currency.git", "main": "dist/ng-currency.js", + "description": "Directive that works in conjunction with currency filter.", + "homepage": "http://alaguirre.com", + "bugs": "https://github.com/salte-io/salte-seed/issues", + "contributors": [ + "Luis Aguirre ", + "Nick Woodward " + ], + "repository": { + "type": "git", + "url": "https://github.com/aguirrel/ng-currency.git" + }, "keywords": [ "currency", "directive", "filter" ], + "scripts": { + "tdd": "karma start", + "test": "karma start --single-run", + "build:dev": "webpack -d", + "build:prod": "webpack -p" + }, "license": "MIT", - "homepage": "http://alaguirre.com", "devDependencies": { "angular": "~1.3", "angular-mocks": "~1.3", @@ -37,11 +48,5 @@ "ng-annotate-loader": "0.1.1", "phantomjs-prebuilt": "2.1.8", "webpack": "1.13.1" - }, - "scripts": { - "tdd": "karma start", - "test": "karma start --single-run", - "build:dev": "webpack -d", - "build:prod": "webpack -p" } } From fafd4e1715b2e04754cb7d719e83355a9e7e429f Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Mon, 1 Aug 2016 18:33:48 -0500 Subject: [PATCH 006/159] 0.11.0 --- CHANGELOG.md | 7 +++++++ bower.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 532d1c6..646cdb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.11.0 + +* Added support for forcing the ngModel value to stay within the min/max range (hard-cap) +* Removed isolated scope +* Created a build process for Travis CI to catch linting and unit test errors +* Refactored the unit tests to reduce duplication + ## 0.10.x * Migrated scope bindings to use `attrs.$observe` diff --git a/bower.json b/bower.json index 4d71c62..45f4b71 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.10.1", + "version": "0.11.0", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", diff --git a/package.json b/package.json index 7f020f7..92d42dd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.10.1", + "version": "0.11.0", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", From 652fc4853dec4d35ed44a9d5fc0f9196242d2bf6 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Tue, 2 Aug 2016 11:27:44 -0500 Subject: [PATCH 007/159] Fixed an issue where fields with a min greater than zero could become invalid * Added unit tests to prevent regression * Added no-var and prefer-const rules --- .eslintrc.yml | 2 ++ src/ng-currency.directive.js | 22 +++++++++---------- .../ng-currency/ng-currency.directive.spec.js | 16 ++++++++++++++ 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index e1c1da4..130b979 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -10,6 +10,8 @@ rules: quotes: - 2 - single + no-var: 2 + prefer-const: 2 # Rules we want to ignore max-nested-callbacks: 0 no-warning-comments: 0 diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 4801a7c..4ec18fa 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -66,8 +66,8 @@ export default function ngCurrency($filter, $locale, $timeout) { function clearValue(value) { value = String(value); - var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; - var cleared = null; + let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; + let cleared = null; if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && @@ -76,10 +76,10 @@ export default function ngCurrency($filter, $locale, $timeout) { } // Replace negative pattern to minus sign (-) - var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction); - var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); - var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); - var value_dummy_txt = value.replace(neg_regexp.exec(value), ''); + const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction); + const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); + const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); + const value_dummy_txt = value.replace(neg_regexp.exec(value), ''); // If is negative if (neg_dummy_txt === value_dummy_txt) { @@ -107,7 +107,7 @@ export default function ngCurrency($filter, $locale, $timeout) { } function executeFormatters() { - var viewValue = ngModel.$$rawModelValue; + let viewValue = ngModel.$$rawModelValue; for (let i = ngModel.$formatters.length - 1; i >= 0; i--) { viewValue = ngModel.$formatters[i](viewValue); } @@ -147,7 +147,7 @@ export default function ngCurrency($filter, $locale, $timeout) { }); ngModel.$validators.min = (value) => { - if (!ngRequired && isNaN(value)) { + if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { return true; } return !active || @@ -156,7 +156,7 @@ export default function ngCurrency($filter, $locale, $timeout) { }; ngModel.$validators.max = (value) => { - if (!ngRequired && isNaN(value)) { + if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { return true; } return !active || @@ -171,7 +171,7 @@ export default function ngCurrency($filter, $locale, $timeout) { scope.$on('currencyRedraw', () => { if (initialized) { ngModel.$commitViewValue(); - let value = keepInRange(ngModel.$$rawModelValue); + const value = keepInRange(ngModel.$$rawModelValue); if (value !== ngModel.$$rawModelValue) { ngModel.$setViewValue(value); ngModel.$commitViewValue(); @@ -181,7 +181,7 @@ export default function ngCurrency($filter, $locale, $timeout) { }); element.on('focus', () => { - var viewValue = ngModel.$$rawModelValue; + let viewValue = ngModel.$$rawModelValue; if (isNaN(viewValue) || viewValue === '' || viewValue === null) { viewValue = ''; diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index 63b1f8b..af9dd92 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -299,6 +299,14 @@ describe('ngCurrency directive tests', () => { scope.$digest(); expect(element.hasClass('ng-valid-max')).toBeTruthy(); }); + + it('should support invalid ngModel values', () => { + scope.value = ''; + scope.max = -0.01; + scope.$digest(); + expect(element.hasClass('ng-valid-max')).toBeTruthy(); + expect(element.val()).toEqual(''); + }); }); describe('Hard Cap', () => { @@ -416,6 +424,14 @@ describe('ngCurrency directive tests', () => { scope.$digest(); expect(element.hasClass('ng-valid-min')).toBeTruthy(); }); + + it('should support invalid ngModel values', () => { + scope.value = ''; + scope.min = 0.01; + scope.$digest(); + expect(element.hasClass('ng-valid-min')).toBeTruthy(); + expect(element.val()).toEqual(''); + }); }); describe('Hard Cap', () => { From e2d82a5088cbfa3524cd5b81e4f840de4c47ed75 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Tue, 2 Aug 2016 11:27:44 -0500 Subject: [PATCH 008/159] Fixed an issue where fields with a min greater than zero could become invalid * Added unit tests to prevent regression * Added no-var and prefer-const rules --- .eslintrc.yml | 2 ++ dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- src/ng-currency.directive.js | 22 +++++++++---------- .../ng-currency/ng-currency.directive.spec.js | 16 ++++++++++++++ 5 files changed, 31 insertions(+), 13 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index e1c1da4..130b979 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -10,6 +10,8 @@ rules: quotes: - 2 - single + no-var: 2 + prefer-const: 2 # Rules we want to ignore max-nested-callbacks: 0 no-warning-comments: 0 diff --git a/dist/ng-currency.js b/dist/ng-currency.js index fca3d76..9d9da29 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),o=t(u),i=r(1),c=t(i),a=o["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,o,i){function c(){$&&(i.$validate(),t.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(t=".");var o=e("currency")("-1",d(),R),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=o.replace(i.exec(o),""),l=r.replace(i.exec(r),"");return c===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==M?M:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=i.$$rawModelValue,n=i.$formatters.length-1;n>=0;n--)e=i.$formatters[n](e);i.$setViewValue(e),i.$render()}function v(e){if(g&&p&&[void 0,null,""].indexOf(e)===-1){if(void 0!==x&&e>x)return x;if(void 0!==m&&e=m)},i.$validators.max=function(e){return!(N||!isNaN(e))||(!g||[void 0,null].indexOf(x)!==-1||isNaN(x)||e<=x)},i.$validators.fraction=function(e){return!g||!e||!isNaN(e)},t.$on("currencyRedraw",function(){if($){i.$commitViewValue();var e=v(i.$$rawModelValue);e!==i.$$rawModelValue&&(i.$setViewValue(e),i.$commitViewValue()),s()}}),u.on("focus",function(){var e=i.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(R),i.$setViewValue(e),i.$render()}),u.on("blur",function(){i.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),i=t(u),o=r(1),c=t(o),a=i["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,i,o){function c(){$&&(o.$validate(),t.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(t=".");var i=e("currency")("-1",d(),R),o=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=i.replace(o.exec(i),""),l=r.replace(o.exec(r),"");return c===l&&(r="-"+o.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==M?M:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=o.$$rawModelValue,n=o.$formatters.length-1;n>=0;n--)e=o.$formatters[n](e);o.$setViewValue(e),o.$render()}function v(e){if(g&&p&&[void 0,null,""].indexOf(e)===-1){if(void 0!==m&&e>m)return m;if(void 0!==x&&e=x)},o.$validators.max=function(e){return!(N||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(m)!==-1||isNaN(m)||e<=m)},o.$validators.fraction=function(e){return!g||!e||!isNaN(e)},t.$on("currencyRedraw",function(){if($){o.$commitViewValue();var e=v(o.$$rawModelValue);e!==o.$$rawModelValue&&(o.$setViewValue(e),o.$commitViewValue()),s()}}),u.on("focus",function(){var e=o.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(R),o.$setViewValue(e),o.$render()}),u.on("blur",function(){o.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 556792f..981be9d 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 1554cdbb6e2cb475acdf","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","executeFormatters","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","keepInRange","active","hardCap","max","min","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t refresh();\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function executeFormatters() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t function keepInRange(value) {\n\t if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n\t if (max !== undefined && value > max) {\n\t return max;\n\t } else if (min !== undefined && value < min) {\n\t return min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$parsers.push(keepInRange);\n\t ngModel.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && isNaN(value)) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t var value = keepInRange(ngModel.$$rawModelValue);\n\t if (value !== ngModel.$$rawModelValue) {\n\t ngModel.$setViewValue(value);\n\t ngModel.$commitViewValue();\n\t }\n\t executeFormatters();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t executeFormatters();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 1554cdbb6e2cb475acdf\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n refresh();\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n var cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function executeFormatters() {\n var viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n function keepInRange(value) {\n if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n if (max !== undefined && value > max) {\n return max;\n } else if (min !== undefined && value < min) {\n return min;\n }\n }\n return value;\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$parsers.push(keepInRange);\n ngModel.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && isNaN(value)) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n let value = keepInRange(ngModel.$$rawModelValue);\n if (value !== ngModel.$$rawModelValue) {\n ngModel.$setViewValue(value);\n ngModel.$commitViewValue();\n }\n executeFormatters();\n }\n });\n\n element.on('focus', () => {\n var viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n executeFormatters();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap df17112b096ca73895c7","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","executeFormatters","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","keepInRange","active","hardCap","max","min","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t refresh();\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function executeFormatters() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t function keepInRange(value) {\n\t if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n\t if (max !== undefined && value > max) {\n\t return max;\n\t } else if (min !== undefined && value < min) {\n\t return min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$parsers.push(keepInRange);\n\t ngModel.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t var value = keepInRange(ngModel.$$rawModelValue);\n\t if (value !== ngModel.$$rawModelValue) {\n\t ngModel.$setViewValue(value);\n\t ngModel.$commitViewValue();\n\t }\n\t executeFormatters();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t executeFormatters();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap df17112b096ca73895c7\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n refresh();\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function executeFormatters() {\n let viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n function keepInRange(value) {\n if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n if (max !== undefined && value > max) {\n return max;\n } else if (min !== undefined && value < min) {\n return min;\n }\n }\n return value;\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$parsers.push(keepInRange);\n ngModel.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n const value = keepInRange(ngModel.$$rawModelValue);\n if (value !== ngModel.$$rawModelValue) {\n ngModel.$setViewValue(value);\n ngModel.$commitViewValue();\n }\n executeFormatters();\n }\n });\n\n element.on('focus', () => {\n let viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n executeFormatters();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 4801a7c..4ec18fa 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -66,8 +66,8 @@ export default function ngCurrency($filter, $locale, $timeout) { function clearValue(value) { value = String(value); - var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; - var cleared = null; + let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; + let cleared = null; if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && @@ -76,10 +76,10 @@ export default function ngCurrency($filter, $locale, $timeout) { } // Replace negative pattern to minus sign (-) - var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction); - var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); - var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); - var value_dummy_txt = value.replace(neg_regexp.exec(value), ''); + const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction); + const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); + const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); + const value_dummy_txt = value.replace(neg_regexp.exec(value), ''); // If is negative if (neg_dummy_txt === value_dummy_txt) { @@ -107,7 +107,7 @@ export default function ngCurrency($filter, $locale, $timeout) { } function executeFormatters() { - var viewValue = ngModel.$$rawModelValue; + let viewValue = ngModel.$$rawModelValue; for (let i = ngModel.$formatters.length - 1; i >= 0; i--) { viewValue = ngModel.$formatters[i](viewValue); } @@ -147,7 +147,7 @@ export default function ngCurrency($filter, $locale, $timeout) { }); ngModel.$validators.min = (value) => { - if (!ngRequired && isNaN(value)) { + if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { return true; } return !active || @@ -156,7 +156,7 @@ export default function ngCurrency($filter, $locale, $timeout) { }; ngModel.$validators.max = (value) => { - if (!ngRequired && isNaN(value)) { + if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { return true; } return !active || @@ -171,7 +171,7 @@ export default function ngCurrency($filter, $locale, $timeout) { scope.$on('currencyRedraw', () => { if (initialized) { ngModel.$commitViewValue(); - let value = keepInRange(ngModel.$$rawModelValue); + const value = keepInRange(ngModel.$$rawModelValue); if (value !== ngModel.$$rawModelValue) { ngModel.$setViewValue(value); ngModel.$commitViewValue(); @@ -181,7 +181,7 @@ export default function ngCurrency($filter, $locale, $timeout) { }); element.on('focus', () => { - var viewValue = ngModel.$$rawModelValue; + let viewValue = ngModel.$$rawModelValue; if (isNaN(viewValue) || viewValue === '' || viewValue === null) { viewValue = ''; diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index 63b1f8b..af9dd92 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -299,6 +299,14 @@ describe('ngCurrency directive tests', () => { scope.$digest(); expect(element.hasClass('ng-valid-max')).toBeTruthy(); }); + + it('should support invalid ngModel values', () => { + scope.value = ''; + scope.max = -0.01; + scope.$digest(); + expect(element.hasClass('ng-valid-max')).toBeTruthy(); + expect(element.val()).toEqual(''); + }); }); describe('Hard Cap', () => { @@ -416,6 +424,14 @@ describe('ngCurrency directive tests', () => { scope.$digest(); expect(element.hasClass('ng-valid-min')).toBeTruthy(); }); + + it('should support invalid ngModel values', () => { + scope.value = ''; + scope.min = 0.01; + scope.$digest(); + expect(element.hasClass('ng-valid-min')).toBeTruthy(); + expect(element.val()).toEqual(''); + }); }); describe('Hard Cap', () => { From 07f5e57e53743efe173048d0c331ad344dd29547 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Tue, 2 Aug 2016 11:50:05 -0500 Subject: [PATCH 009/159] 0.11.1 --- .gitignore | 1 + CHANGELOG.md | 4 ++++ bower.json | 2 +- package.json | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 526efb4..e47c98d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules bower_components coverage +npm-debug.log diff --git a/CHANGELOG.md b/CHANGELOG.md index 646cdb2..3cd30ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.11.1 + +* Fixed a bug that caused empty ngModel values to get marked as invalid when the min was set to anything above zero or the max was set to anything below zero + ## 0.11.0 * Added support for forcing the ngModel value to stay within the min/max range (hard-cap) diff --git a/bower.json b/bower.json index 45f4b71..a5d349f 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.11.0", + "version": "0.11.1", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", diff --git a/package.json b/package.json index 92d42dd..77e6be3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.11.0", + "version": "0.11.1", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", From 659c02ad4b7c0321f48ca4603f823b5597502974 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Thu, 4 Aug 2016 18:42:12 -0500 Subject: [PATCH 010/159] Fixed an issue which made it impossible to select content of the input field on focus --- dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- karma.conf.js | 5 +- package.json | 3 + src/ng-currency.directive.js | 7 ++- test/.eslintrc.yml | 1 + .../ng-currency/ng-currency.directive.spec.js | 55 ++++++++++++++----- .../templates/select-all-on-focus.html | 1 + webpack.config.js | 2 +- 9 files changed, 57 insertions(+), 21 deletions(-) create mode 100644 test/ng-currency/templates/select-all-on-focus.html diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 9d9da29..6b01f46 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),i=t(u),o=r(1),c=t(o),a=i["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,i,o){function c(){$&&(o.$validate(),t.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(t=".");var i=e("currency")("-1",d(),R),o=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=i.replace(o.exec(i),""),l=r.replace(o.exec(r),"");return c===l&&(r="-"+o.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==M?M:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=o.$$rawModelValue,n=o.$formatters.length-1;n>=0;n--)e=o.$formatters[n](e);o.$setViewValue(e),o.$render()}function v(e){if(g&&p&&[void 0,null,""].indexOf(e)===-1){if(void 0!==m&&e>m)return m;if(void 0!==x&&e=x)},o.$validators.max=function(e){return!(N||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(m)!==-1||isNaN(m)||e<=m)},o.$validators.fraction=function(e){return!g||!e||!isNaN(e)},t.$on("currencyRedraw",function(){if($){o.$commitViewValue();var e=v(o.$$rawModelValue);e!==o.$$rawModelValue&&(o.$setViewValue(e),o.$commitViewValue()),s()}}),u.on("focus",function(){var e=o.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(R),o.$setViewValue(e),o.$render()}),u.on("blur",function(){o.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(u){if(r[u])return r[u].exports;var t=r[u]={exports:{},id:u,loaded:!1};return e[u].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var t=r(2),i=u(t),o=r(1),c=u(o),a=i["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(u,t,i,o){function c(){$&&(o.$validate(),u.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function l(r){r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,t=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(u=".");var i=e("currency")("-1",d(),R),o=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=i.replace(o.exec(i),""),l=r.replace(o.exec(r),"");return c===l&&(r="-"+o.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(u).test(r)&&(t=r.match(a(u)).join("").match(f(u)),t=t?t[0].replace(u,"."):null),t}function d(){return void 0!==g?g:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=o.$$rawModelValue,n=o.$formatters.length-1;n>=0;n--)e=o.$formatters[n](e);o.$setViewValue(e),o.$render()}function v(e){if(N&&p&&[void 0,null,""].indexOf(e)===-1){if(void 0!==m&&e>m)return m;if(void 0!==x&&e=x)},o.$validators.max=function(e){return!(M||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!N||[void 0,null].indexOf(m)!==-1||isNaN(m)||e<=m)},o.$validators.fraction=function(e){return!N||!e||!isNaN(e)},u.$on("currencyRedraw",function(){if($){o.$commitViewValue();var e=v(o.$$rawModelValue);e!==o.$$rawModelValue&&(o.$setViewValue(e),o.$commitViewValue()),s()}}),t.on("focus",function(){var e=o.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(R),o.$viewValue!==e&&(o.$setViewValue(e),o.$render(),t.triggerHandler("focus"))}),t.on("blur",function(){o.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 981be9d..86bf48c 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap df17112b096ca73895c7","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","executeFormatters","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","keepInRange","active","hardCap","max","min","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t refresh();\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function executeFormatters() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t function keepInRange(value) {\n\t if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n\t if (max !== undefined && value > max) {\n\t return max;\n\t } else if (min !== undefined && value < min) {\n\t return min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$parsers.push(keepInRange);\n\t ngModel.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t var value = keepInRange(ngModel.$$rawModelValue);\n\t if (value !== ngModel.$$rawModelValue) {\n\t ngModel.$setViewValue(value);\n\t ngModel.$commitViewValue();\n\t }\n\t executeFormatters();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t executeFormatters();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap df17112b096ca73895c7\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n refresh();\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function executeFormatters() {\n let viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n function keepInRange(value) {\n if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n if (max !== undefined && value > max) {\n return max;\n } else if (min !== undefined && value < min) {\n return min;\n }\n }\n return value;\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$parsers.push(keepInRange);\n ngModel.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n const value = keepInRange(ngModel.$$rawModelValue);\n if (value !== ngModel.$$rawModelValue) {\n ngModel.$setViewValue(value);\n ngModel.$commitViewValue();\n }\n executeFormatters();\n }\n });\n\n element.on('focus', () => {\n let viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n executeFormatters();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 42e882a8b251edd246b6","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","executeFormatters","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","keepInRange","active","hardCap","max","min","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$viewValue","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t refresh();\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function executeFormatters() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t function keepInRange(value) {\n\t if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n\t if (max !== undefined && value > max) {\n\t return max;\n\t } else if (min !== undefined && value < min) {\n\t return min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$parsers.push(keepInRange);\n\t ngModel.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t var value = keepInRange(ngModel.$$rawModelValue);\n\t if (value !== ngModel.$$rawModelValue) {\n\t ngModel.$setViewValue(value);\n\t ngModel.$commitViewValue();\n\t }\n\t executeFormatters();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t if (ngModel.$viewValue !== viewValue) {\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t element.triggerHandler('focus');\n\t }\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t executeFormatters();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 42e882a8b251edd246b6\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n refresh();\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function executeFormatters() {\n let viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n function keepInRange(value) {\n if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n if (max !== undefined && value > max) {\n return max;\n } else if (min !== undefined && value < min) {\n return min;\n }\n }\n return value;\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$parsers.push(keepInRange);\n ngModel.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n const value = keepInRange(ngModel.$$rawModelValue);\n if (value !== ngModel.$$rawModelValue) {\n ngModel.$setViewValue(value);\n ngModel.$commitViewValue();\n }\n executeFormatters();\n }\n });\n\n element.on('focus', () => {\n let viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n if (ngModel.$viewValue !== viewValue) {\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n element.triggerHandler('focus');\n }\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n executeFormatters();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/karma.conf.js b/karma.conf.js index 7a39249..2705c11 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,11 +1,12 @@ -var webpackConfig = require('./webpack.test.config.js'); +const webpackConfig = require('./webpack.test.config.js'); module.exports = function(config) { config.set({ basePath: '', frameworks: [ - 'jasmine' + 'jasmine', + 'sinon' ], files: [ diff --git a/package.json b/package.json index 77e6be3..1aa25f6 100644 --- a/package.json +++ b/package.json @@ -43,10 +43,13 @@ "karma-jasmine": "^1.0.2", "karma-mocha-reporter": "2.0.4", "karma-phantomjs-launcher": "1.0.1", + "karma-sinon": "^1.0.5", "karma-sourcemap-loader": "0.3.7", "karma-webpack": "1.7.0", "ng-annotate-loader": "0.1.1", + "ng-select-all-on-focus": "1.0.3", "phantomjs-prebuilt": "2.1.8", + "sinon": "^1.17.5", "webpack": "1.13.1" } } diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 4ec18fa..4a8cf60 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -188,8 +188,11 @@ export default function ngCurrency($filter, $locale, $timeout) { } else { viewValue = Number(viewValue).toFixed(fraction); } - ngModel.$setViewValue(viewValue); - ngModel.$render(); + if (ngModel.$viewValue !== viewValue) { + ngModel.$setViewValue(viewValue); + ngModel.$render(); + element.triggerHandler('focus'); + } }); element.on('blur', () => { diff --git a/test/.eslintrc.yml b/test/.eslintrc.yml index 158cc84..f3d4559 100644 --- a/test/.eslintrc.yml +++ b/test/.eslintrc.yml @@ -6,6 +6,7 @@ env: globals: assert: true expect: true + sinon: true rules: jasmine/no-suite-callback-args: 2 jasmine/no-suite-dupes: diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index af9dd92..6f612fc 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -1,12 +1,14 @@ +import 'ng-select-all-on-focus'; import ngCurrency from '../../src/ng-currency.module.js'; import defaults from './templates/defaults.html'; import variables from './templates/variables.html'; import centsToDollars from './templates/cents-to-dollars.html'; +import selectAllOnFocus from './templates/select-all-on-focus.html'; describe('ngCurrency directive tests', () => { let element, scope; - beforeEach(angular.mock.module(ngCurrency)); + beforeEach(angular.mock.module('rb.select-all-on-focus')); beforeEach(angular.mock.module(ngCurrency, ($compileProvider) => { $compileProvider.directive('centsToDollars', () => { return { @@ -115,22 +117,47 @@ describe('ngCurrency directive tests', () => { }); describe('Support other Directives', () => { - beforeEach(angular.mock.inject(($compile) => { - element = $compile(centsToDollars)(scope); - scope.value = 100; - scope.$digest(); - })); + describe('Modifying ngModel Value', () => { + beforeEach(angular.mock.inject(($compile) => { + element = $compile(centsToDollars)(scope); + scope.value = 100; + scope.$digest(); + })); + + it('should support multiple directives', () => { + expect(element.val()).toEqual('$1.00'); + }); + + it('should update the model correctly', () => { + element.val('$123.45'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(scope.value).toEqual(12345); + expect(element.val()).toEqual('$123.45'); + }); - it('should support multiple directives', () => { - expect(element.val()).toEqual('$1.00'); + it('should update the model correctly', () => { + element.val('$123.45'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(scope.value).toEqual(12345); + expect(element.val()).toEqual('$123.45'); + }); }); - it('should update the model correctly', () => { - element.val('$123.45'); - element.triggerHandler('input'); - element.triggerHandler('blur'); - expect(scope.value).toEqual(12345); - expect(element.val()).toEqual('$123.45'); + describe('Reading Input Value', () => { + beforeEach(angular.mock.inject(($compile) => { + element = $compile(selectAllOnFocus)(scope); + element[0].setSelectionRange = sinon.spy(); + scope.value = 0; + scope.$digest(); + })); + + it('should support selecting the real value', () => { + element.triggerHandler('focus'); + expect(element[0].setSelectionRange.callCount).toEqual(2); + expect(element[0].setSelectionRange.calledWith(0, 4)).toBeTruthy(); + }); }); }); }); diff --git a/test/ng-currency/templates/select-all-on-focus.html b/test/ng-currency/templates/select-all-on-focus.html new file mode 100644 index 0000000..fe3105c --- /dev/null +++ b/test/ng-currency/templates/select-all-on-focus.html @@ -0,0 +1 @@ + diff --git a/webpack.config.js b/webpack.config.js index 18bf5e5..c0c36c8 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,4 +1,4 @@ -var path = require('path'); +const path = require('path'); module.exports = { context: path.join(__dirname, 'src'), From 903470a0ed1eeeaa152dc5e501ae61f11b1e2988 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Fri, 5 Aug 2016 17:48:26 -0500 Subject: [PATCH 011/159] 0.11.2 --- CHANGELOG.md | 4 ++++ bower.json | 2 +- package.json | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3cd30ae..a15e32f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.11.2 + +* Fixed an issue which made it impossible to select content of the input field on focus + ## 0.11.1 * Fixed a bug that caused empty ngModel values to get marked as invalid when the min was set to anything above zero or the max was set to anything below zero diff --git a/bower.json b/bower.json index a5d349f..e73922e 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.11.1", + "version": "0.11.2", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", diff --git a/package.json b/package.json index 1aa25f6..8e1ebd1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.11.1", + "version": "0.11.2", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", From 46a8fe4b09577881fec2a18d450e708eccf194f5 Mon Sep 17 00:00:00 2001 From: Luis Aguirre Date: Fri, 12 Aug 2016 12:22:33 -0300 Subject: [PATCH 012/159] Fix #102 - Field becomes dirty when using dynamic currency-symbol --- CHANGELOG.md | 4 ++++ bower.json | 2 +- dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- package.json | 2 +- src/ng-currency.directive.js | 1 + test/ng-currency/ng-currency.directive.spec.js | 9 +++++++++ 7 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a15e32f..a04652c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.11.3 + +* Fixed a bug which fields becomes dirty instead of pristine + ## 0.11.2 * Fixed an issue which made it impossible to select content of the input field on focus diff --git a/bower.json b/bower.json index e73922e..2638248 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.11.2", + "version": "0.11.3", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 6b01f46..9b817c9 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(u){if(r[u])return r[u].exports;var t=r[u]={exports:{},id:u,loaded:!1};return e[u].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var t=r(2),i=u(t),o=r(1),c=u(o),a=i["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(u,t,i,o){function c(){$&&(o.$validate(),u.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function l(r){r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,t=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(u=".");var i=e("currency")("-1",d(),R),o=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=i.replace(o.exec(i),""),l=r.replace(o.exec(r),"");return c===l&&(r="-"+o.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(u).test(r)&&(t=r.match(a(u)).join("").match(f(u)),t=t?t[0].replace(u,"."):null),t}function d(){return void 0!==g?g:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=o.$$rawModelValue,n=o.$formatters.length-1;n>=0;n--)e=o.$formatters[n](e);o.$setViewValue(e),o.$render()}function v(e){if(N&&p&&[void 0,null,""].indexOf(e)===-1){if(void 0!==m&&e>m)return m;if(void 0!==x&&e=x)},o.$validators.max=function(e){return!(M||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!N||[void 0,null].indexOf(m)!==-1||isNaN(m)||e<=m)},o.$validators.fraction=function(e){return!N||!e||!isNaN(e)},u.$on("currencyRedraw",function(){if($){o.$commitViewValue();var e=v(o.$$rawModelValue);e!==o.$$rawModelValue&&(o.$setViewValue(e),o.$commitViewValue()),s()}}),t.on("focus",function(){var e=o.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(R),o.$viewValue!==e&&(o.$setViewValue(e),o.$render(),t.triggerHandler("focus"))}),t.on("blur",function(){o.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),i=t(u),o=r(1),c=t(o),a=i["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,i,o){function c(){$&&(o.$validate(),t.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(t=".");var i=e("currency")("-1",d(),R),o=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=i.replace(o.exec(i),""),l=r.replace(o.exec(r),"");return c===l&&(r="-"+o.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==g?g:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=o.$$rawModelValue,n=o.$formatters.length-1;n>=0;n--)e=o.$formatters[n](e);o.$setViewValue(e),o.$render()}function v(e){if(N&&p&&[void 0,null,""].indexOf(e)===-1){if(void 0!==m&&e>m)return m;if(void 0!==x&&e=x)},o.$validators.max=function(e){return!(M||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!N||[void 0,null].indexOf(m)!==-1||isNaN(m)||e<=m)},o.$validators.fraction=function(e){return!N||!e||!isNaN(e)},t.$on("currencyRedraw",function(){if($){o.$commitViewValue();var e=v(o.$$rawModelValue);e!==o.$$rawModelValue&&(o.$setViewValue(e),o.$commitViewValue()),s()}}),u.on("focus",function(){var e=o.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(R),o.$viewValue!==e&&(o.$setViewValue(e),o.$render(),u.triggerHandler("focus"))}),u.on("blur",function(){o.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 86bf48c..c801d5a 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 42e882a8b251edd246b6","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","executeFormatters","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","keepInRange","active","hardCap","max","min","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$viewValue","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t refresh();\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function executeFormatters() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t function keepInRange(value) {\n\t if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n\t if (max !== undefined && value > max) {\n\t return max;\n\t } else if (min !== undefined && value < min) {\n\t return min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$parsers.push(keepInRange);\n\t ngModel.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t var value = keepInRange(ngModel.$$rawModelValue);\n\t if (value !== ngModel.$$rawModelValue) {\n\t ngModel.$setViewValue(value);\n\t ngModel.$commitViewValue();\n\t }\n\t executeFormatters();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t if (ngModel.$viewValue !== viewValue) {\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t element.triggerHandler('focus');\n\t }\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t executeFormatters();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 42e882a8b251edd246b6\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n refresh();\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function executeFormatters() {\n let viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n function keepInRange(value) {\n if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n if (max !== undefined && value > max) {\n return max;\n } else if (min !== undefined && value < min) {\n return min;\n }\n }\n return value;\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$parsers.push(keepInRange);\n ngModel.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n const value = keepInRange(ngModel.$$rawModelValue);\n if (value !== ngModel.$$rawModelValue) {\n ngModel.$setViewValue(value);\n ngModel.$commitViewValue();\n }\n executeFormatters();\n }\n });\n\n element.on('focus', () => {\n let viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n if (ngModel.$viewValue !== viewValue) {\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n element.triggerHandler('focus');\n }\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n executeFormatters();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap cdb9dccbc3c568fc6a7e","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","executeFormatters","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","keepInRange","active","hardCap","max","min","ngRequired","$observe","Number","$setPristine","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$viewValue","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t refresh();\n\t ngModel.$setPristine();\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function executeFormatters() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t function keepInRange(value) {\n\t if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n\t if (max !== undefined && value > max) {\n\t return max;\n\t } else if (min !== undefined && value < min) {\n\t return min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$parsers.push(keepInRange);\n\t ngModel.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t var value = keepInRange(ngModel.$$rawModelValue);\n\t if (value !== ngModel.$$rawModelValue) {\n\t ngModel.$setViewValue(value);\n\t ngModel.$commitViewValue();\n\t }\n\t executeFormatters();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t if (ngModel.$viewValue !== viewValue) {\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t element.triggerHandler('focus');\n\t }\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t executeFormatters();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap cdb9dccbc3c568fc6a7e\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n refresh();\n ngModel.$setPristine();\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function executeFormatters() {\n let viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n function keepInRange(value) {\n if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n if (max !== undefined && value > max) {\n return max;\n } else if (min !== undefined && value < min) {\n return min;\n }\n }\n return value;\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$parsers.push(keepInRange);\n ngModel.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n const value = keepInRange(ngModel.$$rawModelValue);\n if (value !== ngModel.$$rawModelValue) {\n ngModel.$setViewValue(value);\n ngModel.$commitViewValue();\n }\n executeFormatters();\n }\n });\n\n element.on('focus', () => {\n let viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n if (ngModel.$viewValue !== viewValue) {\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n element.triggerHandler('focus');\n }\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n executeFormatters();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 8e1ebd1..9678be6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.11.2", + "version": "0.11.3", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 4a8cf60..2f6915f 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -47,6 +47,7 @@ export default function ngCurrency($filter, $locale, $timeout) { $timeout(() => { initialized = true; refresh(); + ngModel.$setPristine(); }); function refresh() { diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index 6f612fc..216afed 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -281,6 +281,15 @@ describe('ngCurrency directive tests', () => { expect(scope.value).toEqual(123.45); expect(element.val()).toEqual('$123.45'); }); + it('should be pristine on start', () => { + scope.value = '123.45'; + scope.$digest(); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + element.val('1235.45'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(element.hasClass('ng-dirty')).toBeTruthy(); + }); }); describe('Max', () => { From 6c9e200f93a1a19be372efaa4c05972df0aacb57 Mon Sep 17 00:00:00 2001 From: Luis Aguirre Date: Fri, 12 Aug 2016 15:12:26 -0300 Subject: [PATCH 013/159] Hack to fix #102 - Field becomes dirty when using dynamic currency-symbol --- src/ng-currency.directive.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 2f6915f..a31006e 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -46,8 +46,9 @@ export default function ngCurrency($filter, $locale, $timeout) { $timeout(() => { initialized = true; + ngModel.$pristine = false; refresh(); - ngModel.$setPristine(); + ngModel.$pristine = true; }); function refresh() { From baecf4b4292fd64c34f177bfe075dee6fc6009f7 Mon Sep 17 00:00:00 2001 From: Luis Aguirre Date: Fri, 12 Aug 2016 15:17:01 -0300 Subject: [PATCH 014/159] Hack to fix #102 - Field becomes dirty when using dynamic currency-symbol --- dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 9b817c9..702dd4a 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),i=t(u),o=r(1),c=t(o),a=i["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,i,o){function c(){$&&(o.$validate(),t.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(t=".");var i=e("currency")("-1",d(),R),o=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=i.replace(o.exec(i),""),l=r.replace(o.exec(r),"");return c===l&&(r="-"+o.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==g?g:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=o.$$rawModelValue,n=o.$formatters.length-1;n>=0;n--)e=o.$formatters[n](e);o.$setViewValue(e),o.$render()}function v(e){if(N&&p&&[void 0,null,""].indexOf(e)===-1){if(void 0!==m&&e>m)return m;if(void 0!==x&&e=x)},o.$validators.max=function(e){return!(M||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!N||[void 0,null].indexOf(m)!==-1||isNaN(m)||e<=m)},o.$validators.fraction=function(e){return!N||!e||!isNaN(e)},t.$on("currencyRedraw",function(){if($){o.$commitViewValue();var e=v(o.$$rawModelValue);e!==o.$$rawModelValue&&(o.$setViewValue(e),o.$commitViewValue()),s()}}),u.on("focus",function(){var e=o.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(R),o.$viewValue!==e&&(o.$setViewValue(e),o.$render(),u.triggerHandler("focus"))}),u.on("blur",function(){o.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),i=t(u),o=r(1),c=t(o),a=i["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,i,o){function c(){$&&(o.$validate(),t.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(t=".");var i=e("currency")("-1",d(),R),o=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=i.replace(o.exec(i),""),l=r.replace(o.exec(r),"");return c===l&&(r="-"+o.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==g?g:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=o.$$rawModelValue,n=o.$formatters.length-1;n>=0;n--)e=o.$formatters[n](e);o.$setViewValue(e),o.$render()}function v(e){if(N&&p&&[void 0,null,""].indexOf(e)===-1){if(void 0!==m&&e>m)return m;if(void 0!==x&&e=x)},o.$validators.max=function(e){return!(M||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!N||[void 0,null].indexOf(m)!==-1||isNaN(m)||e<=m)},o.$validators.fraction=function(e){return!N||!e||!isNaN(e)},t.$on("currencyRedraw",function(){if($){o.$commitViewValue();var e=v(o.$$rawModelValue);e!==o.$$rawModelValue&&(o.$setViewValue(e),o.$commitViewValue()),s()}}),u.on("focus",function(){var e=o.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(R),o.$viewValue!==e&&(o.$setViewValue(e),o.$render(),u.triggerHandler("focus"))}),u.on("blur",function(){o.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index c801d5a..7994072 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap cdb9dccbc3c568fc6a7e","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","executeFormatters","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","keepInRange","active","hardCap","max","min","ngRequired","$observe","Number","$setPristine","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$viewValue","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t refresh();\n\t ngModel.$setPristine();\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function executeFormatters() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t function keepInRange(value) {\n\t if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n\t if (max !== undefined && value > max) {\n\t return max;\n\t } else if (min !== undefined && value < min) {\n\t return min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$parsers.push(keepInRange);\n\t ngModel.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t var value = keepInRange(ngModel.$$rawModelValue);\n\t if (value !== ngModel.$$rawModelValue) {\n\t ngModel.$setViewValue(value);\n\t ngModel.$commitViewValue();\n\t }\n\t executeFormatters();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t if (ngModel.$viewValue !== viewValue) {\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t element.triggerHandler('focus');\n\t }\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t executeFormatters();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap cdb9dccbc3c568fc6a7e\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n refresh();\n ngModel.$setPristine();\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function executeFormatters() {\n let viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n function keepInRange(value) {\n if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n if (max !== undefined && value > max) {\n return max;\n } else if (min !== undefined && value < min) {\n return min;\n }\n }\n return value;\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$parsers.push(keepInRange);\n ngModel.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n const value = keepInRange(ngModel.$$rawModelValue);\n if (value !== ngModel.$$rawModelValue) {\n ngModel.$setViewValue(value);\n ngModel.$commitViewValue();\n }\n executeFormatters();\n }\n });\n\n element.on('focus', () => {\n let viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n if (ngModel.$viewValue !== viewValue) {\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n element.triggerHandler('focus');\n }\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n executeFormatters();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 3cc45fe90833ef652d6f","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","executeFormatters","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","keepInRange","active","hardCap","max","min","ngRequired","$observe","Number","$pristine","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$viewValue","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t ngModel.$pristine = false;\n\t refresh();\n\t ngModel.$pristine = true;\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function executeFormatters() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t function keepInRange(value) {\n\t if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n\t if (max !== undefined && value > max) {\n\t return max;\n\t } else if (min !== undefined && value < min) {\n\t return min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$parsers.push(keepInRange);\n\t ngModel.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t var value = keepInRange(ngModel.$$rawModelValue);\n\t if (value !== ngModel.$$rawModelValue) {\n\t ngModel.$setViewValue(value);\n\t ngModel.$commitViewValue();\n\t }\n\t executeFormatters();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t if (ngModel.$viewValue !== viewValue) {\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t element.triggerHandler('focus');\n\t }\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t executeFormatters();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 3cc45fe90833ef652d6f\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n ngModel.$pristine = false;\n refresh();\n ngModel.$pristine = true;\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function executeFormatters() {\n let viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n function keepInRange(value) {\n if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n if (max !== undefined && value > max) {\n return max;\n } else if (min !== undefined && value < min) {\n return min;\n }\n }\n return value;\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$parsers.push(keepInRange);\n ngModel.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n const value = keepInRange(ngModel.$$rawModelValue);\n if (value !== ngModel.$$rawModelValue) {\n ngModel.$setViewValue(value);\n ngModel.$commitViewValue();\n }\n executeFormatters();\n }\n });\n\n element.on('focus', () => {\n let viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n if (ngModel.$viewValue !== viewValue) {\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n element.triggerHandler('focus');\n }\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n executeFormatters();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file From 82fe4ca1d86e9d9f407b6aa568e6b6525f171287 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Sun, 14 Aug 2016 05:08:31 -0500 Subject: [PATCH 015/159] Fixed an issue which caused $pristine to get set to false on focus and blur * Simplified a lot of the parsing logic --- .eslintrc.yml | 3 + dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- package.json | 4 +- src/ng-currency.directive.js | 223 +++++++----------- .../ng-currency/ng-currency.directive.spec.js | 116 ++++++++- test/ng-currency/templates/defaults.html | 4 +- test/ng-currency/templates/variables.html | 21 +- 8 files changed, 211 insertions(+), 164 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 130b979..b0ba43c 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -21,3 +21,6 @@ rules: object-curly-spacing: 0 one-var: 0 arrow-parens: 0 + no-unused-vars: + - error + - varsIgnorePattern: dummy diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 702dd4a..92cfd2a 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),i=t(u),o=r(1),c=t(o),a=i["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,i,o){function c(){$&&(o.$validate(),t.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(t=".");var i=e("currency")("-1",d(),R),o=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=i.replace(o.exec(i),""),l=r.replace(o.exec(r),"");return c===l&&(r="-"+o.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==g?g:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=o.$$rawModelValue,n=o.$formatters.length-1;n>=0;n--)e=o.$formatters[n](e);o.$setViewValue(e),o.$render()}function v(e){if(N&&p&&[void 0,null,""].indexOf(e)===-1){if(void 0!==m&&e>m)return m;if(void 0!==x&&e=x)},o.$validators.max=function(e){return!(M||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!N||[void 0,null].indexOf(m)!==-1||isNaN(m)||e<=m)},o.$validators.fraction=function(e){return!N||!e||!isNaN(e)},t.$on("currencyRedraw",function(){if($){o.$commitViewValue();var e=v(o.$$rawModelValue);e!==o.$$rawModelValue&&(o.$setViewValue(e),o.$commitViewValue()),s()}}),u.on("focus",function(){var e=o.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(R),o.$viewValue!==e&&(o.$setViewValue(e),o.$render(),u.triggerHandler("focus"))}),u.on("blur",function(){o.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],r):"object"==typeof exports?exports["ng-currency"]=r(require("angular")):e["ng-currency"]=r(e.angular)}(this,function(e){return function(e){function r(o){if(n[o])return n[o].exports;var u=n[o]={exports:{},id:o,loaded:!1};return e[o].call(u.exports,u,u.exports,r),u.loaded=!0,u.exports}var n={};return r.m=e,r.c=n,r.p="",r(0)}([function(e,r,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0});var u=n(2),i=o(u),t=n(1),a=o(t),c=i["default"].module("ng-currency",[]);c.directive("ngCurrency",a["default"]),r["default"]=c.name},function(e,r){"use strict";function n(e,r){return{require:"ngModel",link:function(n,o,u,i){function t(){if($){for(var e=i.$modelValue,r=i.$formatters.length-1;r>=0;r--)e=i.$formatters[r](e);i.$viewValue=e,i.$render()}}function a(){if(i.$validate(),$){var e=c(i.$$rawModelValue);e!==i.$$rawModelValue&&(i.$setViewValue(e.toFixed(p)),i.$commitViewValue(),t())}}function c(e){return d&&(void 0!==f&&e>f?e=f:void 0!==l&&e=l)},i.$validators.max=function(e){return!(v||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!$||[void 0,null].indexOf(f)!==-1||isNaN(f)||e<=f)},i.$validators.fraction=function(e){return!$||!e||!isNaN(e)},n.$on("currencyRedraw",function(){a(),t()}),o.bind("focus",function(){if($){var e=Number(i.$modelValue).toFixed(p);i.$viewValue!==e&&(i.$viewValue=e,i.$render(),o.triggerHandler("focus"))}}),o.bind("blur",t)}}}n.$inject=["$filter","$locale"],Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n},function(r,n){r.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 7994072..af3f6b1 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 3cc45fe90833ef652d6f","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","executeFormatters","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","keepInRange","active","hardCap","max","min","ngRequired","$observe","Number","$pristine","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$viewValue","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t ngModel.$pristine = false;\n\t refresh();\n\t ngModel.$pristine = true;\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function executeFormatters() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t function keepInRange(value) {\n\t if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n\t if (max !== undefined && value > max) {\n\t return max;\n\t } else if (min !== undefined && value < min) {\n\t return min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$parsers.push(keepInRange);\n\t ngModel.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t var value = keepInRange(ngModel.$$rawModelValue);\n\t if (value !== ngModel.$$rawModelValue) {\n\t ngModel.$setViewValue(value);\n\t ngModel.$commitViewValue();\n\t }\n\t executeFormatters();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t if (ngModel.$viewValue !== viewValue) {\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t element.triggerHandler('focus');\n\t }\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t executeFormatters();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 3cc45fe90833ef652d6f\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n ngModel.$pristine = false;\n refresh();\n ngModel.$pristine = true;\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function executeFormatters() {\n let viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n function keepInRange(value) {\n if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n if (max !== undefined && value > max) {\n return max;\n } else if (min !== undefined && value < min) {\n return min;\n }\n }\n return value;\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$parsers.push(keepInRange);\n ngModel.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n const value = keepInRange(ngModel.$$rawModelValue);\n if (value !== ngModel.$$rawModelValue) {\n ngModel.$setViewValue(value);\n ngModel.$commitViewValue();\n }\n executeFormatters();\n }\n });\n\n element.on('focus', () => {\n let viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n if (ngModel.$viewValue !== viewValue) {\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n element.triggerHandler('focus');\n }\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n executeFormatters();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 3a97bd09f09971b8a6ca","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$modelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$$rawModelValue","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","currencySymbol","ngRequired","$observe","Number","$parsers","push","trim","neg_dummy","NUMBER_FORMATS","CURRENCY_SYM","neg_regexp","RegExp","DECIMAL_SEP","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","$validators","indexOf","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$modelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active) {\n\t value = value.trim();\n\t var neg_dummy = $filter('currency')('-1', currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value)[0];\n\t }\n\t if (value === '-') {\n\t value = '0';\n\t }\n\t value = value.replace($locale.NUMBER_FORMATS.GROUP_SEP, '').replace(currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, '');\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && value !== '') {\n\t return $filter('currency')(value, currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$modelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var value = Number(controller.$modelValue).toFixed(fraction);\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 3a97bd09f09971b8a6ca\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$modelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active) {\n value = value.trim();\n const neg_dummy = $filter('currency')('-1', currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value)[0];\n }\n if (value === '-') {\n value = '0';\n }\n value = value\n .replace($locale.NUMBER_FORMATS.GROUP_SEP, '')\n .replace(currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, '');\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && value !== '') {\n return $filter('currency')(value, currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$modelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = Number(controller.$modelValue).toFixed(fraction);\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 9678be6..4e26d99 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ }, "license": "MIT", "devDependencies": { - "angular": "~1.3", - "angular-mocks": "~1.3", + "angular": "1.5.8", + "angular-mocks": "1.5.8", "babel-core": "6.11.4", "babel-loader": "6.2.4", "babel-preset-es2015": "6.9.0", diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index a31006e..f567d55 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -1,154 +1,79 @@ -/* - * ng-currency - * http://alaguirre.com/ - - * Version: 0.10.1 - 2016-06-05 - * License: MIT - */ - /* @ngInject */ -export default function ngCurrency($filter, $locale, $timeout) { +export default function ngCurrency($filter, $locale) { return { require: 'ngModel', - link: (scope, element, attrs, ngModel) => { - let initialized, hardCap, min, max, currencySymbol, ngRequired; + link: (scope, element, attrs, controller) => { + let hardCap, min, max, currencySymbol, ngRequired; let active = true; let fraction = 2; attrs.$observe('ngCurrency', (value) => { active = (value !== 'false'); - refresh(); + if (active) { + reformat(); + } else { + controller.$viewValue = controller.$modelValue; + controller.$render(); + } }); attrs.$observe('hardCap', (value) => { hardCap = (value === 'true'); - refresh(); + revalidate(); }); attrs.$observe('min', (value) => { min = value ? Number(value) : undefined; - refresh(); + revalidate(); }); attrs.$observe('max', (value) => { max = value ? Number(value) : undefined; - refresh(); + revalidate(); }); attrs.$observe('currencySymbol', (value) => { currencySymbol = value; - refresh(); + reformat(); }); attrs.$observe('ngRequired', (value) => { ngRequired = value; - refresh(); + revalidate(); }); attrs.$observe('fraction', (value) => { fraction = value || 2; - refresh(); + reformat(); + revalidate(); }); - $timeout(() => { - initialized = true; - ngModel.$pristine = false; - refresh(); - ngModel.$pristine = true; - }); - - function refresh() { - if (initialized) { - ngModel.$validate(); - scope.$emit('currencyRedraw'); - } - } - - function decimalRex(dChar) { - return RegExp('\\d|\\-|\\' + dChar, 'g'); - } - - function clearRex(dChar) { - return RegExp('\\-{0,1}((\\' + dChar + ')|([0-9]{1,}\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g'); - } - - function clearValue(value) { - value = String(value); - let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; - let cleared = null; - - if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && - value.indexOf('.') !== -1 && - fraction > 0) { - dSeparator = '.'; - } - - // Replace negative pattern to minus sign (-) - const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction); - const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); - const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); - const value_dummy_txt = value.replace(neg_regexp.exec(value), ''); - - // If is negative - if (neg_dummy_txt === value_dummy_txt) { - value = '-' + neg_regexp.exec(value); - } - - if (RegExp('^-[\\s]*$', 'g').test(value)) { - value = '-0'; - } - - if (decimalRex(dSeparator).test(value)) { - cleared = value.match(decimalRex(dSeparator)) - .join('').match(clearRex(dSeparator)); - cleared = cleared ? cleared[0].replace(dSeparator, '.') : null; - } - - return cleared; - } - - function getCurrencySymbol() { - if (currencySymbol !== undefined) { - return currencySymbol; - } - return $locale.NUMBER_FORMATS.CURRENCY_SYM; - } - - function executeFormatters() { - let viewValue = ngModel.$$rawModelValue; - for (let i = ngModel.$formatters.length - 1; i >= 0; i--) { - viewValue = ngModel.$formatters[i](viewValue); - } - ngModel.$setViewValue(viewValue); - ngModel.$render(); - } - - function keepInRange(value) { - if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) { - if (max !== undefined && value > max) { - return max; - } else if (min !== undefined && value < min) { - return min; + controller.$parsers.push((value) => { + if (active) { + value = value.trim(); + const neg_dummy = $filter('currency')('-1', currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction); + const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); + const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); + const value_dummy_txt = value.replace(neg_regexp.exec(value), ''); + + // If is negative + if (neg_dummy_txt === value_dummy_txt) { + value = '-' + neg_regexp.exec(value)[0]; } - } - return value; - } - - ngModel.$parsers.push((viewValue) => { - if (active && [undefined, null, ''].indexOf(viewValue) === -1) { - let value = clearValue(viewValue); - // Check for fast digitation (-. or .) - if (value === '.' || value === '-.') { - value = '.0'; + if (value === '-') { + value = '0'; } - return Number(value); + value = value + .replace($locale.NUMBER_FORMATS.GROUP_SEP, '') + .replace(currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, ''); + value = keepInRange(Number(value)); + return value; } - return viewValue; + return value; }); - ngModel.$parsers.push(keepInRange); - ngModel.$formatters.push((value) => { - if (active && [undefined, null, ''].indexOf(value) === -1) { - return $filter('currency')(value, getCurrencySymbol(), fraction); + controller.$formatters.push((value) => { + if (active && value !== '') { + return $filter('currency')(value, currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction); } return value; }); - ngModel.$validators.min = (value) => { + controller.$validators.min = (value) => { if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { return true; } @@ -157,7 +82,7 @@ export default function ngCurrency($filter, $locale, $timeout) { value >= min; }; - ngModel.$validators.max = (value) => { + controller.$validators.max = (value) => { if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { return true; } @@ -166,41 +91,61 @@ export default function ngCurrency($filter, $locale, $timeout) { value <= max; }; - ngModel.$validators.fraction = (value) => { + controller.$validators.fraction = (value) => { return !active || !value || !isNaN(value); }; - scope.$on('currencyRedraw', () => { - if (initialized) { - ngModel.$commitViewValue(); - const value = keepInRange(ngModel.$$rawModelValue); - if (value !== ngModel.$$rawModelValue) { - ngModel.$setViewValue(value); - ngModel.$commitViewValue(); + function reformat() { + if (active) { + let value = controller.$modelValue; + for (let i = controller.$formatters.length - 1; i >= 0; i--) { + value = controller.$formatters[i](value); } - executeFormatters(); + controller.$viewValue = value; + controller.$render(); } - }); - - element.on('focus', () => { - let viewValue = ngModel.$$rawModelValue; + } - if (isNaN(viewValue) || viewValue === '' || viewValue === null) { - viewValue = ''; - } else { - viewValue = Number(viewValue).toFixed(fraction); + function revalidate() { + controller.$validate(); + if (active) { + const value = keepInRange(controller.$$rawModelValue); + if (value !== controller.$$rawModelValue) { + controller.$setViewValue(value.toFixed(fraction)); + controller.$commitViewValue(); + reformat(); + } } - if (ngModel.$viewValue !== viewValue) { - ngModel.$setViewValue(viewValue); - ngModel.$render(); - element.triggerHandler('focus'); + } + + function keepInRange(value) { + if (hardCap) { + if (max !== undefined && value > max) { + value = max; + } else if (min !== undefined && value < min) { + value = min; + } } + return value; + } + + scope.$on('currencyRedraw', () => { + revalidate(); + reformat(); }); - element.on('blur', () => { - ngModel.$commitViewValue(); - executeFormatters(); + element.bind('focus', () => { + if (active) { + const value = Number(controller.$modelValue).toFixed(fraction); + if (controller.$viewValue !== value) { + controller.$viewValue = value; + controller.$render(); + element.triggerHandler('focus'); + } + } }); + + element.bind('blur', reformat); } }; } diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index 216afed..385b81d 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -34,6 +34,7 @@ describe('ngCurrency directive tests', () => { scope.value = 0; scope.$digest(); element = $compile(defaults)(scope); + element = element.find('input'); $timeout.flush(); })); @@ -107,11 +108,29 @@ describe('ngCurrency directive tests', () => { expect(element.val()).toEqual('$0.50'); }); - it('should parse "-.5" to ($0.50)', () => { + it('should parse "-.5" to -$0.50', () => { element.val('-.5'); element.triggerHandler('input'); element.triggerHandler('blur'); expect(scope.value).toEqual(-0.5); + expect(element.val()).toEqual('-$0.50'); + }); + }); + + describe('Custom Locale Options', () => { + let $locale; + beforeEach(angular.mock.inject((_$locale_) => { + $locale = _$locale_; + })); + + it('should parse "($0.50)" to ($0.50)', () => { + const currencyPatterns = $locale.NUMBER_FORMATS.PATTERNS[1]; + currencyPatterns.negPre = '(\u00a4'; + currencyPatterns.negSuf = ')'; + element.val('($0.50)'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(scope.value).toEqual(-0.5); expect(element.val()).toEqual('($0.50)'); }); }); @@ -160,6 +179,75 @@ describe('ngCurrency directive tests', () => { }); }); }); + + describe('$pristine', () => { + it('should be pristine when initialized', () => { + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + }); + + it('should stay $pristine if the modelValue has not changed', () => { + element.triggerHandler('focus'); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + element.triggerHandler('blur'); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + }); + + it('should stay $pristine if the modelValue is changed', () => { + scope.value = 10; + scope.$digest(); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + element.triggerHandler('focus'); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + element.triggerHandler('blur'); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + }); + + it('should not stay $pristine if its already $dirty', () => { + element.val('$10.00'); + element.triggerHandler('input'); + expect(element.hasClass('ng-pristine')).toBeFalsy(); + expect(scope.form.currency.$pristine).toBeFalsy(); + expect(scope.form.currency.$dirty).toBeTruthy(); + expect(scope.form.$pristine).toBeFalsy(); + expect(scope.form.$dirty).toBeTruthy(); + element.triggerHandler('focus'); + expect(element.hasClass('ng-pristine')).toBeFalsy(); + expect(scope.form.currency.$pristine).toBeFalsy(); + expect(scope.form.currency.$dirty).toBeTruthy(); + expect(scope.form.$pristine).toBeFalsy(); + expect(scope.form.$dirty).toBeTruthy(); + element.triggerHandler('blur'); + expect(element.hasClass('ng-pristine')).toBeFalsy(); + expect(scope.form.currency.$pristine).toBeFalsy(); + expect(scope.form.currency.$dirty).toBeTruthy(); + expect(scope.form.$pristine).toBeFalsy(); + expect(scope.form.$dirty).toBeTruthy(); + }); + }); }); // Functionality that is specific to the default values @@ -169,6 +257,7 @@ describe('ngCurrency directive tests', () => { scope.value = 0; scope.$digest(); element = $compile(defaults)(scope); + element = element.find('input'); $timeout.flush(); })); @@ -220,6 +309,7 @@ describe('ngCurrency directive tests', () => { scope.currencySymbol = '$'; scope.$digest(); element = $compile(variables)(scope); + element = element.find('input'); $timeout.flush(); })); @@ -281,15 +371,6 @@ describe('ngCurrency directive tests', () => { expect(scope.value).toEqual(123.45); expect(element.val()).toEqual('$123.45'); }); - it('should be pristine on start', () => { - scope.value = '123.45'; - scope.$digest(); - expect(element.hasClass('ng-pristine')).toBeTruthy(); - element.val('1235.45'); - element.triggerHandler('input'); - element.triggerHandler('blur'); - expect(element.hasClass('ng-dirty')).toBeTruthy(); - }); }); describe('Max', () => { @@ -445,7 +526,7 @@ describe('ngCurrency directive tests', () => { scope.min = 0; scope.$digest(); expect(element.hasClass('ng-invalid-min')).toBeTruthy(); - expect(element.val()).toEqual('($0.01)'); + expect(element.val()).toEqual('-$0.01'); }); it('should do nothing when an invalid value is provided', () => { @@ -517,5 +598,18 @@ describe('ngCurrency directive tests', () => { }); }); }); + + describe('$pristine', () => { + it('should be pristine when initialized with a custom currencySymbol', () => { + scope.currencySymbol = '¥'; + scope.$digest(); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + expect(element.val()).toEqual('¥0.00'); + }); + }); }); }); diff --git a/test/ng-currency/templates/defaults.html b/test/ng-currency/templates/defaults.html index ff6ea1f..3f26f71 100644 --- a/test/ng-currency/templates/defaults.html +++ b/test/ng-currency/templates/defaults.html @@ -1 +1,3 @@ - +
+ +
diff --git a/test/ng-currency/templates/variables.html b/test/ng-currency/templates/variables.html index 9023a2a..c646c5c 100644 --- a/test/ng-currency/templates/variables.html +++ b/test/ng-currency/templates/variables.html @@ -1,9 +1,12 @@ - +
+ +
From 3077c8e8dfa65ba14394e9a6122473b9a0faea05 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Sun, 14 Aug 2016 21:29:26 -0500 Subject: [PATCH 016/159] Reverted back to the old parsing logic --- dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- src/ng-currency.directive.js | 68 +++++++++++++++++++++++++++--------- 3 files changed, 53 insertions(+), 19 deletions(-) diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 92cfd2a..a8f4503 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],r):"object"==typeof exports?exports["ng-currency"]=r(require("angular")):e["ng-currency"]=r(e.angular)}(this,function(e){return function(e){function r(o){if(n[o])return n[o].exports;var u=n[o]={exports:{},id:o,loaded:!1};return e[o].call(u.exports,u,u.exports,r),u.loaded=!0,u.exports}var n={};return r.m=e,r.c=n,r.p="",r(0)}([function(e,r,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0});var u=n(2),i=o(u),t=n(1),a=o(t),c=i["default"].module("ng-currency",[]);c.directive("ngCurrency",a["default"]),r["default"]=c.name},function(e,r){"use strict";function n(e,r){return{require:"ngModel",link:function(n,o,u,i){function t(){if($){for(var e=i.$modelValue,r=i.$formatters.length-1;r>=0;r--)e=i.$formatters[r](e);i.$viewValue=e,i.$render()}}function a(){if(i.$validate(),$){var e=c(i.$$rawModelValue);e!==i.$$rawModelValue&&(i.$setViewValue(e.toFixed(p)),i.$commitViewValue(),t())}}function c(e){return d&&(void 0!==f&&e>f?e=f:void 0!==l&&e=l)},i.$validators.max=function(e){return!(v||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!$||[void 0,null].indexOf(f)!==-1||isNaN(f)||e<=f)},i.$validators.fraction=function(e){return!$||!e||!isNaN(e)},n.$on("currencyRedraw",function(){a(),t()}),o.bind("focus",function(){if($){var e=Number(i.$modelValue).toFixed(p);i.$viewValue!==e&&(i.$viewValue=e,i.$render(),o.triggerHandler("focus"))}}),o.bind("blur",t)}}}n.$inject=["$filter","$locale"],Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n},function(r,n){r.exports=e}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),o=t(u),i=r(1),c=t(i),a=o["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n){return{require:"ngModel",link:function(r,t,u,o){function i(){if(g){for(var e=o.$modelValue,n=o.$formatters.length-1;n>=0;n--)e=o.$formatters[n](e);o.$viewValue=e,o.$render()}}function c(){if(o.$validate(),g){var e=a(o.$$rawModelValue);e!==o.$$rawModelValue&&(o.$setViewValue(e.toFixed(b)),o.$commitViewValue(),i())}}function a(e){return v&&(void 0!==p&&e>p?e=p:void 0!==$&&e<$&&(e=$)),e}function f(e){return RegExp("\\d|\\-|\\"+e,"g")}function l(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+b+"}","g")}function d(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&b>0&&(t=".");var o=e("currency")("-1",s(),b),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=o.replace(i.exec(o),""),a=r.replace(i.exec(r),"");return c===a&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),f(t).test(r)&&(u=r.match(f(t)).join("").match(l(t)),u=u?u[0].replace(t,"."):null),u}function s(){return void 0===x?n.NUMBER_FORMATS.CURRENCY_SYM:x}var v=void 0,$=void 0,p=void 0,x=void 0,m=void 0,g=!0,b=2;u.$observe("ngCurrency",function(e){g="false"!==e,g?i():(o.$viewValue=o.$modelValue,o.$render())}),u.$observe("hardCap",function(e){v="true"===e,c()}),u.$observe("min",function(e){$=e?Number(e):void 0,c()}),u.$observe("max",function(e){p=e?Number(e):void 0,c()}),u.$observe("currencySymbol",function(e){x=e,i()}),u.$observe("ngRequired",function(e){m=e,c()}),u.$observe("fraction",function(e){b=e||2,i(),c()}),o.$parsers.push(function(e){return g?(e=d(e),e=a(Number(e))):e}),o.$formatters.push(function(n){return g&&""!==n?e("currency")(n,s(),b):n}),o.$validators.min=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},o.$validators.max=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(p)!==-1||isNaN(p)||e<=p)},o.$validators.fraction=function(e){return!g||!e||!isNaN(e)},r.$on("currencyRedraw",function(){c(),i()}),t.bind("focus",function(){if(g){var e=Number(o.$modelValue).toFixed(b);o.$viewValue!==e&&(o.$viewValue=e,o.$render(),t.triggerHandler("focus"))}}),t.bind("blur",i)}}}r.$inject=["$filter","$locale"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index af3f6b1..96fa261 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 3a97bd09f09971b8a6ca","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$modelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$$rawModelValue","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","currencySymbol","ngRequired","$observe","Number","$parsers","push","trim","neg_dummy","NUMBER_FORMATS","CURRENCY_SYM","neg_regexp","RegExp","DECIMAL_SEP","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","$validators","indexOf","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$modelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active) {\n\t value = value.trim();\n\t var neg_dummy = $filter('currency')('-1', currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value)[0];\n\t }\n\t if (value === '-') {\n\t value = '0';\n\t }\n\t value = value.replace($locale.NUMBER_FORMATS.GROUP_SEP, '').replace(currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, '');\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && value !== '') {\n\t return $filter('currency')(value, currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$modelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var value = Number(controller.$modelValue).toFixed(fraction);\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 3a97bd09f09971b8a6ca\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$modelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active) {\n value = value.trim();\n const neg_dummy = $filter('currency')('-1', currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value)[0];\n }\n if (value === '-') {\n value = '0';\n }\n value = value\n .replace($locale.NUMBER_FORMATS.GROUP_SEP, '')\n .replace(currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, '');\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && value !== '') {\n return $filter('currency')(value, currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$modelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = Number(controller.$modelValue).toFixed(fraction);\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 6fc6d022ad023f35c5b9","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$modelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$$rawModelValue","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","decimalRex","dChar","RegExp","clearRex","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","currencySymbol","CURRENCY_SYM","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$modelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && value !== '') {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$modelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var value = Number(controller.$modelValue).toFixed(fraction);\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 6fc6d022ad023f35c5b9\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$modelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && value !== '') {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$modelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = Number(controller.$modelValue).toFixed(fraction);\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index f567d55..0d9417f 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -44,22 +44,7 @@ export default function ngCurrency($filter, $locale) { controller.$parsers.push((value) => { if (active) { - value = value.trim(); - const neg_dummy = $filter('currency')('-1', currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction); - const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); - const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); - const value_dummy_txt = value.replace(neg_regexp.exec(value), ''); - - // If is negative - if (neg_dummy_txt === value_dummy_txt) { - value = '-' + neg_regexp.exec(value)[0]; - } - if (value === '-') { - value = '0'; - } - value = value - .replace($locale.NUMBER_FORMATS.GROUP_SEP, '') - .replace(currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, ''); + value = clearValue(value); value = keepInRange(Number(value)); return value; } @@ -68,7 +53,7 @@ export default function ngCurrency($filter, $locale) { controller.$formatters.push((value) => { if (active && value !== '') { - return $filter('currency')(value, currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol, fraction); + return $filter('currency')(value, getCurrencySymbol(), fraction); } return value; }); @@ -146,6 +131,55 @@ export default function ngCurrency($filter, $locale) { }); element.bind('blur', reformat); + + // TODO: Rewrite this parsing logic to more readable. + + function decimalRex(dChar) { + return RegExp('\\d|\\-|\\' + dChar, 'g'); + } + + function clearRex(dChar) { + return RegExp('\\-{0,1}((\\' + dChar + ')|([0-9]{1,}\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g'); + } + + function clearValue(value) { + value = String(value); + let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; + let cleared = null; + + if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && + value.indexOf('.') !== -1 && + fraction > 0) { + dSeparator = '.'; + } + + // Replace negative pattern to minus sign (-) + const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction); + const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); + const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); + const value_dummy_txt = value.replace(neg_regexp.exec(value), ''); + + // If is negative + if (neg_dummy_txt === value_dummy_txt) { + value = '-' + neg_regexp.exec(value); + } + + if (RegExp('^-[\\s]*$', 'g').test(value)) { + value = '-0'; + } + + if (decimalRex(dSeparator).test(value)) { + cleared = value.match(decimalRex(dSeparator)) + .join('').match(clearRex(dSeparator)); + cleared = cleared ? cleared[0].replace(dSeparator, '.') : null; + } + + return cleared; + } + + function getCurrencySymbol() { + return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol; + } } }; } From 3fc1ba6c317035535ae818d1c9a0470de0bc9d15 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Sun, 14 Aug 2016 21:47:19 -0500 Subject: [PATCH 017/159] Fixed a regression which caused clearing out a field to be parsed to zero --- dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- src/ng-currency.directive.js | 6 +++--- test/ng-currency/ng-currency.directive.spec.js | 9 +++++++++ 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/dist/ng-currency.js b/dist/ng-currency.js index a8f4503..3bb0520 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),o=t(u),i=r(1),c=t(i),a=o["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n){return{require:"ngModel",link:function(r,t,u,o){function i(){if(g){for(var e=o.$modelValue,n=o.$formatters.length-1;n>=0;n--)e=o.$formatters[n](e);o.$viewValue=e,o.$render()}}function c(){if(o.$validate(),g){var e=a(o.$$rawModelValue);e!==o.$$rawModelValue&&(o.$setViewValue(e.toFixed(b)),o.$commitViewValue(),i())}}function a(e){return v&&(void 0!==p&&e>p?e=p:void 0!==$&&e<$&&(e=$)),e}function f(e){return RegExp("\\d|\\-|\\"+e,"g")}function l(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+b+"}","g")}function d(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&b>0&&(t=".");var o=e("currency")("-1",s(),b),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=o.replace(i.exec(o),""),a=r.replace(i.exec(r),"");return c===a&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),f(t).test(r)&&(u=r.match(f(t)).join("").match(l(t)),u=u?u[0].replace(t,"."):null),u}function s(){return void 0===x?n.NUMBER_FORMATS.CURRENCY_SYM:x}var v=void 0,$=void 0,p=void 0,x=void 0,m=void 0,g=!0,b=2;u.$observe("ngCurrency",function(e){g="false"!==e,g?i():(o.$viewValue=o.$modelValue,o.$render())}),u.$observe("hardCap",function(e){v="true"===e,c()}),u.$observe("min",function(e){$=e?Number(e):void 0,c()}),u.$observe("max",function(e){p=e?Number(e):void 0,c()}),u.$observe("currencySymbol",function(e){x=e,i()}),u.$observe("ngRequired",function(e){m=e,c()}),u.$observe("fraction",function(e){b=e||2,i(),c()}),o.$parsers.push(function(e){return g?(e=d(e),e=a(Number(e))):e}),o.$formatters.push(function(n){return g&&""!==n?e("currency")(n,s(),b):n}),o.$validators.min=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},o.$validators.max=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(p)!==-1||isNaN(p)||e<=p)},o.$validators.fraction=function(e){return!g||!e||!isNaN(e)},r.$on("currencyRedraw",function(){c(),i()}),t.bind("focus",function(){if(g){var e=Number(o.$modelValue).toFixed(b);o.$viewValue!==e&&(o.$viewValue=e,o.$render(),t.triggerHandler("focus"))}}),t.bind("blur",i)}}}r.$inject=["$filter","$locale"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(u){if(r[u])return r[u].exports;var o=r[u]={exports:{},id:u,loaded:!1};return e[u].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=r(2),t=u(o),i=r(1),a=u(i),l=t["default"].module("ng-currency",[]);l.directive("ngCurrency",a["default"]),n["default"]=l.name},function(e,n){"use strict";function r(e,n){return{require:"ngModel",link:function(r,u,o,t){function i(){if(g){for(var e=t.$modelValue,n=t.$formatters.length-1;n>=0;n--)e=t.$formatters[n](e);t.$viewValue=e,t.$render()}}function a(){if(t.$validate(),g){var e=l(t.$$rawModelValue);e!==t.$$rawModelValue&&(t.$setViewValue(e.toFixed(b)),t.$commitViewValue(),i())}}function l(e){return v&&(void 0!==x&&e>x?e=x:void 0!==$&&e<$&&(e=$)),e}function c(e){return RegExp("\\d|\\-|\\"+e,"g")}function d(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+b+"}","g")}function f(r){r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&b>0&&(u=".");var t=e("currency")("-1",s(),b),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),a=t.replace(i.exec(t),""),l=r.replace(i.exec(r),"");return a===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),c(u).test(r)&&(o=r.match(c(u)).join("").match(d(u)),o=o?o[0].replace(u,"."):null),o}function s(){return void 0===p?n.NUMBER_FORMATS.CURRENCY_SYM:p}var v=void 0,$=void 0,x=void 0,p=void 0,m=void 0,g=!0,b=2;o.$observe("ngCurrency",function(e){g="false"!==e,g?i():(t.$viewValue=t.$modelValue,t.$render())}),o.$observe("hardCap",function(e){v="true"===e,a()}),o.$observe("min",function(e){$=e?Number(e):void 0,a()}),o.$observe("max",function(e){x=e?Number(e):void 0,a()}),o.$observe("currencySymbol",function(e){p=e,i()}),o.$observe("ngRequired",function(e){m=e,a()}),o.$observe("fraction",function(e){b=e||2,i(),a()}),t.$parsers.push(function(e){return g&&[void 0,null,""].indexOf(e)===-1?(e=f(e),e=l(Number(e))):e}),t.$formatters.push(function(n){return g&&[void 0,null,""].indexOf(n)===-1?e("currency")(n,s(),b):n}),t.$validators.min=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},t.$validators.max=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(x)!==-1||isNaN(x)||e<=x)},t.$validators.fraction=function(e){return!g||!e||!isNaN(e)},r.$on("currencyRedraw",function(){a(),i()}),u.bind("focus",function(){if(g){var e=[void 0,null,""].indexOf(t.$modelValue)===-1?Number(t.$modelValue).toFixed(b):t.$modelValue;t.$viewValue!==e&&(t.$viewValue=e,t.$render(),u.triggerHandler("focus"))}}),u.bind("blur",i)}}}r.$inject=["$filter","$locale"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 96fa261..5e93996 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 6fc6d022ad023f35c5b9","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$modelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$$rawModelValue","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","decimalRex","dChar","RegExp","clearRex","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","currencySymbol","CURRENCY_SYM","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$modelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && value !== '') {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$modelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var value = Number(controller.$modelValue).toFixed(fraction);\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 6fc6d022ad023f35c5b9\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$modelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && value !== '') {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$modelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = Number(controller.$modelValue).toFixed(fraction);\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 477eedd52aa6da26f136","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$modelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$$rawModelValue","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","decimalRex","dChar","RegExp","clearRex","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","currencySymbol","CURRENCY_SYM","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$modelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$modelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? Number(controller.$modelValue).toFixed(fraction) : controller.$modelValue;\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 477eedd52aa6da26f136\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$modelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$modelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? Number(controller.$modelValue).toFixed(fraction) : controller.$modelValue;\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 0d9417f..3aedc64 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -43,7 +43,7 @@ export default function ngCurrency($filter, $locale) { }); controller.$parsers.push((value) => { - if (active) { + if (active && [undefined, null, ''].indexOf(value) === -1) { value = clearValue(value); value = keepInRange(Number(value)); return value; @@ -52,7 +52,7 @@ export default function ngCurrency($filter, $locale) { }); controller.$formatters.push((value) => { - if (active && value !== '') { + if (active && [undefined, null, ''].indexOf(value) === -1) { return $filter('currency')(value, getCurrencySymbol(), fraction); } return value; @@ -121,7 +121,7 @@ export default function ngCurrency($filter, $locale) { element.bind('focus', () => { if (active) { - const value = Number(controller.$modelValue).toFixed(fraction); + const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? Number(controller.$modelValue).toFixed(fraction) : controller.$modelValue; if (controller.$viewValue !== value) { controller.$viewValue = value; controller.$render(); diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index 385b81d..7feff00 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -56,6 +56,15 @@ describe('ngCurrency directive tests', () => { expect(scope.value).toEqual(-1.11); }); + it('should be able to parse empty values', () => { + element.val(''); + element.triggerHandler('input'); + expect(scope.value).toEqual(''); + expect(element.val()).toEqual(''); + element.triggerHandler('focus'); + expect(element.val()).toEqual(''); + }); + it('should be able to parse and reformat a value', () => { element.val('123123.45'); element.triggerHandler('input'); From d0a947ff723e7da24c0871d38e9847b0e6cae76b Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Sun, 14 Aug 2016 22:30:54 -0500 Subject: [PATCH 018/159] Fixed an issue which caused $pristine to get set to false on focus and blur (#105) Fixes #105 --- .eslintrc.yml | 3 + dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- package.json | 4 +- src/ng-currency.directive.js | 229 ++++++++---------- .../ng-currency/ng-currency.directive.spec.js | 125 +++++++++- test/ng-currency/templates/defaults.html | 4 +- test/ng-currency/templates/variables.html | 21 +- 8 files changed, 240 insertions(+), 150 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 130b979..b0ba43c 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -21,3 +21,6 @@ rules: object-curly-spacing: 0 one-var: 0 arrow-parens: 0 + no-unused-vars: + - error + - varsIgnorePattern: dummy diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 702dd4a..3bb0520 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={exports:{},id:t,loaded:!1};return e[t].call(u.exports,u,u.exports,n),u.loaded=!0,u.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),i=t(u),o=r(1),c=t(o),a=i["default"].module("ng-currency",[]);a.directive("ngCurrency",c["default"]),n["default"]=a.name},function(e,n){"use strict";function r(e,n,r){return{require:"ngModel",link:function(t,u,i,o){function c(){$&&(o.$validate(),t.$emit("currencyRedraw"))}function a(e){return RegExp("\\d|\\-|\\"+e,"g")}function f(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function l(r){r=String(r);var t=n.NUMBER_FORMATS.DECIMAL_SEP,u=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(t=".");var i=e("currency")("-1",d(),R),o=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),c=i.replace(o.exec(i),""),l=r.replace(o.exec(r),"");return c===l&&(r="-"+o.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),a(t).test(r)&&(u=r.match(a(t)).join("").match(f(t)),u=u?u[0].replace(t,"."):null),u}function d(){return void 0!==g?g:n.NUMBER_FORMATS.CURRENCY_SYM}function s(){for(var e=o.$$rawModelValue,n=o.$formatters.length-1;n>=0;n--)e=o.$formatters[n](e);o.$setViewValue(e),o.$render()}function v(e){if(N&&p&&[void 0,null,""].indexOf(e)===-1){if(void 0!==m&&e>m)return m;if(void 0!==x&&e=x)},o.$validators.max=function(e){return!(M||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!N||[void 0,null].indexOf(m)!==-1||isNaN(m)||e<=m)},o.$validators.fraction=function(e){return!N||!e||!isNaN(e)},t.$on("currencyRedraw",function(){if($){o.$commitViewValue();var e=v(o.$$rawModelValue);e!==o.$$rawModelValue&&(o.$setViewValue(e),o.$commitViewValue()),s()}}),u.on("focus",function(){var e=o.$$rawModelValue;e=isNaN(e)||""===e||null===e?"":Number(e).toFixed(R),o.$viewValue!==e&&(o.$setViewValue(e),o.$render(),u.triggerHandler("focus"))}),u.on("blur",function(){o.$commitViewValue(),s()})}}}r.$inject=["$filter","$locale","$timeout"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(u){if(r[u])return r[u].exports;var o=r[u]={exports:{},id:u,loaded:!1};return e[u].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=r(2),t=u(o),i=r(1),a=u(i),l=t["default"].module("ng-currency",[]);l.directive("ngCurrency",a["default"]),n["default"]=l.name},function(e,n){"use strict";function r(e,n){return{require:"ngModel",link:function(r,u,o,t){function i(){if(g){for(var e=t.$modelValue,n=t.$formatters.length-1;n>=0;n--)e=t.$formatters[n](e);t.$viewValue=e,t.$render()}}function a(){if(t.$validate(),g){var e=l(t.$$rawModelValue);e!==t.$$rawModelValue&&(t.$setViewValue(e.toFixed(b)),t.$commitViewValue(),i())}}function l(e){return v&&(void 0!==x&&e>x?e=x:void 0!==$&&e<$&&(e=$)),e}function c(e){return RegExp("\\d|\\-|\\"+e,"g")}function d(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+b+"}","g")}function f(r){r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&b>0&&(u=".");var t=e("currency")("-1",s(),b),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),a=t.replace(i.exec(t),""),l=r.replace(i.exec(r),"");return a===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),c(u).test(r)&&(o=r.match(c(u)).join("").match(d(u)),o=o?o[0].replace(u,"."):null),o}function s(){return void 0===p?n.NUMBER_FORMATS.CURRENCY_SYM:p}var v=void 0,$=void 0,x=void 0,p=void 0,m=void 0,g=!0,b=2;o.$observe("ngCurrency",function(e){g="false"!==e,g?i():(t.$viewValue=t.$modelValue,t.$render())}),o.$observe("hardCap",function(e){v="true"===e,a()}),o.$observe("min",function(e){$=e?Number(e):void 0,a()}),o.$observe("max",function(e){x=e?Number(e):void 0,a()}),o.$observe("currencySymbol",function(e){p=e,i()}),o.$observe("ngRequired",function(e){m=e,a()}),o.$observe("fraction",function(e){b=e||2,i(),a()}),t.$parsers.push(function(e){return g&&[void 0,null,""].indexOf(e)===-1?(e=f(e),e=l(Number(e))):e}),t.$formatters.push(function(n){return g&&[void 0,null,""].indexOf(n)===-1?e("currency")(n,s(),b):n}),t.$validators.min=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},t.$validators.max=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(x)!==-1||isNaN(x)||e<=x)},t.$validators.fraction=function(e){return!g||!e||!isNaN(e)},r.$on("currencyRedraw",function(){a(),i()}),u.bind("focus",function(){if(g){var e=[void 0,null,""].indexOf(t.$modelValue)===-1?Number(t.$modelValue).toFixed(b):t.$modelValue;t.$viewValue!==e&&(t.$viewValue=e,t.$render(),u.triggerHandler("focus"))}}),u.bind("blur",i)}}}r.$inject=["$filter","$locale"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 7994072..5e93996 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 3cc45fe90833ef652d6f","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","ngModel","refresh","initialized","$validate","$emit","decimalRex","dChar","RegExp","clearRex","fraction","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","undefined","currencySymbol","CURRENCY_SYM","executeFormatters","viewValue","$$rawModelValue","i","$formatters","length","$setViewValue","$render","keepInRange","active","hardCap","max","min","ngRequired","$observe","Number","$pristine","$parsers","push","$validators","isNaN","$on","$commitViewValue","on","toFixed","$viewValue","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\", \"$timeout\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/*\n\t * ng-currency\n\t * http://alaguirre.com/\n\t\n\t * Version: 0.10.1 - 2016-06-05\n\t * License: MIT\n\t */\n\t\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale, $timeout) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, ngModel) {\n\t var initialized = void 0,\n\t hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t refresh();\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t refresh();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t refresh();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t refresh();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t refresh();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t refresh();\n\t });\n\t\n\t $timeout(function () {\n\t initialized = true;\n\t ngModel.$pristine = false;\n\t refresh();\n\t ngModel.$pristine = true;\n\t });\n\t\n\t function refresh() {\n\t if (initialized) {\n\t ngModel.$validate();\n\t scope.$emit('currencyRedraw');\n\t }\n\t }\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t if (currencySymbol !== undefined) {\n\t return currencySymbol;\n\t }\n\t return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n\t }\n\t\n\t function executeFormatters() {\n\t var viewValue = ngModel.$$rawModelValue;\n\t for (var i = ngModel.$formatters.length - 1; i >= 0; i--) {\n\t viewValue = ngModel.$formatters[i](viewValue);\n\t }\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t }\n\t\n\t function keepInRange(value) {\n\t if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n\t if (max !== undefined && value > max) {\n\t return max;\n\t } else if (min !== undefined && value < min) {\n\t return min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t ngModel.$parsers.push(function (viewValue) {\n\t if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n\t var value = clearValue(viewValue);\n\t // Check for fast digitation (-. or .)\n\t if (value === '.' || value === '-.') {\n\t value = '.0';\n\t }\n\t return Number(value);\n\t }\n\t return viewValue;\n\t });\n\t\n\t ngModel.$parsers.push(keepInRange);\n\t ngModel.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t ngModel.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t ngModel.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t ngModel.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t scope.$on('currencyRedraw', function () {\n\t if (initialized) {\n\t ngModel.$commitViewValue();\n\t var value = keepInRange(ngModel.$$rawModelValue);\n\t if (value !== ngModel.$$rawModelValue) {\n\t ngModel.$setViewValue(value);\n\t ngModel.$commitViewValue();\n\t }\n\t executeFormatters();\n\t }\n\t });\n\t\n\t element.on('focus', function () {\n\t var viewValue = ngModel.$$rawModelValue;\n\t\n\t if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n\t viewValue = '';\n\t } else {\n\t viewValue = Number(viewValue).toFixed(fraction);\n\t }\n\t if (ngModel.$viewValue !== viewValue) {\n\t ngModel.$setViewValue(viewValue);\n\t ngModel.$render();\n\t element.triggerHandler('focus');\n\t }\n\t });\n\t\n\t element.on('blur', function () {\n\t ngModel.$commitViewValue();\n\t executeFormatters();\n\t });\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 3cc45fe90833ef652d6f\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/*\n * ng-currency\n * http://alaguirre.com/\n\n * Version: 0.10.1 - 2016-06-05\n * License: MIT\n */\n\n/* @ngInject */\nexport default function ngCurrency($filter, $locale, $timeout) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, ngModel) => {\n let initialized, hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n refresh();\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n refresh();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n refresh();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n refresh();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n refresh();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n refresh();\n });\n\n $timeout(() => {\n initialized = true;\n ngModel.$pristine = false;\n refresh();\n ngModel.$pristine = true;\n });\n\n function refresh() {\n if (initialized) {\n ngModel.$validate();\n scope.$emit('currencyRedraw');\n }\n }\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n if (currencySymbol !== undefined) {\n return currencySymbol;\n }\n return $locale.NUMBER_FORMATS.CURRENCY_SYM;\n }\n\n function executeFormatters() {\n let viewValue = ngModel.$$rawModelValue;\n for (let i = ngModel.$formatters.length - 1; i >= 0; i--) {\n viewValue = ngModel.$formatters[i](viewValue);\n }\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n }\n\n function keepInRange(value) {\n if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) {\n if (max !== undefined && value > max) {\n return max;\n } else if (min !== undefined && value < min) {\n return min;\n }\n }\n return value;\n }\n\n ngModel.$parsers.push((viewValue) => {\n if (active && [undefined, null, ''].indexOf(viewValue) === -1) {\n let value = clearValue(viewValue);\n // Check for fast digitation (-. or .)\n if (value === '.' || value === '-.') {\n value = '.0';\n }\n return Number(value);\n }\n return viewValue;\n });\n\n ngModel.$parsers.push(keepInRange);\n ngModel.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n ngModel.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n ngModel.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n ngModel.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n scope.$on('currencyRedraw', () => {\n if (initialized) {\n ngModel.$commitViewValue();\n const value = keepInRange(ngModel.$$rawModelValue);\n if (value !== ngModel.$$rawModelValue) {\n ngModel.$setViewValue(value);\n ngModel.$commitViewValue();\n }\n executeFormatters();\n }\n });\n\n element.on('focus', () => {\n let viewValue = ngModel.$$rawModelValue;\n\n if (isNaN(viewValue) || viewValue === '' || viewValue === null) {\n viewValue = '';\n } else {\n viewValue = Number(viewValue).toFixed(fraction);\n }\n if (ngModel.$viewValue !== viewValue) {\n ngModel.$setViewValue(viewValue);\n ngModel.$render();\n element.triggerHandler('focus');\n }\n });\n\n element.on('blur', () => {\n ngModel.$commitViewValue();\n executeFormatters();\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 477eedd52aa6da26f136","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$modelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$$rawModelValue","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","decimalRex","dChar","RegExp","clearRex","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","currencySymbol","CURRENCY_SYM","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$modelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$modelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? Number(controller.$modelValue).toFixed(fraction) : controller.$modelValue;\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 477eedd52aa6da26f136\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$modelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$modelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? Number(controller.$modelValue).toFixed(fraction) : controller.$modelValue;\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 9678be6..4e26d99 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ }, "license": "MIT", "devDependencies": { - "angular": "~1.3", - "angular-mocks": "~1.3", + "angular": "1.5.8", + "angular-mocks": "1.5.8", "babel-core": "6.11.4", "babel-loader": "6.2.4", "babel-preset-es2015": "6.9.0", diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index a31006e..3aedc64 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -1,63 +1,139 @@ -/* - * ng-currency - * http://alaguirre.com/ - - * Version: 0.10.1 - 2016-06-05 - * License: MIT - */ - /* @ngInject */ -export default function ngCurrency($filter, $locale, $timeout) { +export default function ngCurrency($filter, $locale) { return { require: 'ngModel', - link: (scope, element, attrs, ngModel) => { - let initialized, hardCap, min, max, currencySymbol, ngRequired; + link: (scope, element, attrs, controller) => { + let hardCap, min, max, currencySymbol, ngRequired; let active = true; let fraction = 2; attrs.$observe('ngCurrency', (value) => { active = (value !== 'false'); - refresh(); + if (active) { + reformat(); + } else { + controller.$viewValue = controller.$modelValue; + controller.$render(); + } }); attrs.$observe('hardCap', (value) => { hardCap = (value === 'true'); - refresh(); + revalidate(); }); attrs.$observe('min', (value) => { min = value ? Number(value) : undefined; - refresh(); + revalidate(); }); attrs.$observe('max', (value) => { max = value ? Number(value) : undefined; - refresh(); + revalidate(); }); attrs.$observe('currencySymbol', (value) => { currencySymbol = value; - refresh(); + reformat(); }); attrs.$observe('ngRequired', (value) => { ngRequired = value; - refresh(); + revalidate(); }); attrs.$observe('fraction', (value) => { fraction = value || 2; - refresh(); + reformat(); + revalidate(); + }); + + controller.$parsers.push((value) => { + if (active && [undefined, null, ''].indexOf(value) === -1) { + value = clearValue(value); + value = keepInRange(Number(value)); + return value; + } + return value; }); - $timeout(() => { - initialized = true; - ngModel.$pristine = false; - refresh(); - ngModel.$pristine = true; + controller.$formatters.push((value) => { + if (active && [undefined, null, ''].indexOf(value) === -1) { + return $filter('currency')(value, getCurrencySymbol(), fraction); + } + return value; }); - function refresh() { - if (initialized) { - ngModel.$validate(); - scope.$emit('currencyRedraw'); + controller.$validators.min = (value) => { + if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { + return true; + } + return !active || + [undefined, null].indexOf(min) !== -1 || isNaN(min) || + value >= min; + }; + + controller.$validators.max = (value) => { + if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { + return true; + } + return !active || + [undefined, null].indexOf(max) !== -1 || isNaN(max) || + value <= max; + }; + + controller.$validators.fraction = (value) => { + return !active || !value || !isNaN(value); + }; + + function reformat() { + if (active) { + let value = controller.$modelValue; + for (let i = controller.$formatters.length - 1; i >= 0; i--) { + value = controller.$formatters[i](value); + } + controller.$viewValue = value; + controller.$render(); + } + } + + function revalidate() { + controller.$validate(); + if (active) { + const value = keepInRange(controller.$$rawModelValue); + if (value !== controller.$$rawModelValue) { + controller.$setViewValue(value.toFixed(fraction)); + controller.$commitViewValue(); + reformat(); + } } } + function keepInRange(value) { + if (hardCap) { + if (max !== undefined && value > max) { + value = max; + } else if (min !== undefined && value < min) { + value = min; + } + } + return value; + } + + scope.$on('currencyRedraw', () => { + revalidate(); + reformat(); + }); + + element.bind('focus', () => { + if (active) { + const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? Number(controller.$modelValue).toFixed(fraction) : controller.$modelValue; + if (controller.$viewValue !== value) { + controller.$viewValue = value; + controller.$render(); + element.triggerHandler('focus'); + } + } + }); + + element.bind('blur', reformat); + + // TODO: Rewrite this parsing logic to more readable. + function decimalRex(dChar) { return RegExp('\\d|\\-|\\' + dChar, 'g'); } @@ -102,105 +178,8 @@ export default function ngCurrency($filter, $locale, $timeout) { } function getCurrencySymbol() { - if (currencySymbol !== undefined) { - return currencySymbol; - } - return $locale.NUMBER_FORMATS.CURRENCY_SYM; - } - - function executeFormatters() { - let viewValue = ngModel.$$rawModelValue; - for (let i = ngModel.$formatters.length - 1; i >= 0; i--) { - viewValue = ngModel.$formatters[i](viewValue); - } - ngModel.$setViewValue(viewValue); - ngModel.$render(); - } - - function keepInRange(value) { - if (active && hardCap && [undefined, null, ''].indexOf(value) === -1) { - if (max !== undefined && value > max) { - return max; - } else if (min !== undefined && value < min) { - return min; - } - } - return value; + return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol; } - - ngModel.$parsers.push((viewValue) => { - if (active && [undefined, null, ''].indexOf(viewValue) === -1) { - let value = clearValue(viewValue); - // Check for fast digitation (-. or .) - if (value === '.' || value === '-.') { - value = '.0'; - } - return Number(value); - } - return viewValue; - }); - - ngModel.$parsers.push(keepInRange); - ngModel.$formatters.push((value) => { - if (active && [undefined, null, ''].indexOf(value) === -1) { - return $filter('currency')(value, getCurrencySymbol(), fraction); - } - return value; - }); - - ngModel.$validators.min = (value) => { - if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { - return true; - } - return !active || - [undefined, null].indexOf(min) !== -1 || isNaN(min) || - value >= min; - }; - - ngModel.$validators.max = (value) => { - if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { - return true; - } - return !active || - [undefined, null].indexOf(max) !== -1 || isNaN(max) || - value <= max; - }; - - ngModel.$validators.fraction = (value) => { - return !active || !value || !isNaN(value); - }; - - scope.$on('currencyRedraw', () => { - if (initialized) { - ngModel.$commitViewValue(); - const value = keepInRange(ngModel.$$rawModelValue); - if (value !== ngModel.$$rawModelValue) { - ngModel.$setViewValue(value); - ngModel.$commitViewValue(); - } - executeFormatters(); - } - }); - - element.on('focus', () => { - let viewValue = ngModel.$$rawModelValue; - - if (isNaN(viewValue) || viewValue === '' || viewValue === null) { - viewValue = ''; - } else { - viewValue = Number(viewValue).toFixed(fraction); - } - if (ngModel.$viewValue !== viewValue) { - ngModel.$setViewValue(viewValue); - ngModel.$render(); - element.triggerHandler('focus'); - } - }); - - element.on('blur', () => { - ngModel.$commitViewValue(); - executeFormatters(); - }); } }; } diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index 216afed..7feff00 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -34,6 +34,7 @@ describe('ngCurrency directive tests', () => { scope.value = 0; scope.$digest(); element = $compile(defaults)(scope); + element = element.find('input'); $timeout.flush(); })); @@ -55,6 +56,15 @@ describe('ngCurrency directive tests', () => { expect(scope.value).toEqual(-1.11); }); + it('should be able to parse empty values', () => { + element.val(''); + element.triggerHandler('input'); + expect(scope.value).toEqual(''); + expect(element.val()).toEqual(''); + element.triggerHandler('focus'); + expect(element.val()).toEqual(''); + }); + it('should be able to parse and reformat a value', () => { element.val('123123.45'); element.triggerHandler('input'); @@ -107,11 +117,29 @@ describe('ngCurrency directive tests', () => { expect(element.val()).toEqual('$0.50'); }); - it('should parse "-.5" to ($0.50)', () => { + it('should parse "-.5" to -$0.50', () => { element.val('-.5'); element.triggerHandler('input'); element.triggerHandler('blur'); expect(scope.value).toEqual(-0.5); + expect(element.val()).toEqual('-$0.50'); + }); + }); + + describe('Custom Locale Options', () => { + let $locale; + beforeEach(angular.mock.inject((_$locale_) => { + $locale = _$locale_; + })); + + it('should parse "($0.50)" to ($0.50)', () => { + const currencyPatterns = $locale.NUMBER_FORMATS.PATTERNS[1]; + currencyPatterns.negPre = '(\u00a4'; + currencyPatterns.negSuf = ')'; + element.val('($0.50)'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(scope.value).toEqual(-0.5); expect(element.val()).toEqual('($0.50)'); }); }); @@ -160,6 +188,75 @@ describe('ngCurrency directive tests', () => { }); }); }); + + describe('$pristine', () => { + it('should be pristine when initialized', () => { + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + }); + + it('should stay $pristine if the modelValue has not changed', () => { + element.triggerHandler('focus'); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + element.triggerHandler('blur'); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + }); + + it('should stay $pristine if the modelValue is changed', () => { + scope.value = 10; + scope.$digest(); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + element.triggerHandler('focus'); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + element.triggerHandler('blur'); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + }); + + it('should not stay $pristine if its already $dirty', () => { + element.val('$10.00'); + element.triggerHandler('input'); + expect(element.hasClass('ng-pristine')).toBeFalsy(); + expect(scope.form.currency.$pristine).toBeFalsy(); + expect(scope.form.currency.$dirty).toBeTruthy(); + expect(scope.form.$pristine).toBeFalsy(); + expect(scope.form.$dirty).toBeTruthy(); + element.triggerHandler('focus'); + expect(element.hasClass('ng-pristine')).toBeFalsy(); + expect(scope.form.currency.$pristine).toBeFalsy(); + expect(scope.form.currency.$dirty).toBeTruthy(); + expect(scope.form.$pristine).toBeFalsy(); + expect(scope.form.$dirty).toBeTruthy(); + element.triggerHandler('blur'); + expect(element.hasClass('ng-pristine')).toBeFalsy(); + expect(scope.form.currency.$pristine).toBeFalsy(); + expect(scope.form.currency.$dirty).toBeTruthy(); + expect(scope.form.$pristine).toBeFalsy(); + expect(scope.form.$dirty).toBeTruthy(); + }); + }); }); // Functionality that is specific to the default values @@ -169,6 +266,7 @@ describe('ngCurrency directive tests', () => { scope.value = 0; scope.$digest(); element = $compile(defaults)(scope); + element = element.find('input'); $timeout.flush(); })); @@ -220,6 +318,7 @@ describe('ngCurrency directive tests', () => { scope.currencySymbol = '$'; scope.$digest(); element = $compile(variables)(scope); + element = element.find('input'); $timeout.flush(); })); @@ -281,15 +380,6 @@ describe('ngCurrency directive tests', () => { expect(scope.value).toEqual(123.45); expect(element.val()).toEqual('$123.45'); }); - it('should be pristine on start', () => { - scope.value = '123.45'; - scope.$digest(); - expect(element.hasClass('ng-pristine')).toBeTruthy(); - element.val('1235.45'); - element.triggerHandler('input'); - element.triggerHandler('blur'); - expect(element.hasClass('ng-dirty')).toBeTruthy(); - }); }); describe('Max', () => { @@ -445,7 +535,7 @@ describe('ngCurrency directive tests', () => { scope.min = 0; scope.$digest(); expect(element.hasClass('ng-invalid-min')).toBeTruthy(); - expect(element.val()).toEqual('($0.01)'); + expect(element.val()).toEqual('-$0.01'); }); it('should do nothing when an invalid value is provided', () => { @@ -517,5 +607,18 @@ describe('ngCurrency directive tests', () => { }); }); }); + + describe('$pristine', () => { + it('should be pristine when initialized with a custom currencySymbol', () => { + scope.currencySymbol = '¥'; + scope.$digest(); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + expect(element.val()).toEqual('¥0.00'); + }); + }); }); }); diff --git a/test/ng-currency/templates/defaults.html b/test/ng-currency/templates/defaults.html index ff6ea1f..3f26f71 100644 --- a/test/ng-currency/templates/defaults.html +++ b/test/ng-currency/templates/defaults.html @@ -1 +1,3 @@ - +
+ +
diff --git a/test/ng-currency/templates/variables.html b/test/ng-currency/templates/variables.html index 9023a2a..c646c5c 100644 --- a/test/ng-currency/templates/variables.html +++ b/test/ng-currency/templates/variables.html @@ -1,9 +1,12 @@ - +
+ +
From 6f7813bfc9f7d63742eb890bc2c8d67b1b3188ef Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Sun, 14 Aug 2016 22:32:58 -0500 Subject: [PATCH 019/159] 1.0.0 --- CHANGELOG.md | 4 ++++ bower.json | 2 +- package.json | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a04652c..b3720aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.0 + +* Fixed an issue which caused $pristine to get set to false on focus and blur (#105) + ## 0.11.3 * Fixed a bug which fields becomes dirty instead of pristine diff --git a/bower.json b/bower.json index 2638248..75112b3 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.11.3", + "version": "1.0.0", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", diff --git a/package.json b/package.json index 4e26d99..91a9c9a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.11.3", + "version": "1.0.0", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", From d635ae803317555c32388e3b0c51f9770938b20d Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Sun, 14 Aug 2016 23:03:35 -0500 Subject: [PATCH 020/159] Displaying the real value on focus now display the locales decimal separator rather then always displaying '.' --- dist/ng-currency.js | 2 +- dist/ng-currency.js.map | 2 +- src/ng-currency.directive.js | 2 +- test/ng-currency/ng-currency.directive.spec.js | 13 +++++++++++++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 3bb0520..5464b1d 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(u){if(r[u])return r[u].exports;var o=r[u]={exports:{},id:u,loaded:!1};return e[u].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=r(2),t=u(o),i=r(1),a=u(i),l=t["default"].module("ng-currency",[]);l.directive("ngCurrency",a["default"]),n["default"]=l.name},function(e,n){"use strict";function r(e,n){return{require:"ngModel",link:function(r,u,o,t){function i(){if(g){for(var e=t.$modelValue,n=t.$formatters.length-1;n>=0;n--)e=t.$formatters[n](e);t.$viewValue=e,t.$render()}}function a(){if(t.$validate(),g){var e=l(t.$$rawModelValue);e!==t.$$rawModelValue&&(t.$setViewValue(e.toFixed(b)),t.$commitViewValue(),i())}}function l(e){return v&&(void 0!==x&&e>x?e=x:void 0!==$&&e<$&&(e=$)),e}function c(e){return RegExp("\\d|\\-|\\"+e,"g")}function d(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+b+"}","g")}function f(r){r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&b>0&&(u=".");var t=e("currency")("-1",s(),b),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),a=t.replace(i.exec(t),""),l=r.replace(i.exec(r),"");return a===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),c(u).test(r)&&(o=r.match(c(u)).join("").match(d(u)),o=o?o[0].replace(u,"."):null),o}function s(){return void 0===p?n.NUMBER_FORMATS.CURRENCY_SYM:p}var v=void 0,$=void 0,x=void 0,p=void 0,m=void 0,g=!0,b=2;o.$observe("ngCurrency",function(e){g="false"!==e,g?i():(t.$viewValue=t.$modelValue,t.$render())}),o.$observe("hardCap",function(e){v="true"===e,a()}),o.$observe("min",function(e){$=e?Number(e):void 0,a()}),o.$observe("max",function(e){x=e?Number(e):void 0,a()}),o.$observe("currencySymbol",function(e){p=e,i()}),o.$observe("ngRequired",function(e){m=e,a()}),o.$observe("fraction",function(e){b=e||2,i(),a()}),t.$parsers.push(function(e){return g&&[void 0,null,""].indexOf(e)===-1?(e=f(e),e=l(Number(e))):e}),t.$formatters.push(function(n){return g&&[void 0,null,""].indexOf(n)===-1?e("currency")(n,s(),b):n}),t.$validators.min=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},t.$validators.max=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(x)!==-1||isNaN(x)||e<=x)},t.$validators.fraction=function(e){return!g||!e||!isNaN(e)},r.$on("currencyRedraw",function(){a(),i()}),u.bind("focus",function(){if(g){var e=[void 0,null,""].indexOf(t.$modelValue)===-1?Number(t.$modelValue).toFixed(b):t.$modelValue;t.$viewValue!==e&&(t.$viewValue=e,t.$render(),u.triggerHandler("focus"))}}),u.bind("blur",i)}}}r.$inject=["$filter","$locale"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(u){if(r[u])return r[u].exports;var o=r[u]={exports:{},id:u,loaded:!1};return e[u].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=r(2),t=u(o),i=r(1),a=u(i),l=t["default"].module("ng-currency",[]);l.directive("ngCurrency",a["default"]),n["default"]=l.name},function(e,n){"use strict";function r(e,n){return{require:"ngModel",link:function(r,u,o,t){function i(){if(g){for(var e=t.$modelValue,n=t.$formatters.length-1;n>=0;n--)e=t.$formatters[n](e);t.$viewValue=e,t.$render()}}function a(){if(t.$validate(),g){var e=l(t.$$rawModelValue);e!==t.$$rawModelValue&&(t.$setViewValue(e.toFixed(M)),t.$commitViewValue(),i())}}function l(e){return v&&(void 0!==p&&e>p?e=p:void 0!==$&&e<$&&(e=$)),e}function c(e){return RegExp("\\d|\\-|\\"+e,"g")}function d(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+M+"}","g")}function f(r){r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&M>0&&(u=".");var t=e("currency")("-1",s(),M),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),a=t.replace(i.exec(t),""),l=r.replace(i.exec(r),"");return a===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),c(u).test(r)&&(o=r.match(c(u)).join("").match(d(u)),o=o?o[0].replace(u,"."):null),o}function s(){return void 0===x?n.NUMBER_FORMATS.CURRENCY_SYM:x}var v=void 0,$=void 0,p=void 0,x=void 0,m=void 0,g=!0,M=2;o.$observe("ngCurrency",function(e){g="false"!==e,g?i():(t.$viewValue=t.$modelValue,t.$render())}),o.$observe("hardCap",function(e){v="true"===e,a()}),o.$observe("min",function(e){$=e?Number(e):void 0,a()}),o.$observe("max",function(e){p=e?Number(e):void 0,a()}),o.$observe("currencySymbol",function(e){x=e,i()}),o.$observe("ngRequired",function(e){m=e,a()}),o.$observe("fraction",function(e){M=e||2,i(),a()}),t.$parsers.push(function(e){return g&&[void 0,null,""].indexOf(e)===-1?(e=f(e),e=l(Number(e))):e}),t.$formatters.push(function(n){return g&&[void 0,null,""].indexOf(n)===-1?e("currency")(n,s(),M):n}),t.$validators.min=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},t.$validators.max=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(p)!==-1||isNaN(p)||e<=p)},t.$validators.fraction=function(e){return!g||!e||!isNaN(e)},r.$on("currencyRedraw",function(){a(),i()}),u.bind("focus",function(){if(g){var r=[void 0,null,""].indexOf(t.$modelValue)===-1?e("number")(t.$modelValue,M).replace(n.NUMBER_FORMATS.GROUP_SEP,""):t.$modelValue;t.$viewValue!==r&&(t.$viewValue=r,t.$render(),u.triggerHandler("focus"))}}),u.bind("blur",i)}}}r.$inject=["$filter","$locale"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); //# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 5e93996..55f8fe6 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 477eedd52aa6da26f136","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$modelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$$rawModelValue","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","decimalRex","dChar","RegExp","clearRex","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","currencySymbol","CURRENCY_SYM","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$modelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$modelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? Number(controller.$modelValue).toFixed(fraction) : controller.$modelValue;\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 477eedd52aa6da26f136\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$modelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$modelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? Number(controller.$modelValue).toFixed(fraction) : controller.$modelValue;\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap f22c1bf25e92d3452a9c","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$modelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$$rawModelValue","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","decimalRex","dChar","RegExp","clearRex","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","currencySymbol","CURRENCY_SYM","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$modelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$modelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? $filter('number')(controller.$modelValue, fraction).replace($locale.NUMBER_FORMATS.GROUP_SEP, '') : controller.$modelValue;\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap f22c1bf25e92d3452a9c\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$modelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$modelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? $filter('number')(controller.$modelValue, fraction).replace($locale.NUMBER_FORMATS.GROUP_SEP, '') : controller.$modelValue;\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 3aedc64..5addd7f 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -121,7 +121,7 @@ export default function ngCurrency($filter, $locale) { element.bind('focus', () => { if (active) { - const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? Number(controller.$modelValue).toFixed(fraction) : controller.$modelValue; + const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? $filter('number')(controller.$modelValue, fraction).replace($locale.NUMBER_FORMATS.GROUP_SEP, '') : controller.$modelValue; if (controller.$viewValue !== value) { controller.$viewValue = value; controller.$render(); diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index 7feff00..32ff33b 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -142,6 +142,19 @@ describe('ngCurrency directive tests', () => { expect(scope.value).toEqual(-0.5); expect(element.val()).toEqual('($0.50)'); }); + + it('should support locales with "," as the decimal separator and "." as the group separator', () => { + $locale.NUMBER_FORMATS.DECIMAL_SEP = ','; + $locale.NUMBER_FORMATS.GROUP_SEP = '.'; + element.val('$0,50'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(scope.value).toEqual(0.5); + expect(element.val()).toEqual('$0,50'); + element.triggerHandler('focus'); + expect(scope.value).toEqual(0.5); + expect(element.val()).toEqual('0,50'); + }); }); describe('Support other Directives', () => { From 41bbd4aa47bf5bc9071b540958acb8434c6ba9b3 Mon Sep 17 00:00:00 2001 From: Luis Aguirre Date: Mon, 15 Aug 2016 14:03:04 -0300 Subject: [PATCH 021/159] Added Nick Woodward as Author --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 994725e..5cbcb62 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,11 @@ angular.module('myApp', ['ng-currency']); + http://alaguirre.com + http://github.com/aguirrel +**Nick Woodward** + ++ http://salte.io ++ http://github.com/nick-woodward + ## Copyright and license The MIT License From 713f4b37878a6429dae1efa0fe8f7f07236eab71 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Wed, 17 Aug 2016 19:23:43 -0500 Subject: [PATCH 022/159] fix: tests need to run when the ci process is kicked off Fixes #108 --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index e14763b..2de4245 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,7 @@ cache: directories: - node_modules script: +- npm run test - npm run build:prod notifications: email: false From d9990d12fad887d96367f4141063cdd1d5aaaca3 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Wed, 17 Aug 2016 19:24:29 -0500 Subject: [PATCH 023/159] 1.1.0 --- CHANGELOG.md | 5 +++++ bower.json | 2 +- package.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3720aa..e9ba507 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.1.0 + +* Displaying the real value on focus now displays the value with the locale decimal separator +* Fixed tests not getting kicked off with travis ci + ## 1.0.0 * Fixed an issue which caused $pristine to get set to false on focus and blur (#105) diff --git a/bower.json b/bower.json index 75112b3..e256022 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "1.0.0", + "version": "1.1.0", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", diff --git a/package.json b/package.json index 91a9c9a..f9d422e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "1.0.0", + "version": "1.1.0", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", From af232de45a965bfb46918d636abec44565028616 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Thu, 18 Aug 2016 21:29:59 -0500 Subject: [PATCH 024/159] fix: add semantic-release and publish latest --- .travis.yml | 5 ++++- README.md | 9 +++++++++ bower.json | 2 +- dist/ng-currency.js | 2 -- dist/ng-currency.js.map | 1 - package.json | 14 ++++++++++++-- test/app.js | 10 ---------- test/style.css | 0 test/test.html | 38 -------------------------------------- 9 files changed, 26 insertions(+), 55 deletions(-) delete mode 100644 dist/ng-currency.js delete mode 100644 dist/ng-currency.js.map delete mode 100644 test/app.js delete mode 100644 test/style.css delete mode 100644 test/test.html diff --git a/.travis.yml b/.travis.yml index 2de4245..eec3156 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,11 @@ node_js: cache: directories: - node_modules +before_script: +- npm prune script: - npm run test -- npm run build:prod +after_success: +- if [ "$TRAVIS_BRANCH" = "master" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then npm run semantic-release; fi notifications: email: false diff --git a/README.md b/README.md index 5cbcb62..6fa1b49 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,9 @@ [![NPM Downloads][npm-downloads-image]][npm-url] [![Travis][travis-ci-image]][travis-ci-url] +[![semantic-release][semantic-release-image]][semantic-release-url] +[![Commitizen friendly][commitizen-image]][commitizen-url] + ngCurrency is a directive that enables seamless use of currency inputs. Main features: @@ -154,3 +157,9 @@ angular.module('myApp', ['ng-currency']); [travis-ci-image]: https://img.shields.io/travis/aguirrel/ng-currency.svg?style=flat [travis-ci-url]: https://travis-ci.org/aguirrel/ng-currency + +[commitizen-image]: https://img.shields.io/badge/commitizen-friendly-brightgreen.svg +[commitizen-url]: http://commitizen.github.io/cz-cli/ + +[semantic-release-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg +[semantic-release-url]: https://github.com/semantic-release/semantic-release diff --git a/bower.json b/bower.json index e256022..ed7c7a2 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "1.1.0", + "version": "0.0.0-semantically-released.0", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", diff --git a/dist/ng-currency.js b/dist/ng-currency.js deleted file mode 100644 index 5464b1d..0000000 --- a/dist/ng-currency.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(u){if(r[u])return r[u].exports;var o=r[u]={exports:{},id:u,loaded:!1};return e[u].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=r(2),t=u(o),i=r(1),a=u(i),l=t["default"].module("ng-currency",[]);l.directive("ngCurrency",a["default"]),n["default"]=l.name},function(e,n){"use strict";function r(e,n){return{require:"ngModel",link:function(r,u,o,t){function i(){if(g){for(var e=t.$modelValue,n=t.$formatters.length-1;n>=0;n--)e=t.$formatters[n](e);t.$viewValue=e,t.$render()}}function a(){if(t.$validate(),g){var e=l(t.$$rawModelValue);e!==t.$$rawModelValue&&(t.$setViewValue(e.toFixed(M)),t.$commitViewValue(),i())}}function l(e){return v&&(void 0!==p&&e>p?e=p:void 0!==$&&e<$&&(e=$)),e}function c(e){return RegExp("\\d|\\-|\\"+e,"g")}function d(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+M+"}","g")}function f(r){r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&M>0&&(u=".");var t=e("currency")("-1",s(),M),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),a=t.replace(i.exec(t),""),l=r.replace(i.exec(r),"");return a===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),c(u).test(r)&&(o=r.match(c(u)).join("").match(d(u)),o=o?o[0].replace(u,"."):null),o}function s(){return void 0===x?n.NUMBER_FORMATS.CURRENCY_SYM:x}var v=void 0,$=void 0,p=void 0,x=void 0,m=void 0,g=!0,M=2;o.$observe("ngCurrency",function(e){g="false"!==e,g?i():(t.$viewValue=t.$modelValue,t.$render())}),o.$observe("hardCap",function(e){v="true"===e,a()}),o.$observe("min",function(e){$=e?Number(e):void 0,a()}),o.$observe("max",function(e){p=e?Number(e):void 0,a()}),o.$observe("currencySymbol",function(e){x=e,i()}),o.$observe("ngRequired",function(e){m=e,a()}),o.$observe("fraction",function(e){M=e||2,i(),a()}),t.$parsers.push(function(e){return g&&[void 0,null,""].indexOf(e)===-1?(e=f(e),e=l(Number(e))):e}),t.$formatters.push(function(n){return g&&[void 0,null,""].indexOf(n)===-1?e("currency")(n,s(),M):n}),t.$validators.min=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},t.$validators.max=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(p)!==-1||isNaN(p)||e<=p)},t.$validators.fraction=function(e){return!g||!e||!isNaN(e)},r.$on("currencyRedraw",function(){a(),i()}),u.bind("focus",function(){if(g){var r=[void 0,null,""].indexOf(t.$modelValue)===-1?e("number")(t.$modelValue,M).replace(n.NUMBER_FORMATS.GROUP_SEP,""):t.$modelValue;t.$viewValue!==r&&(t.$viewValue=r,t.$render(),u.triggerHandler("focus"))}}),u.bind("blur",i)}}}r.$inject=["$filter","$locale"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); -//# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map deleted file mode 100644 index 55f8fe6..0000000 --- a/dist/ng-currency.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap f22c1bf25e92d3452a9c","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$modelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$$rawModelValue","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","decimalRex","dChar","RegExp","clearRex","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","currencySymbol","CURRENCY_SYM","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$modelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$modelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? $filter('number')(controller.$modelValue, fraction).replace($locale.NUMBER_FORMATS.GROUP_SEP, '') : controller.$modelValue;\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap f22c1bf25e92d3452a9c\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$modelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$modelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? $filter('number')(controller.$modelValue, fraction).replace($locale.NUMBER_FORMATS.GROUP_SEP, '') : controller.$modelValue;\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index f9d422e..5dfa791 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "1.1.0", + "version": "0.0.0-semantically-released.0", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", @@ -22,7 +22,9 @@ "tdd": "karma start", "test": "karma start --single-run", "build:dev": "webpack -d", - "build:prod": "webpack -p" + "build:prod": "webpack -p", + "publish-latest": "publish-latest --user-email luis@alaguirre.com --user-name aguirrel", + "semantic-release": "semantic-release pre && npm run build:prod && npm publish && npm run publish-latest && semantic-release post" }, "license": "MIT", "devDependencies": { @@ -31,6 +33,7 @@ "babel-core": "6.11.4", "babel-loader": "6.2.4", "babel-preset-es2015": "6.9.0", + "cz-conventional-changelog": "^1.2.0", "eslint": "3.1.1", "eslint-config-google": "0.6.0", "eslint-loader": "1.4.1", @@ -49,7 +52,14 @@ "ng-annotate-loader": "0.1.1", "ng-select-all-on-focus": "1.0.3", "phantomjs-prebuilt": "2.1.8", + "publish-latest": "^1.1.2", + "semantic-release": "^4.3.5", "sinon": "^1.17.5", "webpack": "1.13.1" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } } } diff --git a/test/app.js b/test/app.js deleted file mode 100644 index 24deb68..0000000 --- a/test/app.js +++ /dev/null @@ -1,10 +0,0 @@ -var app = angular.module('plunker', ['ng-currency']); -var scope; -app.controller('MainCtrl', function($scope) { - scope=$scope; - $scope.testModel = 123456.78; - $scope.listModel = [ - {"Id":43,"YearId":0,"Caption":"test","Amount":0.4}, - {"Id":44,"YearId":0,"Caption":"testt","Amount":7.0} - ]; -}); diff --git a/test/style.css b/test/style.css deleted file mode 100644 index e69de29..0000000 diff --git a/test/test.html b/test/test.html deleted file mode 100644 index 5fada89..0000000 --- a/test/test.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - -AngularJS Plunker - - - - - - - - - - - - - - - -
-(autoformat on blur!) -

model value: {{testModel}}

-

{{testForm.testInput.$error}}

- -

Repeat

-
- (autoformat on blur!) - {{i['Amount'] | currency: ""}} -
- -
- - - From eecefecc6920bacd1d037257105cb48b84404f3c Mon Sep 17 00:00:00 2001 From: aguirrel Date: Fri, 19 Aug 2016 02:36:23 +0000 Subject: [PATCH 025/159] v1.1.1 --- dist/ng-currency.js | 2 ++ dist/ng-currency.js.map | 1 + package.json | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 dist/ng-currency.js create mode 100644 dist/ng-currency.js.map diff --git a/dist/ng-currency.js b/dist/ng-currency.js new file mode 100644 index 0000000..5464b1d --- /dev/null +++ b/dist/ng-currency.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(u){if(r[u])return r[u].exports;var o=r[u]={exports:{},id:u,loaded:!1};return e[u].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=r(2),t=u(o),i=r(1),a=u(i),l=t["default"].module("ng-currency",[]);l.directive("ngCurrency",a["default"]),n["default"]=l.name},function(e,n){"use strict";function r(e,n){return{require:"ngModel",link:function(r,u,o,t){function i(){if(g){for(var e=t.$modelValue,n=t.$formatters.length-1;n>=0;n--)e=t.$formatters[n](e);t.$viewValue=e,t.$render()}}function a(){if(t.$validate(),g){var e=l(t.$$rawModelValue);e!==t.$$rawModelValue&&(t.$setViewValue(e.toFixed(M)),t.$commitViewValue(),i())}}function l(e){return v&&(void 0!==p&&e>p?e=p:void 0!==$&&e<$&&(e=$)),e}function c(e){return RegExp("\\d|\\-|\\"+e,"g")}function d(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+M+"}","g")}function f(r){r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&M>0&&(u=".");var t=e("currency")("-1",s(),M),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),a=t.replace(i.exec(t),""),l=r.replace(i.exec(r),"");return a===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),c(u).test(r)&&(o=r.match(c(u)).join("").match(d(u)),o=o?o[0].replace(u,"."):null),o}function s(){return void 0===x?n.NUMBER_FORMATS.CURRENCY_SYM:x}var v=void 0,$=void 0,p=void 0,x=void 0,m=void 0,g=!0,M=2;o.$observe("ngCurrency",function(e){g="false"!==e,g?i():(t.$viewValue=t.$modelValue,t.$render())}),o.$observe("hardCap",function(e){v="true"===e,a()}),o.$observe("min",function(e){$=e?Number(e):void 0,a()}),o.$observe("max",function(e){p=e?Number(e):void 0,a()}),o.$observe("currencySymbol",function(e){x=e,i()}),o.$observe("ngRequired",function(e){m=e,a()}),o.$observe("fraction",function(e){M=e||2,i(),a()}),t.$parsers.push(function(e){return g&&[void 0,null,""].indexOf(e)===-1?(e=f(e),e=l(Number(e))):e}),t.$formatters.push(function(n){return g&&[void 0,null,""].indexOf(n)===-1?e("currency")(n,s(),M):n}),t.$validators.min=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},t.$validators.max=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(p)!==-1||isNaN(p)||e<=p)},t.$validators.fraction=function(e){return!g||!e||!isNaN(e)},r.$on("currencyRedraw",function(){a(),i()}),u.bind("focus",function(){if(g){var r=[void 0,null,""].indexOf(t.$modelValue)===-1?e("number")(t.$modelValue,M).replace(n.NUMBER_FORMATS.GROUP_SEP,""):t.$modelValue;t.$viewValue!==r&&(t.$viewValue=r,t.$render(),u.triggerHandler("focus"))}}),u.bind("blur",i)}}}r.$inject=["$filter","$locale"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +//# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map new file mode 100644 index 0000000..55f8fe6 --- /dev/null +++ b/dist/ng-currency.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap f22c1bf25e92d3452a9c","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$modelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$$rawModelValue","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","decimalRex","dChar","RegExp","clearRex","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","currencySymbol","CURRENCY_SYM","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$modelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$modelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? $filter('number')(controller.$modelValue, fraction).replace($locale.NUMBER_FORMATS.GROUP_SEP, '') : controller.$modelValue;\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap f22c1bf25e92d3452a9c\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$modelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$modelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? $filter('number')(controller.$modelValue, fraction).replace($locale.NUMBER_FORMATS.GROUP_SEP, '') : controller.$modelValue;\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 5dfa791..1e98c98 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.0.0-semantically-released.0", + "version": "1.1.1", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", @@ -62,4 +62,4 @@ "path": "./node_modules/cz-conventional-changelog" } } -} +} \ No newline at end of file From 2a5dc29030d2270593d3f277886604c8f7729ca8 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Thu, 18 Aug 2016 21:39:22 -0500 Subject: [PATCH 026/159] fix: incorrect email on automated deployment --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5dfa791..48090e6 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "test": "karma start --single-run", "build:dev": "webpack -d", "build:prod": "webpack -p", - "publish-latest": "publish-latest --user-email luis@alaguirre.com --user-name aguirrel", + "publish-latest": "publish-latest --user-email aguirrel@xuar.com.ar --user-name aguirrel", "semantic-release": "semantic-release pre && npm run build:prod && npm publish && npm run publish-latest && semantic-release post" }, "license": "MIT", From 6747c17cb67bb8661c6e29b8d5a3015c421403c5 Mon Sep 17 00:00:00 2001 From: aguirrel Date: Fri, 19 Aug 2016 02:40:32 +0000 Subject: [PATCH 027/159] v1.1.2 --- dist/ng-currency.js | 2 ++ dist/ng-currency.js.map | 1 + package.json | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 dist/ng-currency.js create mode 100644 dist/ng-currency.js.map diff --git a/dist/ng-currency.js b/dist/ng-currency.js new file mode 100644 index 0000000..5464b1d --- /dev/null +++ b/dist/ng-currency.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(u){if(r[u])return r[u].exports;var o=r[u]={exports:{},id:u,loaded:!1};return e[u].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=r(2),t=u(o),i=r(1),a=u(i),l=t["default"].module("ng-currency",[]);l.directive("ngCurrency",a["default"]),n["default"]=l.name},function(e,n){"use strict";function r(e,n){return{require:"ngModel",link:function(r,u,o,t){function i(){if(g){for(var e=t.$modelValue,n=t.$formatters.length-1;n>=0;n--)e=t.$formatters[n](e);t.$viewValue=e,t.$render()}}function a(){if(t.$validate(),g){var e=l(t.$$rawModelValue);e!==t.$$rawModelValue&&(t.$setViewValue(e.toFixed(M)),t.$commitViewValue(),i())}}function l(e){return v&&(void 0!==p&&e>p?e=p:void 0!==$&&e<$&&(e=$)),e}function c(e){return RegExp("\\d|\\-|\\"+e,"g")}function d(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+M+"}","g")}function f(r){r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&M>0&&(u=".");var t=e("currency")("-1",s(),M),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),a=t.replace(i.exec(t),""),l=r.replace(i.exec(r),"");return a===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),c(u).test(r)&&(o=r.match(c(u)).join("").match(d(u)),o=o?o[0].replace(u,"."):null),o}function s(){return void 0===x?n.NUMBER_FORMATS.CURRENCY_SYM:x}var v=void 0,$=void 0,p=void 0,x=void 0,m=void 0,g=!0,M=2;o.$observe("ngCurrency",function(e){g="false"!==e,g?i():(t.$viewValue=t.$modelValue,t.$render())}),o.$observe("hardCap",function(e){v="true"===e,a()}),o.$observe("min",function(e){$=e?Number(e):void 0,a()}),o.$observe("max",function(e){p=e?Number(e):void 0,a()}),o.$observe("currencySymbol",function(e){x=e,i()}),o.$observe("ngRequired",function(e){m=e,a()}),o.$observe("fraction",function(e){M=e||2,i(),a()}),t.$parsers.push(function(e){return g&&[void 0,null,""].indexOf(e)===-1?(e=f(e),e=l(Number(e))):e}),t.$formatters.push(function(n){return g&&[void 0,null,""].indexOf(n)===-1?e("currency")(n,s(),M):n}),t.$validators.min=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},t.$validators.max=function(e){return!(m||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(p)!==-1||isNaN(p)||e<=p)},t.$validators.fraction=function(e){return!g||!e||!isNaN(e)},r.$on("currencyRedraw",function(){a(),i()}),u.bind("focus",function(){if(g){var r=[void 0,null,""].indexOf(t.$modelValue)===-1?e("number")(t.$modelValue,M).replace(n.NUMBER_FORMATS.GROUP_SEP,""):t.$modelValue;t.$viewValue!==r&&(t.$viewValue=r,t.$render(),u.triggerHandler("focus"))}}),u.bind("blur",i)}}}r.$inject=["$filter","$locale"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +//# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map new file mode 100644 index 0000000..55f8fe6 --- /dev/null +++ b/dist/ng-currency.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap f22c1bf25e92d3452a9c","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$modelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$$rawModelValue","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","decimalRex","dChar","RegExp","clearRex","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","currencySymbol","CURRENCY_SYM","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$modelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$modelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? $filter('number')(controller.$modelValue, fraction).replace($locale.NUMBER_FORMATS.GROUP_SEP, '') : controller.$modelValue;\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap f22c1bf25e92d3452a9c\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$modelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$modelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? $filter('number')(controller.$modelValue, fraction).replace($locale.NUMBER_FORMATS.GROUP_SEP, '') : controller.$modelValue;\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 48090e6..e7de1ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.0.0-semantically-released.0", + "version": "1.1.2", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", @@ -62,4 +62,4 @@ "path": "./node_modules/cz-conventional-changelog" } } -} +} \ No newline at end of file From 8f66a3f53ef847934f5dac8f71a448b6b597d79e Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Wed, 24 Aug 2016 19:03:04 -0500 Subject: [PATCH 028/159] fix(validators): fix invalid values causing the field to get blanked out Invalid values were causing the field to become blank when focused or blurred. Focusing the field will no longer leave behind extra group separators. This closes #110 --- src/ng-currency.directive.js | 7 +++-- .../ng-currency/ng-currency.directive.spec.js | 28 +++++++++++++++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 5addd7f..9913052 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -12,7 +12,7 @@ export default function ngCurrency($filter, $locale) { if (active) { reformat(); } else { - controller.$viewValue = controller.$modelValue; + controller.$viewValue = controller.$$rawModelValue; controller.$render(); } }); @@ -82,7 +82,7 @@ export default function ngCurrency($filter, $locale) { function reformat() { if (active) { - let value = controller.$modelValue; + let value = controller.$$rawModelValue; for (let i = controller.$formatters.length - 1; i >= 0; i--) { value = controller.$formatters[i](value); } @@ -121,7 +121,8 @@ export default function ngCurrency($filter, $locale) { element.bind('focus', () => { if (active) { - const value = [undefined, null, ''].indexOf(controller.$modelValue) === -1 ? $filter('number')(controller.$modelValue, fraction).replace($locale.NUMBER_FORMATS.GROUP_SEP, '') : controller.$modelValue; + const groupRegex = new RegExp(`\\${$locale.NUMBER_FORMATS.GROUP_SEP}`, 'g'); + const value = [undefined, null, ''].indexOf(controller.$$rawModelValue) === -1 ? $filter('number')(controller.$$rawModelValue, fraction).replace(groupRegex, '') : controller.$$rawModelValue; if (controller.$viewValue !== value) { controller.$viewValue = value; controller.$render(); diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index 32ff33b..a4fb5fd 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -146,14 +146,14 @@ describe('ngCurrency directive tests', () => { it('should support locales with "," as the decimal separator and "." as the group separator', () => { $locale.NUMBER_FORMATS.DECIMAL_SEP = ','; $locale.NUMBER_FORMATS.GROUP_SEP = '.'; - element.val('$0,50'); + element.val('$1.000,50'); element.triggerHandler('input'); element.triggerHandler('blur'); - expect(scope.value).toEqual(0.5); - expect(element.val()).toEqual('$0,50'); + expect(scope.value).toEqual(1000.5); + expect(element.val()).toEqual('$1.000,50'); element.triggerHandler('focus'); - expect(scope.value).toEqual(0.5); - expect(element.val()).toEqual('0,50'); + expect(scope.value).toEqual(1000.5); + expect(element.val()).toEqual('1000,50'); }); }); @@ -349,6 +349,16 @@ describe('ngCurrency directive tests', () => { scope.$digest(); expect(element.val()).toEqual('a'); }); + + it('should display the real value when disabled with an invalid value', () => { + scope.value = 0.01; + scope.min = 1; + scope.$digest(); + expect(element.val()).toEqual('$0.01'); + scope.active = false; + scope.$digest(); + expect(element.val()).toEqual('0.01'); + }); }); describe('Currency Symbol', () => { @@ -403,6 +413,10 @@ describe('ngCurrency directive tests', () => { scope.$digest(); expect(element.hasClass('ng-invalid-max')).toBeTruthy(); expect(element.val()).toEqual('$1,999,999.00'); + element.triggerHandler('focus'); + expect(element.val()).toEqual('1999999.00'); + element.triggerHandler('blur'); + expect(element.val()).toEqual('$1,999,999.00'); }); it('should become invalid when the max changes', () => { @@ -510,6 +524,10 @@ describe('ngCurrency directive tests', () => { scope.$digest(); expect(element.hasClass('ng-invalid-min')).toBeTruthy(); expect(element.val()).toEqual('$0.01'); + element.triggerHandler('focus'); + expect(element.val()).toEqual('0.01'); + element.triggerHandler('blur'); + expect(element.val()).toEqual('$0.01'); }); it('should become invalid when the min changes', () => { From 082fcad9cb28962fd38535512e437868dc873e8a Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Wed, 24 Aug 2016 19:08:11 -0500 Subject: [PATCH 029/159] docs(issue-template): update issue template to use the latest branch This closes #109 --- .github/ISSUE_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index fa6727c..7f415f2 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -10,7 +10,7 @@ ### Live Demo - + ### Steps to reproduce From b7dca13c10091a46b15360f8a917e7071fba338b Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Wed, 24 Aug 2016 19:18:57 -0500 Subject: [PATCH 030/159] chore(travis): only run build on master branch and prs --- .travis.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index eec3156..43518b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,11 +5,14 @@ node_js: cache: directories: - node_modules +branches: + only: + - master before_script: - npm prune script: - npm run test after_success: -- if [ "$TRAVIS_BRANCH" = "master" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then npm run semantic-release; fi +- npm run semantic-release notifications: email: false From 5c3c9f78ac970257fa09f04ddceb8897459d85d2 Mon Sep 17 00:00:00 2001 From: aguirrel Date: Thu, 25 Aug 2016 11:23:59 +0000 Subject: [PATCH 031/159] v1.1.3 --- dist/ng-currency.js | 2 ++ dist/ng-currency.js.map | 1 + package.json | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 dist/ng-currency.js create mode 100644 dist/ng-currency.js.map diff --git a/dist/ng-currency.js b/dist/ng-currency.js new file mode 100644 index 0000000..68ff54b --- /dev/null +++ b/dist/ng-currency.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(u){if(r[u])return r[u].exports;var o=r[u]={exports:{},id:u,loaded:!1};return e[u].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=r(2),t=u(o),i=r(1),a=u(i),l=t["default"].module("ng-currency",[]);l.directive("ngCurrency",a["default"]),n["default"]=l.name},function(e,n){"use strict";function r(e,n){return{require:"ngModel",link:function(r,u,o,t){function i(){if(g){for(var e=t.$$rawModelValue,n=t.$formatters.length-1;n>=0;n--)e=t.$formatters[n](e);t.$viewValue=e,t.$render()}}function a(){if(t.$validate(),g){var e=l(t.$$rawModelValue);e!==t.$$rawModelValue&&(t.$setViewValue(e.toFixed(R)),t.$commitViewValue(),i())}}function l(e){return v&&(void 0!==p&&e>p?e=p:void 0!==$&&e<$&&(e=$)),e}function c(e){return RegExp("\\d|\\-|\\"+e,"g")}function d(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function f(r){r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(u=".");var t=e("currency")("-1",s(),R),i=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),a=t.replace(i.exec(t),""),l=r.replace(i.exec(r),"");return a===l&&(r="-"+i.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),c(u).test(r)&&(o=r.match(c(u)).join("").match(d(u)),o=o?o[0].replace(u,"."):null),o}function s(){return void 0===x?n.NUMBER_FORMATS.CURRENCY_SYM:x}var v=void 0,$=void 0,p=void 0,x=void 0,M=void 0,g=!0,R=2;o.$observe("ngCurrency",function(e){g="false"!==e,g?i():(t.$viewValue=t.$$rawModelValue,t.$render())}),o.$observe("hardCap",function(e){v="true"===e,a()}),o.$observe("min",function(e){$=e?Number(e):void 0,a()}),o.$observe("max",function(e){p=e?Number(e):void 0,a()}),o.$observe("currencySymbol",function(e){x=e,i()}),o.$observe("ngRequired",function(e){M=e,a()}),o.$observe("fraction",function(e){R=e||2,i(),a()}),t.$parsers.push(function(e){return g&&[void 0,null,""].indexOf(e)===-1?(e=f(e),e=l(Number(e))):e}),t.$formatters.push(function(n){return g&&[void 0,null,""].indexOf(n)===-1?e("currency")(n,s(),R):n}),t.$validators.min=function(e){return!(M||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},t.$validators.max=function(e){return!(M||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(p)!==-1||isNaN(p)||e<=p)},t.$validators.fraction=function(e){return!g||!e||!isNaN(e)},r.$on("currencyRedraw",function(){a(),i()}),u.bind("focus",function(){if(g){var r=new RegExp("\\"+n.NUMBER_FORMATS.GROUP_SEP,"g"),o=[void 0,null,""].indexOf(t.$$rawModelValue)===-1?e("number")(t.$$rawModelValue,R).replace(r,""):t.$$rawModelValue;t.$viewValue!==o&&(t.$viewValue=o,t.$render(),u.triggerHandler("focus"))}}),u.bind("blur",i)}}}r.$inject=["$filter","$locale"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +//# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map new file mode 100644 index 0000000..5f7487f --- /dev/null +++ b/dist/ng-currency.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap afa3681c40feeb80099d","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$$rawModelValue","i","$formatters","length","$viewValue","$render","revalidate","$validate","keepInRange","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","decimalRex","dChar","RegExp","clearRex","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","currencySymbol","CURRENCY_SYM","ngRequired","$observe","Number","$parsers","push","$validators","isNaN","$on","bind","groupRegex","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$$rawModelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = controller.$$rawModelValue;\n\t for (var i = controller.$formatters.length - 1; i >= 0; i--) {\n\t value = controller.$formatters[i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var groupRegex = new RegExp('\\\\' + $locale.NUMBER_FORMATS.GROUP_SEP, 'g');\n\t var value = [undefined, null, ''].indexOf(controller.$$rawModelValue) === -1 ? $filter('number')(controller.$$rawModelValue, fraction).replace(groupRegex, '') : controller.$$rawModelValue;\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap afa3681c40feeb80099d\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value = controller.$$rawModelValue;\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const groupRegex = new RegExp(`\\\\${$locale.NUMBER_FORMATS.GROUP_SEP}`, 'g');\n const value = [undefined, null, ''].indexOf(controller.$$rawModelValue) === -1 ? $filter('number')(controller.$$rawModelValue, fraction).replace(groupRegex, '') : controller.$$rawModelValue;\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 48090e6..89536f7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.0.0-semantically-released.0", + "version": "1.1.3", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", @@ -62,4 +62,4 @@ "path": "./node_modules/cz-conventional-changelog" } } -} +} \ No newline at end of file From 680dbfb94932a33daa78e37d52a74d106abeb3f8 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Thu, 25 Aug 2016 10:15:58 -0500 Subject: [PATCH 032/159] fix: value not being retained when updating on blur with an invalid min/max This closes #110 --- src/ng-currency.directive.js | 10 ++++- .../ng-currency/ng-currency.directive.spec.js | 41 ++++++++++++++++++- .../templates/variables-update-on-blur.html | 12 ++++++ 3 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 test/ng-currency/templates/variables-update-on-blur.html diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 9913052..98ceedb 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -82,7 +82,15 @@ export default function ngCurrency($filter, $locale) { function reformat() { if (active) { - let value = controller.$$rawModelValue; + let value; + if (controller.$options && controller.$options.updateOn === 'blur') { + value = controller.$viewValue; + for (let i = controller.$parsers.length - 1; i >= 0; i--) { + value = controller.$parsers[i](value); + } + } else { + value = controller.$$rawModelValue; + } for (let i = controller.$formatters.length - 1; i >= 0; i--) { value = controller.$formatters[i](value); } diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index a4fb5fd..d8e3f9c 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -2,6 +2,7 @@ import 'ng-select-all-on-focus'; import ngCurrency from '../../src/ng-currency.module.js'; import defaults from './templates/defaults.html'; import variables from './templates/variables.html'; +import variablesUpdateOnBlur from './templates/variables-update-on-blur.html'; import centsToDollars from './templates/cents-to-dollars.html'; import selectAllOnFocus from './templates/select-all-on-focus.html'; @@ -394,14 +395,50 @@ describe('ngCurrency directive tests', () => { }); describe('Model Options', () => { - it('should support updating on blur', () => { - scope.modelOptions = { updateOn: 'blur' }; + beforeEach(angular.mock.inject(($rootScope, $compile, $timeout) => { + scope = $rootScope.$new(); + scope.value = 0; + scope.active = true; + scope.currencySymbol = '$'; scope.$digest(); + element = $compile(variablesUpdateOnBlur)(scope); + element = element.find('input'); + $timeout.flush(); + })); + + it('should remain pristine when updating via the scope value', () => { + scope.value = 123.45; + scope.$digest(); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(element.hasClass('ng-pristine')).toBeTruthy(); + expect(scope.form.currency.$pristine).toBeTruthy(); + expect(scope.form.currency.$dirty).toBeFalsy(); + expect(scope.form.$pristine).toBeTruthy(); + expect(scope.form.$dirty).toBeFalsy(); + expect(element.val()).toEqual('$123.45'); + }); + + it('should support updating on blur', () => { element.val('$123.45'); element.triggerHandler('input'); element.triggerHandler('blur'); expect(scope.value).toEqual(123.45); expect(element.val()).toEqual('$123.45'); + scope.min = 0.01; + scope.max = 100; + scope.$digest(); + expect(scope.value).toEqual(undefined); + expect(element.val()).toEqual('$123.45'); + }); + + it('should support a custom fraction value when updating on blur', () => { + scope.fraction = 5; + scope.$digest(); + element.val('$123.45678'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(element.val()).toEqual('$123.45678'); }); }); diff --git a/test/ng-currency/templates/variables-update-on-blur.html b/test/ng-currency/templates/variables-update-on-blur.html new file mode 100644 index 0000000..5b36025 --- /dev/null +++ b/test/ng-currency/templates/variables-update-on-blur.html @@ -0,0 +1,12 @@ +
+ +
From 115687ee1bf962da26cb327c68ea0e3580389e59 Mon Sep 17 00:00:00 2001 From: aguirrel Date: Thu, 25 Aug 2016 15:22:51 +0000 Subject: [PATCH 033/159] v1.1.4 --- dist/ng-currency.js | 2 ++ dist/ng-currency.js.map | 1 + package.json | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 dist/ng-currency.js create mode 100644 dist/ng-currency.js.map diff --git a/dist/ng-currency.js b/dist/ng-currency.js new file mode 100644 index 0000000..0823128 --- /dev/null +++ b/dist/ng-currency.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(u){if(r[u])return r[u].exports;var o=r[u]={exports:{},id:u,loaded:!1};return e[u].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=r(2),i=u(o),t=r(1),a=u(t),l=i["default"].module("ng-currency",[]);l.directive("ngCurrency",a["default"]),n["default"]=l.name},function(e,n){"use strict";function r(e,n){return{require:"ngModel",link:function(r,u,o,i){function t(){if(g){var e=void 0;if(i.$options&&"blur"===i.$options.updateOn){e=i.$viewValue;for(var n=i.$parsers.length-1;n>=0;n--)e=i.$parsers[n](e)}else e=i.$$rawModelValue;for(var r=i.$formatters.length-1;r>=0;r--)e=i.$formatters[r](e);i.$viewValue=e,i.$render()}}function a(){if(i.$validate(),g){var e=l(i.$$rawModelValue);e!==i.$$rawModelValue&&(i.$setViewValue(e.toFixed(R)),i.$commitViewValue(),t())}}function l(e){return v&&(void 0!==p&&e>p?e=p:void 0!==$&&e<$&&(e=$)),e}function c(e){return RegExp("\\d|\\-|\\"+e,"g")}function d(e){return RegExp("\\-{0,1}((\\"+e+")|([0-9]{1,}\\"+e+"?))&?[0-9]{0,"+R+"}","g")}function f(r){r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null;r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)===-1&&r.indexOf(".")!==-1&&R>0&&(u=".");var i=e("currency")("-1",s(),R),t=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+"),a=i.replace(t.exec(i),""),l=r.replace(t.exec(r),"");return a===l&&(r="-"+t.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),c(u).test(r)&&(o=r.match(c(u)).join("").match(d(u)),o=o?o[0].replace(u,"."):null),o}function s(){return void 0===x?n.NUMBER_FORMATS.CURRENCY_SYM:x}var v=void 0,$=void 0,p=void 0,x=void 0,M=void 0,g=!0,R=2;o.$observe("ngCurrency",function(e){g="false"!==e,g?t():(i.$viewValue=i.$$rawModelValue,i.$render())}),o.$observe("hardCap",function(e){v="true"===e,a()}),o.$observe("min",function(e){$=e?Number(e):void 0,a()}),o.$observe("max",function(e){p=e?Number(e):void 0,a()}),o.$observe("currencySymbol",function(e){x=e,t()}),o.$observe("ngRequired",function(e){M=e,a()}),o.$observe("fraction",function(e){R=e||2,t(),a()}),i.$parsers.push(function(e){return g&&[void 0,null,""].indexOf(e)===-1?(e=f(e),e=l(Number(e))):e}),i.$formatters.push(function(n){return g&&[void 0,null,""].indexOf(n)===-1?e("currency")(n,s(),R):n}),i.$validators.min=function(e){return!(M||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf($)!==-1||isNaN($)||e>=$)},i.$validators.max=function(e){return!(M||[void 0,null,""].indexOf(e)===-1&&!isNaN(e))||(!g||[void 0,null].indexOf(p)!==-1||isNaN(p)||e<=p)},i.$validators.fraction=function(e){return!g||!e||!isNaN(e)},r.$on("currencyRedraw",function(){a(),t()}),u.bind("focus",function(){if(g){var r=new RegExp("\\"+n.NUMBER_FORMATS.GROUP_SEP,"g"),o=[void 0,null,""].indexOf(i.$$rawModelValue)===-1?e("number")(i.$$rawModelValue,R).replace(r,""):i.$$rawModelValue;i.$viewValue!==o&&(i.$viewValue=o,i.$render(),u.triggerHandler("focus"))}}),u.bind("blur",t)}}}r.$inject=["$filter","$locale"],Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r},function(n,r){n.exports=e}])}); +//# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map new file mode 100644 index 0000000..1aeb1e8 --- /dev/null +++ b/dist/ng-currency.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 2523989a9703baf64013","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","_module","directive","name","ngCurrency","$filter","$locale","link","scope","element","attrs","controller","reformat","active","$options","updateOn","$viewValue","i","$parsers","length","$$rawModelValue","_i","$formatters","$render","revalidate","$validate","keepInRange","$setViewValue","toFixed","fraction","$commitViewValue","hardCap","undefined","max","min","decimalRex","dChar","RegExp","clearRex","clearValue","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","currencySymbol","CURRENCY_SYM","ngRequired","$observe","Number","push","$validators","isNaN","$on","bind","groupRegex","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = void 0;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$$rawModelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t attrs.$observe('ngRequired', function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = void 0;\n\t if (controller.$options && controller.$options.updateOn === 'blur') {\n\t value = controller.$viewValue;\n\t for (var i = controller.$parsers.length - 1; i >= 0; i--) {\n\t value = controller.$parsers[i](value);\n\t }\n\t } else {\n\t value = controller.$$rawModelValue;\n\t }\n\t for (var _i = controller.$formatters.length - 1; _i >= 0; _i--) {\n\t value = controller.$formatters[_i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var groupRegex = new RegExp('\\\\' + $locale.NUMBER_FORMATS.GROUP_SEP, 'g');\n\t var value = [undefined, null, ''].indexOf(controller.$$rawModelValue) === -1 ? $filter('number')(controller.$$rawModelValue, fraction).replace(groupRegex, '') : controller.$$rawModelValue;\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 2523989a9703baf64013\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('ngRequired', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n if (controller.$options && controller.$options.updateOn === 'blur') {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const groupRegex = new RegExp(`\\\\${$locale.NUMBER_FORMATS.GROUP_SEP}`, 'g');\n const value = [undefined, null, ''].indexOf(controller.$$rawModelValue) === -1 ? $filter('number')(controller.$$rawModelValue, fraction).replace(groupRegex, '') : controller.$$rawModelValue;\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 48090e6..bc4717d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.0.0-semantically-released.0", + "version": "1.1.4", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", @@ -62,4 +62,4 @@ "path": "./node_modules/cz-conventional-changelog" } } -} +} \ No newline at end of file From e41b0b418cc88506e5434d79243f7a141c3327f7 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Tue, 30 Aug 2016 11:47:29 -0500 Subject: [PATCH 034/159] docs: update demo closes #112 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6fa1b49..200f709 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Then add a ` + + + diff --git a/index.js b/index.js new file mode 100644 index 0000000..a7c951b --- /dev/null +++ b/index.js @@ -0,0 +1,15 @@ +import angular from 'angular'; +import centsToDollars from './test/ng-currency/directives/cents-to-dollars.module.js'; + +const module = angular.module('app', [ + 'ng-currency', + centsToDollars +]); + +class AppController { + constructor() { + this.value = 123456.78; + } +} + +module.controller('AppController', AppController); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7001cfd --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5846 @@ +{ + "name": "ng-currency", + "version": "0.0.0-semantically-released.0", + "lockfileVersion": 1, + "dependencies": { + "@semantic-release/commit-analyzer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-2.0.0.tgz", + "integrity": "sha1-kk0eLDAWfGpHK+2fZu6Pjgd0ibI=", + "dev": true + }, + "@semantic-release/condition-travis": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/condition-travis/-/condition-travis-5.0.2.tgz", + "integrity": "sha1-9Lt3emxttVZdcHVKm2KSM71KZZc=", + "dev": true, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "@semantic-release/error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-1.0.0.tgz", + "integrity": "sha1-u4+O7t1cf4xG+Ws37znhuMN2wcw=", + "dev": true + }, + "@semantic-release/last-release-npm": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@semantic-release/last-release-npm/-/last-release-npm-1.2.1.tgz", + "integrity": "sha1-/3SBQuzxU1S4M6hroYIF9/zllO4=", + "dev": true, + "dependencies": { + "are-we-there-yet": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", + "integrity": "sha1-otKMkxAqpsyWJFomy5VN4G7FPww=", + "dev": true + }, + "gauge": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", + "dev": true + }, + "npmlog": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", + "integrity": "sha1-KOe+YZYJtT960d0wChDWTXFiaLY=", + "dev": true + } + } + }, + "@semantic-release/release-notes-generator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-2.0.0.tgz", + "integrity": "sha1-fF2mVolGbVNqU/36n01io70TwW4=", + "dev": true + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true + }, + "acorn": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", + "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "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, + "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 + } + } + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", + "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", + "dev": true, + "dependencies": { + "semver": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", + "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "dev": true + } + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "angular": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/angular/-/angular-1.6.4.tgz", + "integrity": "sha1-A7exXAGggC1+LPWTJA5gQFTcd/s=", + "dev": true + }, + "angular-mocks": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.6.4.tgz", + "integrity": "sha1-R/31CSHPJPtInxAKjPKtmdBTj0A=", + "dev": true + }, + "ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "dev": true + }, + "aproba": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", + "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true + }, + "arr-flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz", + "integrity": "sha1-UidltQw1EEkOUtfc/ghe+bqWlY8=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "dev": true + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "author-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-0.2.1.tgz", + "integrity": "sha1-i976rGBlqTF5m+wH7u9RuUDgjzw=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "dev": true + }, + "babel-core": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "dev": true + }, + "babel-generator": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "dev": true + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true + }, + "babel-helper-define-map": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", + "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", + "dev": true + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true + }, + "babel-helper-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", + "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", + "dev": true + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true + }, + "babel-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.0.0.tgz", + "integrity": "sha1-LkOma+4f/0RwUz0EAsikUy+vuvc=", + "dev": true + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", + "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", + "dev": true + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", + "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true + }, + "babel-plugin-transform-regenerator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", + "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", + "dev": true + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true + }, + "babel-polyfill": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", + "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", + "dev": true + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true + }, + "babel-register": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", + "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "dev": true + }, + "babel-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", + "dev": true + }, + "babel-template": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "dev": true + }, + "babel-traverse": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "dev": true + }, + "babel-types": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "dev": true + }, + "babylon": { + "version": "6.17.3", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.3.tgz", + "integrity": "sha512-mq0x3HCAGGmQyZXviOVe5TRsw37Ijy3D43jCqt/9WVf+onx2dUgW3PosnqCbScAFhRO9DGs8nxoMzU0iiosMqQ==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", + "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true + }, + "big.js": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "dev": true + }, + "binary-extensions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", + "dev": true + }, + "bl": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", + "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + }, + "body-parser": { + "version": "1.17.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", + "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true + } + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", + "dev": true + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true + }, + "cipher-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", + "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", + "dev": true + }, + "circular-json": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", + "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", + "dev": true + }, + "clean-css": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.3.tgz", + "integrity": "sha1-B8/omA7bINRV3cI6rc8eBMblCc4=", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true + }, + "cli-width": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combine-lists": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", + "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.10.tgz", + "integrity": "sha1-/tocf3YXkScyspv4zyYlKiC57s0=", + "dev": true + }, + "compression": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.6.2.tgz", + "integrity": "sha1-zOsSHsydCcUtetDDNQ6pPd1AK8M=", + "dev": true, + "dependencies": { + "bytes": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.3.0.tgz", + "integrity": "sha1-1baAoWW2IBc5rLYRVCqrwtjOsHA=", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true + }, + "config-chain": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", + "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", + "dev": true + }, + "connect": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz", + "integrity": "sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", + "integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", + "dev": true + }, + "conventional-changelog": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-0.0.17.tgz", + "integrity": "sha1-XgIWYA9GhhkPDILvuws90RtJzjQ=", + "dev": true, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "normalize-package-data": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-1.0.3.tgz", + "integrity": "sha1-i+lVuJB6+XXxpFhOqLubQUkjEvU=", + "dev": true + } + } + }, + "conventional-commit-types": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-2.1.0.tgz", + "integrity": "sha1-RdhgOGyaLmU37pHYobYb0EEbPQQ=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "dev": true + }, + "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=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true + }, + "crypto-browserify": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", + "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cz-conventional-changelog": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.0.0.tgz", + "integrity": "sha1-Val5r9/pXnAkh50qD1kkYwFwtTM=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "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 + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "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=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "dev": true + }, + "dox": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/dox/-/dox-0.6.1.tgz", + "integrity": "sha1-gkcHWtSydf6I+7rgL+EvPFSAp/0=", + "dev": true, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "dev": true + } + } + }, + "doxme": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/doxme/-/doxme-1.8.2.tgz", + "integrity": "sha1-jcPEo4aCpOlqcuACnqrVwaNUZEI=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "dev": true + }, + "engine.io": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", + "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-client": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", + "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", + "dev": true, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "dev": true + }, + "enhanced-resolve": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz", + "integrity": "sha1-n0tib1dyRe3PSyrYPYbhf09CHew=", + "dev": true + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true + }, + "es5-ext": { + "version": "0.10.23", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.23.tgz", + "integrity": "sha1-dXi1G+l0IHpUh4IbVlOMIk5Oezg=", + "dev": true + }, + "es6-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "dev": true + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true + }, + "es6-promise": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz", + "integrity": "sha1-eILzCt3lskDM+n99eMVIMwlRrkI=", + "dev": true + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true + }, + "es6-templates": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", + "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", + "dev": true + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "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 + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true + }, + "eslint-config-google": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.7.1.tgz", + "integrity": "sha1-VZj4SY6eB4Qg80uASVuNlZ9lH7I=", + "dev": true + }, + "eslint-loader": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.7.1.tgz", + "integrity": "sha1-ULFY3WJy3O+5fphCVIN/gaWALOA=", + "dev": true + }, + "eslint-plugin-jasmine": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.2.0.tgz", + "integrity": "sha1-cTWHk4PDmmZ8ch0wK58g8DiVQ94=", + "dev": true + }, + "espree": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", + "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "dev": true + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true + }, + "esrecurse": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", + "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=", + "dev": true, + "dependencies": { + "estraverse": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", + "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=", + "dev": true + } + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "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.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true + }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "dev": true + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", + "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-braces": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", + "dev": true, + "dependencies": { + "braces": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", + "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", + "dev": true + }, + "expand-range": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", + "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", + "dev": true + }, + "is-number": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", + "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", + "dev": true + }, + "repeat-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", + "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", + "dev": true + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true + }, + "express": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", + "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "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=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true + }, + "extract-zip": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", + "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=", + "dev": true, + "dependencies": { + "concat-stream": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", + "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=", + "dev": true + }, + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", + "dev": true + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "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 + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true + }, + "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 + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true + }, + "finalhandler": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", + "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true + }, + "flat-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "dev": true + }, + "follow-redirects": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true + }, + "foreachasync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", + "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true + }, + "formatio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", + "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", + "dev": true + }, + "forwarded": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", + "dev": true + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.1.tgz", + "integrity": "sha1-8Z/Sj0Pur3YWgOUZogPE0LPTGv8=", + "dev": true, + "optional": true, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.11.0", + "bundled": true, + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "commander": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "deep-extend": { + "version": "0.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "extend": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.10", + "bundled": true, + "dev": true + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.3", + "bundled": true, + "dev": true, + "optional": true + }, + "generate-function": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "generate-object-property": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "getpass": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.1", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "2.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-my-json-valid": { + "version": "2.15.0", + "bundled": true, + "dev": true, + "optional": true + }, + "is-property": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonpointer": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.26.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.14", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.3", + "bundled": true, + "dev": true + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "ms": { + "version": "0.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.33", + "bundled": true, + "dev": true, + "optional": true + }, + "nopt": { + "version": "3.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npmlog": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.3.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "optional": true + }, + "request": { + "version": "2.79.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rimraf": { + "version": "2.5.4", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true + }, + "sshpk": { + "version": "1.10.2", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "tar-pack": { + "version": "3.3.0", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "once": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "2.1.5", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.4.3", + "bundled": true, + "dev": true, + "optional": true + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "git-head": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/git-head/-/git-head-1.20.1.tgz", + "integrity": "sha1-A20WpLN0lJ5OPa8VgnkDaG08zVI=", + "dev": true + }, + "git-refs": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/git-refs/-/git-refs-1.1.3.tgz", + "integrity": "sha1-gwl8s6klhcSkkm7FTiGC354g6J0=", + "dev": true + }, + "github": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/github/-/github-8.2.1.tgz", + "integrity": "sha1-YWsiEfvNHMhjFmmu1nZT5i61OBY=", + "dev": true + }, + "github-url-from-git": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-url-from-git/-/github-url-from-git-1.5.0.tgz", + "integrity": "sha1-+YX+3MCpqledyI16/waNVcxiUaA=", + "dev": true + }, + "github-url-from-username-repo": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/github-url-from-username-repo/-/github-url-from-username-repo-1.0.2.tgz", + "integrity": "sha1-fdeTMNKr5pwQws73lxTJchV5Hfo=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "handlebars": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", + "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "dev": true, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true + }, + "uglify-js": { + "version": "2.8.28", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.28.tgz", + "integrity": "sha512-WqKNbmNJKzIdIEQu/U2ytgGBbhCy2PVks94GoetczOAJ/zCgVu2CuO7gguI5KPFGPtUtI1dmPQl6h0D4cPzypA==", + "dev": true, + "optional": true, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true, + "optional": true + } + } + } + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true + }, + "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 + }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true + }, + "hash.js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", + "integrity": "sha1-EzL/ABVsCg/92CNgE9B7d6BFFXM=", + "dev": true + }, + "hasha": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", + "dev": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true + }, + "hosted-git-info": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-loader": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.4.5.tgz", + "integrity": "sha1-X7zYfNY6XEmn/OL+VvQl4Fcpxow=", + "dev": true + }, + "html-minifier": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.2.tgz", + "integrity": "sha1-1zvD/0SJQkCIGM5gm/P7DqfvTrc=", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", + "dev": true + }, + "http-proxy": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "dev": true + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "https-proxy-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", + "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "ignore": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", + "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true + }, + "interpret": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true + }, + "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=", + "dev": true + }, + "ipaddr.js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", + "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true + }, + "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=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true + }, + "is-my-json-valid": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true + }, + "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 + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", + "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true + }, + "isparta": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isparta/-/isparta-4.0.0.tgz", + "integrity": "sha1-HekZlvSAsi3LGsqFECVbrhV0RG4=", + "dev": true, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + } + } + }, + "isparta-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isparta-loader/-/isparta-loader-2.0.0.tgz", + "integrity": "sha1-RCX0lsk/dlu8603ZOFdtowdWbtE=", + "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=", + "dev": true + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.3.tgz", + "integrity": "sha1-RQcpUOSkKx4yL+VcABEApGXXeBU=", + "dev": true + }, + "js-tokens": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", + "dev": true + }, + "js-yaml": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", + "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdoctypeparser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz", + "integrity": "sha1-597cFToRhJ/8UUEUSuhqfvDCU5I=", + "dev": true, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-loader": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", + "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "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=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "karma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", + "integrity": "sha1-b3oaQGRG+i4YfslTmGmPTO5HYmk=", + "dev": true, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "karma-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.1.tgz", + "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=", + "dev": true, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "karma-jasmine": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.0.tgz", + "integrity": "sha1-IuTAa/mhguUpTR9wXjczgRuBCs8=", + "dev": true + }, + "karma-mocha-reporter": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz", + "integrity": "sha1-BP3aRaHZaXpzhxx0ciI8WBcBqyA=", + "dev": true + }, + "karma-phantomjs-launcher": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz", + "integrity": "sha1-0jyjSAG9qYY60xjju0vUBisTrNI=", + "dev": true + }, + "karma-sinon": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/karma-sinon/-/karma-sinon-1.0.5.tgz", + "integrity": "sha1-TjRD8oMP3s/2JNN0cWPxIX2qKpo=", + "dev": true + }, + "karma-sourcemap-loader": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", + "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", + "dev": true + }, + "karma-webpack": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.3.tgz", + "integrity": "sha1-Oc6/XKJYATmyf5rmm3iBa5yC+uY=", + "dev": true, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true + } + } + }, + "kew": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true + } + } + }, + "loader-fs-cache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", + "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", + "dev": true + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, + "lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", + "dev": true + }, + "lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA=", + "dev": true + }, + "lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", + "dev": true + }, + "lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "log4js": { + "version": "0.6.38", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "lolex": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", + "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", + "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, + "markdown-table": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.3.2.tgz", + "integrity": "sha1-qwUBQlEXIYxJh1TVfiRNzUqAIy4=", + "dev": true + }, + "marked": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", + "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true + }, + "miller-rabin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "dev": true + }, + "mime": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", + "dev": true + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true + }, + "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 + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + }, + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "dev": true, + "optional": true + }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", + "dev": true + }, + "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 + }, + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", + "dev": true + }, + "netrc": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", + "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=", + "dev": true + }, + "ng-select-all-on-focus": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ng-select-all-on-focus/-/ng-select-all-on-focus-1.0.3.tgz", + "integrity": "sha1-L6xKCyGCOgeRow9eA1wGIDNuqdA=", + "dev": true + }, + "no-case": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", + "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", + "dev": true + }, + "node-libs-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "dev": true, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "nomnomnomnom": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz", + "integrity": "sha1-siOfAxyNBNpn4yg24eMZnhL3qOI=", + "dev": true, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true + }, + "normalize-package-data": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true + }, + "npm-package-arg": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-4.2.1.tgz", + "integrity": "sha1-WTMD/eqF98Qid18X+et2cPaA4+w=", + "dev": true, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "npm-registry-client": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-7.5.0.tgz", + "integrity": "sha1-D23W5dEUJM+pn85bkw/q8JtPfwQ=", + "dev": true + }, + "npmconf": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz", + "integrity": "sha1-ZmBqSnNvHnegWaoHGnnJSreBhTo=", + "dev": true, + "dependencies": { + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true + } + } + }, + "npmlog": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "dev": true + }, + "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=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "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-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-hash": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.1.8.tgz", + "integrity": "sha1-KKZZz5h9lqTavnhgKJ87UybEoDw=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true + }, + "obuf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "dev": true, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true + } + } + }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true + }, + "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 + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true + }, + "pad-right": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", + "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", + "dev": true + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true + }, + "parse-author": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-0.2.0.tgz", + "integrity": "sha1-3kJ05ecCwYgxxQGnz2b83zGfsfk=", + "dev": true + }, + "parse-github-repo-url": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.0.tgz", + "integrity": "sha1-KGxT4smWLgZBZJ7jrJUI/KTdlZw=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true + }, + "parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true + }, + "parseurl": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true + }, + "path-here": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/path-here/-/path-here-1.1.1.tgz", + "integrity": "sha1-K5IBdBNAOCuV0OnuCMamX4Fl0Gk=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-object": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/path-object/-/path-object-2.3.0.tgz", + "integrity": "sha1-A+RmU+XDdcYK8cq92UvGRIpdkRA=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", + "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "phantomjs-prebuilt": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz", + "integrity": "sha1-1T0xH8+30dCN2yQBRVjxGIxRbaA=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "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 + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true + }, + "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 + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "proxy-addr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", + "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", + "dev": true + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true + }, + "publish-latest": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/publish-latest/-/publish-latest-1.1.2.tgz", + "integrity": "sha1-RUp4SdNk9JdRCl8gvZnxdVCzqPc=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qjobs": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", + "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true + } + } + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true, + "dependencies": { + "safe-buffer": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", + "integrity": "sha512-aSLEDudu6OoRr/2rU609gRmnYboRLxgDG1z9o2Q0os7236FwvcqIOO8r8U5JUEwivZOhDaKlFO4SbPTJYyBEyQ==", + "dev": true + } + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", + "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true + }, + "readable-stream": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", + "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", + "dev": true + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "dev": true + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true + }, + "regenerate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + }, + "regenerator-transform": { + "version": "0.9.11", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", + "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true + }, + "repo-path-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/repo-path-parse/-/repo-path-parse-1.0.1.tgz", + "integrity": "sha1-xRD71c1H7qBNgcozzF1NUzyNpgo=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "dependencies": { + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + } + } + }, + "request-progress": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", + "dev": true + }, + "request-promise": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.1.tgz", + "integrity": "sha1-fuxWyJMXqCLL/qmbA5zlQ8LhX2c=", + "dev": true + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", + "dev": true + }, + "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-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "dev": true + }, + "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": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true + }, + "right-pad": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/right-pad/-/right-pad-1.0.1.tgz", + "integrity": "sha1-jKCMLLtbVedNr6lr9/0aJ9VoyNA=", + "dev": true + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true + }, + "run-auto": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/run-auto/-/run-auto-2.0.0.tgz", + "integrity": "sha1-X0NT9Yrb1rdJJkibTyWeHa1qeNY=", + "dev": true + }, + "run-series": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.4.tgz", + "integrity": "sha1-iac93F51ye+KtjIMChYA1qQRebk=", + "dev": true + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "dev": true + }, + "samsam": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.2.1.tgz", + "integrity": "sha1-7dOQk6MYQ3DLhZJDsr3yVefY6mc=", + "dev": true + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "semantic-release": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-6.3.6.tgz", + "integrity": "sha1-Yp0K7JCziilXpXpKnuEhSvUZKMc=", + "dev": true, + "dependencies": { + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "send": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", + "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + } + } + }, + "serve-index": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.0.tgz", + "integrity": "sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc=", + "dev": true + }, + "serve-static": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", + "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sha.js": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", + "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "dev": true + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "sinon": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.3.4.tgz", + "integrity": "sha1-RmrY0brobW21GqIYuS6Ze8Pl24g=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true + }, + "socket.io": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", + "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-client": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", + "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", + "dev": true, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", + "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "dev": true, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "sockjs-client": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.2.tgz", + "integrity": "sha1-8CEqhVDkyUaMjM6u79LjSTwDOtU=", + "dev": true, + "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=", + "dev": true + } + } + }, + "source-list-map": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", + "integrity": "sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE=", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "source-map-support": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "dev": true + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true + }, + "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=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "dev": true + }, + "stream-consume": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", + "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", + "dev": true + }, + "stream-http": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.1.tgz", + "integrity": "sha1-VGpRdBrVprB+njGwsQRBqRffUoo=", + "dev": true + }, + "string_decoder": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", + "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "striptags": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/striptags/-/striptags-2.2.1.tgz", + "integrity": "sha1-TEULcI1BuL85zyTEn/I0/Gqr/TI=", + "dev": true + }, + "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": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "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 + }, + "string-width": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "dev": true + } + } + }, + "tapable": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz", + "integrity": "sha1-IGvo4YiGC1FEJTdebxrom/sB/Y0=", + "dev": true + }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "dev": true + }, + "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 + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", + "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", + "dev": true + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dev": true + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true + }, + "travis-ci": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/travis-ci/-/travis-ci-2.1.1.tgz", + "integrity": "sha1-mGliZa+CeuNXbzGqBth250tLCC4=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true, + "dependencies": { + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + } + } + }, + "form-data": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", + "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", + "dev": true + }, + "github": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/github/-/github-0.1.16.tgz", + "integrity": "sha1-iV0qhbD+t5gNiawM5PRNyqA/F7U=", + "dev": true + }, + "lodash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.3.1.tgz", + "integrity": "sha1-pGY7U2hriV/wdOK6UE37dqjit3A=", + "dev": true + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", + "dev": true + }, + "qs": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", + "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", + "dev": true + }, + "request": { + "version": "2.74.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", + "integrity": "sha1-dpPKdou7DqXIzgjAhKRe+gW4kqs=", + "dev": true + } + } + }, + "travis-deploy-once": { + "version": "1.0.0-node-0.10-support", + "resolved": "https://registry.npmjs.org/travis-deploy-once/-/travis-deploy-once-1.0.0-node-0.10-support.tgz", + "integrity": "sha1-mOzOfZWy9Lpdze7r9Uud+HcT1eY=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "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 + }, + "type-detect": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", + "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", + "dev": true + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.15.tgz", + "integrity": "sha1-qssyOoRrI0YCJw3q2KMkQaiAb0I=", + "dev": true + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz", + "integrity": "sha1-Wj2yPvXb1VuB/ODsmirG/M3ruB4=", + "dev": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", + "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", + "dev": true, + "dependencies": { + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "dev": true + } + } + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true + }, + "useragent": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.1.13.tgz", + "integrity": "sha1-u6Q+iqJNXOuDwpN0c+EC4h33TBA=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "uuid": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true + }, + "vary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", + "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=", + "dev": true + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "walk": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz", + "integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins=", + "dev": true + }, + "watchpack": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", + "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + } + } + }, + "wbuf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "dev": true + }, + "webpack": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.6.1.tgz", + "integrity": "sha1-LgRX8KuxrF3zqxBsacZy8jZ4Xwc=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true + }, + "uglify-js": { + "version": "2.8.28", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.28.tgz", + "integrity": "sha512-WqKNbmNJKzIdIEQu/U2ytgGBbhCy2PVks94GoetczOAJ/zCgVu2CuO7gguI5KPFGPtUtI1dmPQl6h0D4cPzypA==", + "dev": true, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true + } + } + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true + } + } + } + } + }, + "webpack-dev-middleware": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.10.2.tgz", + "integrity": "sha1-LiUs4d+wINvaHMs33ybzCrAU29E=", + "dev": true + }, + "webpack-dev-server": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.4.5.tgz", + "integrity": "sha1-MThM6BE2vhCAtLTN4OubkOVO5s8=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true + } + } + }, + "webpack-sources": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", + "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=", + "dev": true + }, + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true + }, + "websocket-extensions": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz", + "integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec=", + "dev": true + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "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=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true + }, + "ws": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "dev": true + }, + "wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", + "dev": true + }, + "xml-char-classes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + } +} diff --git a/package.json b/package.json index 8bdc638..a6dbc26 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "filter" ], "scripts": { + "start": "webpack-dev-server --config webpack.server.config.js", "tdd": "karma start", "test": "karma start --single-run", "build:dev": "webpack -d", @@ -54,7 +55,8 @@ "publish-latest": "^1.1.2", "semantic-release": "^6.0.0", "sinon": "^2.0.0", - "webpack": "^2.0.0" + "webpack": "^2.0.0", + "webpack-dev-server": "^2.4.5" }, "config": { "commitizen": { diff --git a/test/ng-currency/directives/cents-to-dollars.directive.js b/test/ng-currency/directives/cents-to-dollars.directive.js new file mode 100644 index 0000000..e2361cb --- /dev/null +++ b/test/ng-currency/directives/cents-to-dollars.directive.js @@ -0,0 +1,15 @@ +export default function() { + return { + require: 'ngModel', + scope: {}, + link: (scope, elem, attrs, ngModel) => { + ngModel.$parsers.push((viewValue) => { + return Math.round(parseFloat(viewValue || 0) * 100); + }); + + ngModel.$formatters.push((modelValue) => { + return (parseFloat(modelValue || 0) / 100).toFixed(2); + }); + } + }; +}; diff --git a/test/ng-currency/directives/cents-to-dollars.module.js b/test/ng-currency/directives/cents-to-dollars.module.js new file mode 100644 index 0000000..9b3ab22 --- /dev/null +++ b/test/ng-currency/directives/cents-to-dollars.module.js @@ -0,0 +1,8 @@ +import angular from 'angular'; +import centsToDollars from './cents-to-dollars.directive.js'; + +const module = angular.module('cents-to-dollars', []); + +module.directive('centsToDollars', centsToDollars); + +export default module.name; diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index cc66da4..24176f3 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -1,8 +1,9 @@ import 'ng-select-all-on-focus'; import ngCurrency from '../../src/ng-currency.module.js'; +import centsToDollars from './directives/cents-to-dollars.module.js'; import defaults from './templates/defaults.html'; import variables from './templates/variables.html'; -import centsToDollars from './templates/cents-to-dollars.html'; +import centsToDollarsTemplate from './templates/cents-to-dollars.html'; import selectAllOnFocus from './templates/select-all-on-focus.html'; describe('ngCurrency directive tests', () => { @@ -10,23 +11,7 @@ describe('ngCurrency directive tests', () => { beforeEach(angular.mock.module('rb.select-all-on-focus')); beforeEach(angular.mock.inject.strictDi(true)); - beforeEach(angular.mock.module(ngCurrency, ($compileProvider) => { - $compileProvider.directive('centsToDollars', () => { - return { - require: 'ngModel', - scope: {}, - link: (scope, elem, attrs, ngModel) => { - ngModel.$parsers.push((viewValue) => { - return Math.round(parseFloat(viewValue || 0) * 100); - }); - - ngModel.$formatters.push((modelValue) => { - return (parseFloat(modelValue || 0) / 100).toFixed(2); - }); - } - }; - }); - })); + beforeEach(angular.mock.module(ngCurrency, centsToDollars)); // Functionality that is always on (excluding active) describe('Core Functionality', () => { @@ -163,7 +148,7 @@ describe('ngCurrency directive tests', () => { describe('Support other Directives', () => { describe('Modifying ngModel Value', () => { beforeEach(angular.mock.inject(($compile) => { - element = $compile(centsToDollars)(scope); + element = $compile(centsToDollarsTemplate)(scope); scope.value = 100; scope.$digest(); })); diff --git a/webpack.config.js b/webpack.config.js index 8c024cc..25d8e2b 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,10 +2,12 @@ const path = require('path'); module.exports = { context: path.join(__dirname, 'src'), - entry: './ng-currency.module.js', + entry: { + 'ng-currency': './ng-currency.module.js' + }, output: { path: path.join(__dirname, 'dist'), - filename: 'ng-currency.js', + filename: '[name].js', sourceMapFilename: '[file].map', library: 'ng-currency', libraryTarget: 'umd', diff --git a/webpack.server.config.js b/webpack.server.config.js new file mode 100644 index 0000000..68819ce --- /dev/null +++ b/webpack.server.config.js @@ -0,0 +1,7 @@ +const webpackConfig = require('./webpack.config.js'); + +webpackConfig.entry.main = '../index.js'; + +delete webpackConfig.externals; + +module.exports = webpackConfig; From 1975c77885055f8cb50229970ca876de6cd228b2 Mon Sep 17 00:00:00 2001 From: Tomek Kolasa Date: Tue, 13 Jun 2017 07:26:02 +1200 Subject: [PATCH 050/159] fix(ng-currency): Fixed interoperability with cents-to-dolars directive, issue #140 (#141) Changed focus listener to use current cleared view value `clearValue($viewValue)` instead of model value (`$$rawModelValue`) when updating the `$viewValue` for editing. --- src/ng-currency.directive.js | 14 ++++++++------ test/ng-currency/ng-currency.directive.spec.js | 10 ++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 5ba35d7..74c0696 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -146,8 +146,8 @@ export default function ngCurrency($filter, $locale, $timeout, ngCurrencySetting element.bind('focus', () => { if (active) { - const groupRegex = new RegExp(`\\${$locale.NUMBER_FORMATS.GROUP_SEP}`, 'g'); - const value = [undefined, null, ''].indexOf(controller.$$rawModelValue) === -1 ? $filter('number')(controller.$$rawModelValue, fraction).replace(groupRegex, '') : controller.$$rawModelValue; + const value = clearValue(controller.$viewValue, false); + if (controller.$viewValue !== value) { controller.$viewValue = value; controller.$render(); @@ -168,7 +168,7 @@ export default function ngCurrency($filter, $locale, $timeout, ngCurrencySetting return RegExp('\\-{0,1}((\\' + dChar + ')|([0-9]{1,}\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g'); } - function clearValue(value) { + function clearValue(value, replaceSeparator = true) { value = String(value); let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; let cleared = null; @@ -196,11 +196,13 @@ export default function ngCurrency($filter, $locale, $timeout, ngCurrencySetting if (decimalRex(dSeparator).test(value)) { cleared = value.match(decimalRex(dSeparator)) - .join('').match(clearRex(dSeparator)); - cleared = cleared ? cleared[0].replace(dSeparator, '.') : null; + .join('').match(clearRex(dSeparator)) || ['']; + + cleared = cleared[0]; + cleared = replaceSeparator ? cleared.replace(dSeparator, '.') : cleared; } - return cleared; + return cleared || null; } function getCurrencySymbol() { diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index 24176f3..b31e827 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -165,12 +165,10 @@ describe('ngCurrency directive tests', () => { expect(element.val()).toEqual('$123.45'); }); - it('should update the model correctly', () => { - element.val('$123.45'); - element.triggerHandler('input'); - element.triggerHandler('blur'); - expect(scope.value).toEqual(12345); - expect(element.val()).toEqual('$123.45'); + it('should update view value on focus correctly', () => { + expect(element.val()).toEqual('$1.00'); + element.triggerHandler('focus'); + expect(element.val()).toEqual('1.00'); }); }); From 01b146f7ce6002211b6fa634a8c7b12c9c98f8b2 Mon Sep 17 00:00:00 2001 From: aguirrel Date: Mon, 12 Jun 2017 19:28:15 +0000 Subject: [PATCH 051/159] v1.2.2 --- dist/ng-currency.js | 2 ++ dist/ng-currency.js.map | 1 + package.json | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 dist/ng-currency.js create mode 100644 dist/ng-currency.js.map diff --git a/dist/ng-currency.js b/dist/ng-currency.js new file mode 100644 index 0000000..d50592e --- /dev/null +++ b/dist/ng-currency.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={i:t,l:!1,exports:{}};return e[t].call(u.exports,u,u.exports,n),u.l=!0,u.exports}var r={};return n.m=e,n.c=r,n.i=function(e){return e},n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=3)}([function(e,n,r){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var u=function(){function e(e,n){for(var r=0;r=0;t--)e=a.$parsers[t](e)}else e=a.$$rawModelValue;for(var u=a.$formatters.length-1;u>=0;u--)e=a.$formatters[u](e);a.$viewValue=e,a.$render()}}function f(){if(a.$validate(),M){var e=l(a.$$rawModelValue);e!==a.$$rawModelValue&&(a.$setViewValue(e.toFixed(x)),a.$commitViewValue(),c())}}function l(e){return g&&(void 0!==y&&e>y?e=y:void 0!==b&&e1&&void 0!==arguments[1])||arguments[1];r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null;-1===r.indexOf(n.NUMBER_FORMATS.DECIMAL_SEP)&&-1!==r.indexOf(".")&&x>0&&(u=".");var i=e("currency")("-1",p(),x),a=RegExp("[0-9."+n.NUMBER_FORMATS.DECIMAL_SEP+n.NUMBER_FORMATS.GROUP_SEP+"]+");return i.replace(a.exec(i),"")===r.replace(a.exec(r),"")&&(r="-"+a.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),d(u).test(r)&&(o=r.match(d(u)).join("").match(s(u))||[""],o=o[0],o=t?o.replace(u,"."):o),o||null}function p(){return void 0===m?n.NUMBER_FORMATS.CURRENCY_SYM:m}var $=t.defaults,g=$.hardCap,b=$.min,y=$.max,m=$.currencySymbol,x=$.fraction,O=i.required,M=!0;i.$observe("ngCurrency",function(e){M="false"!==e,M?c():(a.$viewValue=a.$$rawModelValue,a.$render())}),i.$observe("hardCap",function(e){g="true"===e,f()}),i.$observe("min",function(e){b=e?Number(e):void 0,f()}),i.$observe("max",function(e){y=e?Number(e):void 0,f()}),i.$observe("currencySymbol",function(e){m=e,c()}),i.$observe("required",function(e){O=e,f()}),i.$observe("fraction",function(e){x=e||2,c(),f()}),r(function(){u.$emit("currencyRedraw")}),a.$parsers.push(function(e){return M&&-1===[void 0,null,""].indexOf(e)?(e=v(e),e=l(Number(e))):e}),a.$formatters.push(function(n){return M&&-1===[void 0,null,""].indexOf(n)?e("currency")(n,p(),x):n}),a.$validators.min=function(e){return!(O||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!M||-1!==[void 0,null].indexOf(b)||isNaN(b)||e>=b)},a.$validators.max=function(e){return!(O||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!M||-1!==[void 0,null].indexOf(y)||isNaN(y)||e<=y)},a.$validators.fraction=function(e){return!M||!e||!isNaN(e)},u.$on("currencyRedraw",function(){f(),c()}),o.bind("focus",function(){if(M){var e=v(a.$viewValue,!1);a.$viewValue!==e&&(a.$viewValue=e,a.$render(),o.triggerHandler("focus"))}}),o.bind("blur",c)}}}Object.defineProperty(n,"__esModule",{value:!0}),n.default=t,t.$inject=["$filter","$locale","$timeout","ngCurrencySettings"]},function(n,r){n.exports=e},function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(2),o=t(u),i=r(0),a=t(i),c=r(1),f=t(c),l=o.default.module("ng-currency",[]);l.provider("ngCurrencySettings",a.default),l.directive("ngCurrency",f.default),n.default=l.name}])}); +//# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map new file mode 100644 index 0000000..5172876 --- /dev/null +++ b/dist/ng-currency.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap c718f19f3bcaf2f01996","webpack:///./ng-currency-settings.provider.js","webpack:///./ng-currency.directive.js","webpack:///external \"angular\"","webpack:///./ng-currency.module.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","ngCurrencySettings","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","provider","defaults","set","default","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","controller","reformat","active","updateOn","debounce","$options","getOption","$viewValue","$parsers","$$rawModelValue","$formatters","$render","revalidate","$validate","keepInRange","$setViewValue","toFixed","$commitViewValue","decimalRex","dChar","RegExp","clearRex","clearValue","replaceSeparator","arguments","String","dSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","indexOf","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","replace","exec","test","match","join","CURRENCY_SYM","_ngCurrencySettings$d","ngRequired","required","$observe","Number","$emit","push","$validators","isNaN","$on","bind","triggerHandler","$inject","_interopRequireDefault","obj","_angular","_angular2","_ngCurrencySettingsProvider","_ngCurrencySettingsProvider2","_ngCurrencyDirective","_ngCurrencyDirective2","directive"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ngCurrencySettings = function () {\n function ngCurrencySettings() {\n _classCallCheck(this, ngCurrencySettings);\n\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n\n\n _createClass(ngCurrencySettings, [{\n key: \"$get\",\n value: function $get() {\n var provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n }, {\n key: \"defaults\",\n get: function get() {\n return this._defaults;\n },\n set: function set(defaults) {\n this._defaults = defaults;\n }\n }]);\n\n return ngCurrencySettings;\n}();\n\nexports.default = ngCurrencySettings;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ngCurrency;\nfunction ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: function link(scope, element, attrs, controller) {\n var _ngCurrencySettings$d = ngCurrencySettings.defaults,\n hardCap = _ngCurrencySettings$d.hardCap,\n min = _ngCurrencySettings$d.min,\n max = _ngCurrencySettings$d.max,\n currencySymbol = _ngCurrencySettings$d.currencySymbol,\n fraction = _ngCurrencySettings$d.fraction;\n\n var ngRequired = attrs.required;\n var active = true;\n\n attrs.$observe('ngCurrency', function (value) {\n active = value !== 'false';\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', function (value) {\n hardCap = value === 'true';\n revalidate();\n });\n attrs.$observe('min', function (value) {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', function (value) {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', function (value) {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', function (value) {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', function (value) {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(function () {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push(function (value) {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push(function (value) {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = function (value) {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n };\n\n controller.$validators.max = function (value) {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n };\n\n controller.$validators.fraction = function (value) {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n var value = void 0;\n var updateOn = void 0,\n debounce = void 0;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (var i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (var _i = controller.$formatters.length - 1; _i >= 0; _i--) {\n value = controller.$formatters[_i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n var value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', function () {\n revalidate();\n reformat();\n });\n\n element.bind('focus', function () {\n if (active) {\n var value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n var replaceSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n value = String(value);\n var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n var cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(dSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _angular = __webpack_require__(2);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\nvar _ngCurrencySettingsProvider = __webpack_require__(0);\n\nvar _ngCurrencySettingsProvider2 = _interopRequireDefault(_ngCurrencySettingsProvider);\n\nvar _ngCurrencyDirective = __webpack_require__(1);\n\nvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _module = _angular2.default.module('ng-currency', []);\n\n_module.provider('ngCurrencySettings', _ngCurrencySettingsProvider2.default);\n_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\nexports.default = _module.name;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// ng-currency.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c718f19f3bcaf2f01996","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./ng-currency-settings.provider.js","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(dSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n\n\n\n// WEBPACK FOOTER //\n// ./ng-currency.directive.js","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"angular\"\n// module id = 2\n// module chunks = 0","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n// WEBPACK FOOTER //\n// ./ng-currency.module.js"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index a6dbc26..cb2d6b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.0.0-semantically-released.0", + "version": "1.2.2", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", @@ -63,4 +63,4 @@ "path": "./node_modules/cz-conventional-changelog" } } -} +} \ No newline at end of file From 9c89779d5d61d17f4f29f489a8c0d24534f68ad6 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 21 Jun 2017 16:54:26 -0500 Subject: [PATCH 052/159] chore(package): update webpack to version 3.0.0 (#143) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a6dbc26..07182e6 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "publish-latest": "^1.1.2", "semantic-release": "^6.0.0", "sinon": "^2.0.0", - "webpack": "^2.0.0", + "webpack": "^3.0.0", "webpack-dev-server": "^2.4.5" }, "config": { From d5ad3f217b904bf952aeded159d1aaf241ef56bb Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sun, 25 Jun 2017 22:37:57 -0500 Subject: [PATCH 053/159] chore(package): update eslint to version 4.1.0 (#144) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 07182e6..1b4b36c 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "babel-loader": "^7.0.0", "babel-preset-es2015": "^6.9.0", "cz-conventional-changelog": "^2.0.0", - "eslint": "^3.1.1", + "eslint": "^4.1.0", "eslint-config-google": "^0.7.1", "eslint-loader": "^1.4.1", "eslint-plugin-jasmine": "^2.0.0", From 13c323f1fe0790f3e6a1486183a3d774d7d061e9 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sat, 8 Jul 2017 14:34:33 -0500 Subject: [PATCH 054/159] chore(package): update eslint-config-google to version 0.8.1 (#145) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1b4b36c..bb106ce 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "babel-preset-es2015": "^6.9.0", "cz-conventional-changelog": "^2.0.0", "eslint": "^4.1.0", - "eslint-config-google": "^0.7.1", + "eslint-config-google": "^0.8.1", "eslint-loader": "^1.4.1", "eslint-plugin-jasmine": "^2.0.0", "html-loader": "^0.4.3", From 35723636b366343584ab6c80a321ee09622102ec Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 3 Aug 2017 11:45:01 -0500 Subject: [PATCH 055/159] =?UTF-8?q?Update=20sinon=20to=20the=20latest=20ve?= =?UTF-8?q?rsion=20=F0=9F=9A=80=20(#147)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(package): update sinon to version 3.0.0 * chore: fix lockfile updating --- .travis.yml | 5 + package-lock.json | 3337 +++++++++++++++++++++++++++++++++++++++------ package.json | 2 +- 3 files changed, 2940 insertions(+), 404 deletions(-) diff --git a/.travis.yml b/.travis.yml index fe39006..884efe5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,10 +8,15 @@ branches: only: - master - /^greenkeeper/.*$/ +before_install: + - npm install -g greenkeeper-lockfile@1 before_script: - npm prune + - greenkeeper-lockfile-update script: - npm run test +after_script: + - greenkeeper-lockfile-upload after_success: - npm run semantic-release notifications: diff --git a/package-lock.json b/package-lock.json index 7001cfd..b07c571 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,18 +2,27 @@ "name": "ng-currency", "version": "0.0.0-semantically-released.0", "lockfileVersion": 1, + "requires": true, "dependencies": { "@semantic-release/commit-analyzer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-2.0.0.tgz", "integrity": "sha1-kk0eLDAWfGpHK+2fZu6Pjgd0ibI=", - "dev": true + "dev": true, + "requires": { + "conventional-changelog": "0.0.17" + } }, "@semantic-release/condition-travis": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@semantic-release/condition-travis/-/condition-travis-5.0.2.tgz", "integrity": "sha1-9Lt3emxttVZdcHVKm2KSM71KZZc=", "dev": true, + "requires": { + "@semantic-release/error": "1.0.0", + "semver": "5.3.0", + "travis-deploy-once": "1.0.0-node-0.10-support" + }, "dependencies": { "semver": { "version": "5.3.0", @@ -34,24 +43,45 @@ "resolved": "https://registry.npmjs.org/@semantic-release/last-release-npm/-/last-release-npm-1.2.1.tgz", "integrity": "sha1-/3SBQuzxU1S4M6hroYIF9/zllO4=", "dev": true, + "requires": { + "@semantic-release/error": "1.0.0", + "npm-registry-client": "7.5.0", + "npmlog": "1.2.1" + }, "dependencies": { "are-we-there-yet": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", "integrity": "sha1-otKMkxAqpsyWJFomy5VN4G7FPww=", - "dev": true + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.11" + } }, "gauge": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", - "dev": true + "dev": true, + "requires": { + "ansi": "0.3.1", + "has-unicode": "2.0.1", + "lodash.pad": "4.5.1", + "lodash.padend": "4.6.1", + "lodash.padstart": "4.6.1" + } }, "npmlog": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", "integrity": "sha1-KOe+YZYJtT960d0wChDWTXFiaLY=", - "dev": true + "dev": true, + "requires": { + "ansi": "0.3.1", + "are-we-there-yet": "1.0.6", + "gauge": "1.2.7" + } } } }, @@ -59,7 +89,11 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-2.0.0.tgz", "integrity": "sha1-fF2mVolGbVNqU/36n01io70TwW4=", - "dev": true + "dev": true, + "requires": { + "conventional-changelog": "0.0.17", + "github-url-from-git": "1.5.0" + } }, "abbrev": { "version": "1.0.9", @@ -71,7 +105,11 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "dev": true + "dev": true, + "requires": { + "mime-types": "2.1.15", + "negotiator": "0.6.1" + } }, "acorn": { "version": "5.0.3", @@ -84,6 +122,9 @@ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "dev": true, + "requires": { + "acorn": "4.0.13" + }, "dependencies": { "acorn": { "version": "4.0.13", @@ -98,6 +139,9 @@ "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", @@ -118,6 +162,10 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", "dev": true, + "requires": { + "extend": "3.0.1", + "semver": "5.0.3" + }, "dependencies": { "semver": { "version": "5.0.3", @@ -131,7 +179,11 @@ "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } }, "ajv-keywords": { "version": "1.5.1", @@ -143,7 +195,12 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } }, "amdefine": { "version": "1.0.1", @@ -197,7 +254,11 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "dev": true + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11" + } }, "aproba": { "version": "1.1.2", @@ -209,19 +270,29 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.11" + } }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true + "dev": true, + "requires": { + "arr-flatten": "1.0.3" + } }, "arr-flatten": { "version": "1.0.3", @@ -251,7 +322,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } }, "array-uniq": { "version": "1.0.3", @@ -293,13 +367,21 @@ "version": "4.9.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.6", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "assert": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true + "dev": true, + "requires": { + "util": "0.10.3" + } }, "assert-plus": { "version": "0.2.0", @@ -353,277 +435,549 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.1" + } }, "babel-core": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-generator": "6.25.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.3", + "convert-source-map": "1.5.0", + "debug": "2.6.8", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.6" + } }, "babel-generator": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", - "dev": true + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + } }, "babel-helper-call-delegate": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helper-define-map": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "lodash": "4.17.4" + } }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helper-get-function-arity": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-helper-hoist-variables": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-helper-optimise-call-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-helper-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "lodash": "4.17.4" + } }, "babel-helper-replace-supers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-loader": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.0.0.tgz", "integrity": "sha1-LkOma+4f/0RwUz0EAsikUy+vuvc=", - "dev": true + "dev": true, + "requires": { + "find-cache-dir": "0.1.1", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + } }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-check-es2015-constants": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-block-scoped-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-block-scoping": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "lodash": "4.17.4" + } }, "babel-plugin-transform-es2015-classes": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true + "dev": true, + "requires": { + "babel-helper-define-map": "6.24.1", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-computed-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-plugin-transform-es2015-destructuring": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-duplicate-keys": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-for-of": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-modules-amd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-plugin-transform-es2015-modules-commonjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-modules-systemjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-plugin-transform-es2015-modules-umd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-plugin-transform-es2015-object-super": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-parameters": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-shorthand-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-spread": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-sticky-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true + "dev": true, + "requires": { + "babel-helper-regex": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-template-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-typeof-symbol": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-unicode-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true + "dev": true, + "requires": { + "babel-helper-regex": "6.24.1", + "babel-runtime": "6.23.0", + "regexpu-core": "2.0.0" + } }, "babel-plugin-transform-regenerator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", - "dev": true + "dev": true, + "requires": { + "regenerator-transform": "0.9.11" + } }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-polyfill": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } }, "babel-preset-es2015": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.24.1", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.24.1" + } }, "babel-register": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", - "dev": true + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-runtime": "6.23.0", + "core-js": "2.4.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.15" + } }, "babel-runtime": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", - "dev": true + "dev": true, + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } }, "babel-template": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.3", + "lodash": "4.17.4" + } }, "babel-traverse": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "babylon": "6.17.3", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } }, "babel-types": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } }, "babylon": { "version": "6.17.3", @@ -672,13 +1026,19 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, - "optional": true + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "better-assert": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true + "dev": true, + "requires": { + "callsite": "1.0.0" + } }, "big.js": { "version": "3.1.3", @@ -697,12 +1057,23 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=", "dev": true, + "requires": { + "readable-stream": "2.0.6" + }, "dependencies": { "readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } }, "string_decoder": { "version": "0.10.31", @@ -735,12 +1106,27 @@ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", "dev": true, + "requires": { + "bytes": "2.4.0", + "content-type": "1.0.2", + "debug": "2.6.7", + "depd": "1.1.0", + "http-errors": "1.6.1", + "iconv-lite": "0.4.15", + "on-finished": "2.3.0", + "qs": "6.4.0", + "raw-body": "2.2.0", + "type-is": "1.6.15" + }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, @@ -748,19 +1134,31 @@ "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } }, "brorand": { "version": "1.1.0", @@ -772,43 +1170,81 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", - "dev": true + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.3", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.0", + "inherits": "2.0.3" + } }, "browserify-cipher": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", - "dev": true + "dev": true, + "requires": { + "browserify-aes": "1.0.6", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.0" + } }, "browserify-des": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", - "dev": true + "dev": true, + "requires": { + "cipher-base": "1.0.3", + "des.js": "1.0.0", + "inherits": "2.0.3" + } }, "browserify-rsa": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.6", + "randombytes": "2.0.5" + } }, "browserify-sign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.6", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } }, "browserify-zlib": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true + "dev": true, + "requires": { + "pako": "0.2.9" + } }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true + "dev": true, + "requires": { + "base64-js": "1.2.0", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } }, "buffer-xor": { "version": "1.0.3", @@ -838,7 +1274,10 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true + "dev": true, + "requires": { + "callsites": "0.2.0" + } }, "callsite": { "version": "1.0.0", @@ -856,7 +1295,11 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true + "dev": true, + "requires": { + "no-case": "2.3.1", + "upper-case": "1.1.3" + } }, "camelcase": { "version": "1.2.1", @@ -869,6 +1312,10 @@ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, "dependencies": { "camelcase": { "version": "2.1.1", @@ -888,25 +1335,50 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "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" + } }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true + "dev": true, + "requires": { + "anymatch": "1.3.0", + "async-each": "1.0.1", + "fsevents": "1.1.1", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } }, "cipher-base": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "circular-json": { "version": "0.3.1", @@ -918,13 +1390,19 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.3.tgz", "integrity": "sha1-B8/omA7bINRV3cI6rc8eBMblCc4=", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.6" + } }, "cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } }, "cli-width": { "version": "2.1.0", @@ -937,6 +1415,11 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, "dependencies": { "wordwrap": { "version": "0.0.2", @@ -968,19 +1451,28 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } }, "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } }, "commondir": { "version": "1.0.1", @@ -1010,13 +1502,24 @@ "version": "2.0.10", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.10.tgz", "integrity": "sha1-/tocf3YXkScyspv4zyYlKiC57s0=", - "dev": true + "dev": true, + "requires": { + "mime-db": "1.27.0" + } }, "compression": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/compression/-/compression-1.6.2.tgz", "integrity": "sha1-zOsSHsydCcUtetDDNQ6pPd1AK8M=", "dev": true, + "requires": { + "accepts": "1.3.3", + "bytes": "2.3.0", + "compressible": "2.0.10", + "debug": "2.2.0", + "on-headers": "1.0.1", + "vary": "1.1.1" + }, "dependencies": { "bytes": { "version": "2.3.0", @@ -1028,7 +1531,10 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.1" + } }, "ms": { "version": "0.7.1", @@ -1048,25 +1554,43 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.2.11", + "typedarray": "0.0.6" + } }, "config-chain": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", - "dev": true + "dev": true, + "requires": { + "ini": "1.3.4", + "proto-list": "1.2.4" + } }, "connect": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz", "integrity": "sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=", "dev": true, + "requires": { + "debug": "2.6.7", + "finalhandler": "1.0.3", + "parseurl": "1.3.1", + "utils-merge": "1.0.0" + }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, @@ -1080,7 +1604,10 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true + "dev": true, + "requires": { + "date-now": "0.1.4" + } }, "console-control-strings": { "version": "1.1.0", @@ -1111,6 +1638,13 @@ "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-0.0.17.tgz", "integrity": "sha1-XgIWYA9GhhkPDILvuws90RtJzjQ=", "dev": true, + "requires": { + "dateformat": "1.0.12", + "event-stream": "3.3.4", + "github-url-from-git": "1.5.0", + "lodash": "3.10.1", + "normalize-package-data": "1.0.3" + }, "dependencies": { "lodash": { "version": "3.10.1", @@ -1122,7 +1656,12 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-1.0.3.tgz", "integrity": "sha1-i+lVuJB6+XXxpFhOqLubQUkjEvU=", - "dev": true + "dev": true, + "requires": { + "github-url-from-git": "1.5.0", + "github-url-from-username-repo": "1.0.2", + "semver": "4.3.6" + } } } }, @@ -1166,37 +1705,73 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.6", + "elliptic": "6.4.0" + } }, "create-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", - "dev": true + "dev": true, + "requires": { + "cipher-base": "1.0.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.8" + } }, "create-hmac": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", - "dev": true + "dev": true, + "requires": { + "cipher-base": "1.0.3", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.0.1", + "sha.js": "2.4.8" + } }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true + "dev": true, + "requires": { + "boom": "2.10.1" + } }, "crypto-browserify": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=", - "dev": true + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.12", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" + } }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } }, "custom-event": { "version": "1.0.1", @@ -1208,19 +1783,33 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.0.0.tgz", "integrity": "sha1-Val5r9/pXnAkh50qD1kkYwFwtTM=", - "dev": true + "dev": true, + "requires": { + "conventional-commit-types": "2.1.0", + "lodash.map": "4.6.0", + "longest": "1.0.1", + "pad-right": "0.2.2", + "right-pad": "1.0.1", + "word-wrap": "1.2.3" + } }, "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true + "dev": true, + "requires": { + "es5-ext": "0.10.23" + } }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -1240,13 +1829,20 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "3.7.0" + } }, "debug": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "decamelize": { "version": "1.2.0", @@ -1264,7 +1860,16 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true + "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.1" + } }, "delayed-stream": { "version": "1.0.0", @@ -1288,7 +1893,11 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "destroy": { "version": "1.0.4", @@ -1300,7 +1909,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "detect-node": { "version": "2.0.3", @@ -1312,7 +1924,11 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", - "dev": true + "dev": true, + "requires": { + "asap": "2.0.5", + "wrappy": "1.0.2" + } }, "di": { "version": "0.0.1", @@ -1330,19 +1946,34 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.6", + "miller-rabin": "4.0.0", + "randombytes": "2.0.5" + } }, "doctrine": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "dev": true + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } }, "dom-serialize": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true + "dev": true, + "requires": { + "custom-event": "1.0.1", + "ent": "2.2.0", + "extend": "3.0.1", + "void-elements": "2.0.1" + } }, "domain-browser": { "version": "1.1.7", @@ -1355,6 +1986,11 @@ "resolved": "https://registry.npmjs.org/dox/-/dox-0.6.1.tgz", "integrity": "sha1-gkcHWtSydf6I+7rgL+EvPFSAp/0=", "dev": true, + "requires": { + "commander": "0.6.1", + "jsdoctypeparser": "1.2.0", + "marked": "0.3.6" + }, "dependencies": { "commander": { "version": "0.6.1", @@ -1369,6 +2005,13 @@ "resolved": "https://registry.npmjs.org/doxme/-/doxme-1.8.2.tgz", "integrity": "sha1-jcPEo4aCpOlqcuACnqrVwaNUZEI=", "dev": true, + "requires": { + "concat-stream": "1.6.0", + "markdown-table": "0.3.2", + "minimist": "1.2.0", + "repo-path-parse": "1.0.1", + "striptags": "2.2.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -1389,7 +2032,10 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "ee-first": { "version": "1.1.1", @@ -1401,7 +2047,16 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.6", + "brorand": "1.1.0", + "hash.js": "1.0.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } }, "emojis-list": { "version": "2.1.0", @@ -1420,12 +2075,23 @@ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", "dev": true, + "requires": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "ws": "1.1.2" + }, "dependencies": { "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -1440,6 +2106,20 @@ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "1.1.2", + "xmlhttprequest-ssl": "1.5.3", + "yeast": "0.1.2" + }, "dependencies": { "component-emitter": { "version": "1.2.1", @@ -1451,7 +2131,10 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -1465,13 +2148,27 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", - "dev": true + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary": "0.1.7", + "wtf-8": "1.0.0" + } }, "enhanced-resolve": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz", "integrity": "sha1-n0tib1dyRe3PSyrYPYbhf09CHew=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.6" + } }, "ent": { "version": "2.2.0", @@ -1483,31 +2180,54 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true + "dev": true, + "requires": { + "prr": "0.0.0" + } }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } }, "es5-ext": { "version": "0.10.23", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.23.tgz", "integrity": "sha1-dXi1G+l0IHpUh4IbVlOMIk5Oezg=", - "dev": true + "dev": true, + "requires": { + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } }, "es6-iterator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23", + "es6-symbol": "3.1.1" + } }, "es6-map": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } }, "es6-promise": { "version": "4.0.5", @@ -1519,25 +2239,46 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23" + } }, "es6-templates": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", - "dev": true + "dev": true, + "requires": { + "recast": "0.11.23", + "through": "2.3.8" + } }, "es6-weak-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } }, "escape-html": { "version": "1.0.3", @@ -1556,6 +2297,13 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "dev": true, + "requires": { + "esprima": "2.7.3", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.2.0" + }, "dependencies": { "esprima": { "version": "2.7.3", @@ -1574,7 +2322,10 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", "dev": true, - "optional": true + "optional": true, + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -1582,13 +2333,56 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.1.0", + "estraverse": "4.2.0" + } }, "eslint": { "version": "3.19.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.8", + "doctrine": "2.0.0", + "escope": "3.6.0", + "espree": "3.4.3", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.3", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.16.0", + "is-resolvable": "1.0.0", + "js-yaml": "3.8.4", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "1.2.1", + "progress": "1.1.8", + "require-uncached": "1.0.3", + "shelljs": "0.7.8", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1", + "table": "3.8.3", + "text-table": "0.2.0", + "user-home": "2.0.0" + } }, "eslint-config-google": { "version": "0.7.1", @@ -1600,7 +2394,15 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.7.1.tgz", "integrity": "sha1-ULFY3WJy3O+5fphCVIN/gaWALOA=", - "dev": true + "dev": true, + "requires": { + "find-cache-dir": "0.1.1", + "loader-fs-cache": "1.0.1", + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "object-hash": "1.1.8", + "rimraf": "2.6.1" + } }, "eslint-plugin-jasmine": { "version": "2.2.0", @@ -1612,7 +2414,11 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", - "dev": true + "dev": true, + "requires": { + "acorn": "5.0.3", + "acorn-jsx": "3.0.1" + } }, "esprima": { "version": "3.1.3", @@ -1624,13 +2430,20 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "dev": true + "dev": true, + "requires": { + "estraverse": "4.2.0" + } }, "esrecurse": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=", "dev": true, + "requires": { + "estraverse": "4.1.1", + "object-assign": "4.1.1" + }, "dependencies": { "estraverse": { "version": "4.1.1", @@ -1662,13 +2475,26 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23" + } }, "event-stream": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "dev": true + "dev": true, + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", + "pause-stream": "0.0.11", + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } }, "eventemitter3": { "version": "1.2.0", @@ -1686,13 +2512,19 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true + "dev": true, + "requires": { + "original": "1.0.0" + } }, "evp_bytestokey": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", - "dev": true + "dev": true, + "requires": { + "create-hash": "1.1.3" + } }, "exit-hook": { "version": "1.1.1", @@ -1705,18 +2537,30 @@ "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", "dev": true, + "requires": { + "array-slice": "0.2.3", + "array-unique": "0.2.1", + "braces": "0.1.5" + }, "dependencies": { "braces": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "dev": true + "dev": true, + "requires": { + "expand-range": "0.1.1" + } }, "expand-range": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", - "dev": true + "dev": true, + "requires": { + "is-number": "0.1.1", + "repeat-string": "0.2.2" + } }, "is-number": { "version": "0.1.1", @@ -1736,25 +2580,64 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } }, "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true + "dev": true, + "requires": { + "fill-range": "2.2.3" + } }, "express": { "version": "4.15.3", "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", "dev": true, + "requires": { + "accepts": "1.3.3", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.2", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.7", + "depd": "1.1.0", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "finalhandler": "1.0.3", + "fresh": "0.5.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.4", + "qs": "6.4.0", + "range-parser": "1.2.0", + "send": "0.15.3", + "serve-static": "1.12.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vary": "1.1.1" + }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "path-to-regexp": { "version": "0.1.7", @@ -1774,19 +2657,33 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "extract-zip": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=", "dev": true, + "requires": { + "concat-stream": "1.5.0", + "debug": "0.7.4", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + }, "dependencies": { "concat-stream": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + } }, "debug": { "version": "0.7.4", @@ -1798,13 +2695,24 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } }, "string_decoder": { "version": "0.10.31", @@ -1836,25 +2744,39 @@ "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true + "dev": true, + "requires": { + "websocket-driver": "0.6.5" + } }, "fd-slicer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true + "dev": true, + "requires": { + "pend": "1.2.0" + } }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } }, "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 + "dev": true, + "requires": { + "flat-cache": "1.2.2", + "object-assign": "4.1.1" + } }, "filename-regex": { "version": "2.0.1", @@ -1866,19 +2788,38 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } }, "finalhandler": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", "dev": true, + "requires": { + "debug": "2.6.7", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, @@ -1886,25 +2827,44 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } }, "flat-cache": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", - "dev": true + "dev": true, + "requires": { + "circular-json": "0.3.1", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } }, "follow-redirects": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", - "dev": true + "dev": true, + "requires": { + "debug": "2.6.8", + "stream-consume": "0.1.0" + } }, "for-in": { "version": "1.0.2", @@ -1916,7 +2876,10 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true + "dev": true, + "requires": { + "for-in": "1.0.2" + } }, "foreachasync": { "version": "3.0.0", @@ -1934,13 +2897,21 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } }, "formatio": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true + "dev": true, + "requires": { + "samsam": "1.2.1" + } }, "forwarded": { "version": "0.1.0", @@ -1964,7 +2935,12 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + } }, "fs.realpath": { "version": "1.0.0", @@ -1978,6 +2954,10 @@ "integrity": "sha1-8Z/Sj0Pur3YWgOUZogPE0LPTGv8=", "dev": true, "optional": true, + "requires": { + "nan": "2.6.2", + "node-pre-gyp": "0.6.33" + }, "dependencies": { "abbrev": { "version": "1.1.0", @@ -2006,7 +2986,11 @@ "version": "1.1.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.2" + } }, "asn1": { "version": "0.2.3", @@ -2047,22 +3031,35 @@ "version": "1.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "block-stream": { "version": "0.0.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "boom": { "version": "2.10.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "brace-expansion": { "version": "1.1.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } }, "buffer-shims": { "version": "1.0.0", @@ -2079,7 +3076,14 @@ "version": "1.1.3", "bundled": true, "dev": true, - "optional": true + "optional": 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" + } }, "code-point-at": { "version": "1.1.0", @@ -2089,13 +3093,19 @@ "combined-stream": { "version": "1.0.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } }, "commander": { "version": "2.9.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "graceful-readlink": "1.0.1" + } }, "concat-map": { "version": "0.0.1", @@ -2116,13 +3126,19 @@ "version": "2.0.5", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1" + } }, "dashdash": { "version": "1.14.1", "bundled": true, "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2136,7 +3152,10 @@ "version": "2.2.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "ms": "0.7.1" + } }, "deep-extend": { "version": "0.4.1", @@ -2159,7 +3178,10 @@ "version": "0.1.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "escape-string-regexp": { "version": "1.0.5", @@ -2188,7 +3210,12 @@ "version": "2.1.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.14" + } }, "fs.realpath": { "version": "1.0.0", @@ -2198,19 +3225,40 @@ "fstream": { "version": "1.0.10", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.5.4" + } }, "fstream-ignore": { "version": "1.0.5", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "fstream": "1.0.10", + "inherits": "2.0.3", + "minimatch": "3.0.3" + } }, "gauge": { "version": "2.7.3", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "aproba": "1.1.1", + "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.0" + } }, "generate-function": { "version": "2.0.0", @@ -2222,13 +3270,19 @@ "version": "1.2.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "is-property": "1.0.2" + } }, "getpass": { "version": "0.1.6", "bundled": true, "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2241,7 +3295,15 @@ "glob": { "version": "7.1.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "graceful-fs": { "version": "4.1.11", @@ -2258,13 +3320,22 @@ "version": "2.0.6", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.9.0", + "is-my-json-valid": "2.15.0", + "pinkie-promise": "2.0.1" + } }, "has-ansi": { "version": "2.0.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "has-unicode": { "version": "2.0.1", @@ -2276,7 +3347,13 @@ "version": "3.1.3", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } }, "hoek": { "version": "2.16.3", @@ -2287,12 +3364,21 @@ "version": "1.1.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.3.1", + "sshpk": "1.10.2" + } }, "inflight": { "version": "1.0.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -2308,13 +3394,22 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-my-json-valid": { "version": "2.15.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } }, "is-property": { "version": "1.0.2", @@ -2343,7 +3438,10 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "jsbn": { "version": "0.1.1", @@ -2373,7 +3471,12 @@ "version": "1.3.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + } }, "mime-db": { "version": "1.26.0", @@ -2383,12 +3486,18 @@ "mime-types": { "version": "2.1.14", "bundled": true, - "dev": true + "dev": true, + "requires": { + "mime-db": "1.26.0" + } }, "minimatch": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.6" + } }, "minimist": { "version": "0.0.8", @@ -2398,7 +3507,10 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "0.7.1", @@ -2410,19 +3522,39 @@ "version": "0.6.33", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.0.2", + "rc": "1.1.7", + "request": "2.79.0", + "rimraf": "2.5.4", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.3.0" + } }, "nopt": { "version": "3.0.6", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "abbrev": "1.1.0" + } }, "npmlog": { "version": "4.0.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "are-we-there-yet": "1.1.2", + "console-control-strings": "1.1.0", + "gauge": "2.7.3", + "set-blocking": "2.0.0" + } }, "number-is-nan": { "version": "1.0.1", @@ -2444,7 +3576,10 @@ "once": { "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "path-is-absolute": { "version": "1.0.1", @@ -2461,7 +3596,10 @@ "version": "2.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "pinkie": "2.0.4" + } }, "process-nextick-args": { "version": "1.0.7", @@ -2485,6 +3623,12 @@ "bundled": true, "dev": true, "optional": true, + "requires": { + "deep-extend": "0.4.1", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -2498,18 +3642,52 @@ "version": "2.2.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } }, "request": { "version": "2.79.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.0", + "forever-agent": "0.6.1", + "form-data": "2.1.2", + "har-validator": "2.0.6", + "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.14", + "oauth-sign": "0.8.2", + "qs": "6.3.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.4.3", + "uuid": "3.0.1" + } }, "rimraf": { "version": "2.5.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "glob": "7.1.1" + } }, "semver": { "version": "5.3.0", @@ -2533,13 +3711,27 @@ "version": "1.0.9", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "hoek": "2.16.3" + } }, "sshpk": { "version": "1.10.2", "bundled": true, "dev": true, "optional": 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.6", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2557,7 +3749,12 @@ "string-width": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "stringstream": { "version": "0.0.5", @@ -2568,7 +3765,10 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -2585,25 +3785,52 @@ "tar": { "version": "2.2.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.10", + "inherits": "2.0.3" + } }, "tar-pack": { "version": "3.3.0", "bundled": true, "dev": true, "optional": true, + "requires": { + "debug": "2.2.0", + "fstream": "1.0.10", + "fstream-ignore": "1.0.5", + "once": "1.3.3", + "readable-stream": "2.1.5", + "rimraf": "2.5.4", + "tar": "2.2.1", + "uid-number": "0.0.6" + }, "dependencies": { "once": { "version": "1.3.3", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "wrappy": "1.0.2" + } }, "readable-stream": { "version": "2.1.5", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } } } }, @@ -2611,7 +3838,10 @@ "version": "2.3.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "punycode": "1.4.1" + } }, "tunnel-agent": { "version": "0.4.3", @@ -2646,13 +3876,19 @@ "version": "1.3.6", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } }, "wide-align": { "version": "1.1.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "string-width": "1.0.2" + } }, "wrappy": { "version": "1.0.2", @@ -2671,7 +3907,17 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true + "dev": true, + "requires": { + "aproba": "1.1.2", + "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" + } }, "generate-function": { "version": "2.0.0", @@ -2683,7 +3929,10 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true + "dev": true, + "requires": { + "is-property": "1.0.2" + } }, "get-caller-file": { "version": "1.0.2", @@ -2702,6 +3951,9 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2715,19 +3967,33 @@ "version": "1.20.1", "resolved": "https://registry.npmjs.org/git-head/-/git-head-1.20.1.tgz", "integrity": "sha1-A20WpLN0lJ5OPa8VgnkDaG08zVI=", - "dev": true + "dev": true, + "requires": { + "git-refs": "1.1.3" + } }, "git-refs": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/git-refs/-/git-refs-1.1.3.tgz", "integrity": "sha1-gwl8s6klhcSkkm7FTiGC354g6J0=", - "dev": true + "dev": true, + "requires": { + "path-object": "2.3.0", + "slash": "1.0.0", + "walk": "2.3.9" + } }, "github": { "version": "8.2.1", "resolved": "https://registry.npmjs.org/github/-/github-8.2.1.tgz", "integrity": "sha1-YWsiEfvNHMhjFmmu1nZT5i61OBY=", - "dev": true + "dev": true, + "requires": { + "follow-redirects": "0.0.7", + "https-proxy-agent": "1.0.0", + "mime": "1.3.6", + "netrc": "0.1.4" + } }, "github-url-from-git": { "version": "1.5.0", @@ -2745,19 +4011,34 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true + "dev": 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" + } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } }, "glob-parent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true + "dev": true, + "requires": { + "is-glob": "2.0.1" + } }, "globals": { "version": "9.18.0", @@ -2769,7 +4050,15 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true + "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" + } }, "graceful-fs": { "version": "4.1.11", @@ -2794,12 +4083,21 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.28" + }, "dependencies": { "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.1" + } }, "uglify-js": { "version": "2.8.28", @@ -2807,6 +4105,11 @@ "integrity": "sha512-WqKNbmNJKzIdIEQu/U2ytgGBbhCy2PVks94GoetczOAJ/zCgVu2CuO7gguI5KPFGPtUtI1dmPQl6h0D4cPzypA==", "dev": true, "optional": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, "dependencies": { "source-map": { "version": "0.5.6", @@ -2823,19 +4126,31 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.9.0", + "is-my-json-valid": "2.16.0", + "pinkie-promise": "2.0.1" + } }, "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 + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "has-binary": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", "dev": true, + "requires": { + "isarray": "0.0.1" + }, "dependencies": { "isarray": { "version": "0.0.1", @@ -2873,25 +4188,41 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "hash.js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", "integrity": "sha1-EzL/ABVsCg/92CNgE9B7d6BFFXM=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "hasha": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", - "dev": true + "dev": true, + "requires": { + "is-stream": "1.1.0", + "pinkie-promise": "2.0.1" + } }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } }, "he": { "version": "1.1.1", @@ -2903,7 +4234,12 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true + "dev": true, + "requires": { + "hash.js": "1.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } }, "hoek": { "version": "2.16.3", @@ -2915,7 +4251,11 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "hosted-git-info": { "version": "2.4.2", @@ -2927,7 +4267,13 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.2.11", + "wbuf": "1.7.2" + } }, "html-entities": { "version": "1.2.1", @@ -2939,13 +4285,30 @@ "version": "0.4.5", "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.4.5.tgz", "integrity": "sha1-X7zYfNY6XEmn/OL+VvQl4Fcpxow=", - "dev": true + "dev": true, + "requires": { + "es6-templates": "0.2.3", + "fastparse": "1.1.1", + "html-minifier": "3.5.2", + "loader-utils": "1.1.0", + "object-assign": "4.1.1" + } }, "html-minifier": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.2.tgz", "integrity": "sha1-1zvD/0SJQkCIGM5gm/P7DqfvTrc=", - "dev": true + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.3", + "commander": "2.9.0", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.0.15" + } }, "http-deceiver": { "version": "1.2.7", @@ -2957,19 +4320,35 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", - "dev": true + "dev": true, + "requires": { + "depd": "1.1.0", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + } }, "http-proxy": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", - "dev": true + "dev": true, + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + } }, "http-proxy-middleware": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", "dev": true, + "requires": { + "http-proxy": "1.16.2", + "is-glob": "3.1.0", + "lodash": "4.17.4", + "micromatch": "2.3.11" + }, "dependencies": { "is-extglob": { "version": "2.1.1", @@ -2981,7 +4360,10 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } } } }, @@ -2989,7 +4371,12 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.1" + } }, "https-browserify": { "version": "0.0.1", @@ -3001,7 +4388,12 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", - "dev": true + "dev": true, + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.8", + "extend": "3.0.1" + } }, "iconv-lite": { "version": "0.4.15", @@ -3031,7 +4423,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "indexof": { "version": "0.0.1", @@ -3043,7 +4438,11 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -3061,7 +4460,22 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.1.0", + "figures": "1.7.0", + "lodash": "4.17.4", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + } }, "interpret": { "version": "1.0.3", @@ -3073,7 +4487,10 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } }, "invert-kv": { "version": "1.0.0", @@ -3097,7 +4514,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true + "dev": true, + "requires": { + "binary-extensions": "1.8.0" + } }, "is-buffer": { "version": "1.1.5", @@ -3109,7 +4529,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } }, "is-dotfile": { "version": "1.0.3", @@ -3121,7 +4544,10 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } }, "is-extendable": { "version": "0.1.1", @@ -3139,31 +4565,49 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "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=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "is-my-json-valid": { "version": "2.16.0", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", - "dev": true + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2" + } }, "is-path-cwd": { "version": "1.0.0", @@ -3175,13 +4619,19 @@ "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 + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } }, "is-path-inside": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } }, "is-posix-bracket": { "version": "0.1.1", @@ -3205,7 +4655,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true + "dev": true, + "requires": { + "tryit": "1.0.3" + } }, "is-stream": { "version": "1.1.0", @@ -3247,13 +4700,27 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true + "dev": true, + "requires": { + "isarray": "1.0.0" + } }, "isparta": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/isparta/-/isparta-4.0.0.tgz", "integrity": "sha1-HekZlvSAsi3LGsqFECVbrhV0RG4=", "dev": true, + "requires": { + "babel-core": "6.25.0", + "escodegen": "1.8.1", + "esprima": "2.7.3", + "istanbul": "0.4.5", + "mkdirp": "0.5.1", + "nomnomnomnom": "2.0.1", + "object-assign": "4.1.1", + "source-map": "0.5.6", + "which": "1.2.14" + }, "dependencies": { "esprima": { "version": "2.7.3", @@ -3267,7 +4734,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isparta-loader/-/isparta-loader-2.0.0.tgz", "integrity": "sha1-RCX0lsk/dlu8603ZOFdtowdWbtE=", - "dev": true + "dev": true, + "requires": { + "isparta": "4.0.0" + } }, "isstream": { "version": "0.1.2", @@ -3280,6 +4750,22 @@ "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", "dev": true, + "requires": { + "abbrev": "1.0.9", + "async": "1.5.2", + "escodegen": "1.8.1", + "esprima": "2.7.3", + "glob": "5.0.15", + "handlebars": "4.0.10", + "js-yaml": "3.8.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "once": "1.4.0", + "resolve": "1.1.7", + "supports-color": "3.2.3", + "which": "1.2.14", + "wordwrap": "1.0.0" + }, "dependencies": { "esprima": { "version": "2.7.3", @@ -3291,7 +4777,14 @@ "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "resolve": { "version": "1.1.7", @@ -3303,7 +4796,10 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true + "dev": true, + "requires": { + "has-flag": "1.0.0" + } } } }, @@ -3323,7 +4819,11 @@ "version": "3.8.4", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", - "dev": true + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "3.1.3" + } }, "jsbn": { "version": "0.1.1", @@ -3337,6 +4837,9 @@ "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz", "integrity": "sha1-597cFToRhJ/8UUEUSuhqfvDCU5I=", "dev": true, + "requires": { + "lodash": "3.10.1" + }, "dependencies": { "lodash": { "version": "3.10.1", @@ -3368,7 +4871,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true + "dev": true, + "requires": { + "jsonify": "0.0.0" + } }, "json-stringify-safe": { "version": "5.0.1", @@ -3392,7 +4898,10 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "jsonify": { "version": "0.0.0", @@ -3411,6 +4920,12 @@ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -3425,6 +4940,35 @@ "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", "integrity": "sha1-b3oaQGRG+i4YfslTmGmPTO5HYmk=", "dev": true, + "requires": { + "bluebird": "3.5.0", + "body-parser": "1.17.2", + "chokidar": "1.7.0", + "colors": "1.1.2", + "combine-lists": "1.0.1", + "connect": "3.6.2", + "core-js": "2.4.1", + "di": "0.0.1", + "dom-serialize": "2.2.1", + "expand-braces": "0.1.2", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "http-proxy": "1.16.2", + "isbinaryfile": "3.0.2", + "lodash": "3.10.1", + "log4js": "0.6.38", + "mime": "1.3.6", + "minimatch": "3.0.4", + "optimist": "0.6.1", + "qjobs": "1.1.5", + "range-parser": "1.2.0", + "rimraf": "2.6.1", + "safe-buffer": "5.0.1", + "socket.io": "1.7.3", + "source-map": "0.5.6", + "tmp": "0.0.31", + "useragent": "2.1.13" + }, "dependencies": { "lodash": { "version": "3.10.1", @@ -3439,6 +4983,13 @@ "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.1.tgz", "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=", "dev": true, + "requires": { + "dateformat": "1.0.12", + "istanbul": "0.4.5", + "lodash": "3.10.1", + "minimatch": "3.0.4", + "source-map": "0.5.6" + }, "dependencies": { "lodash": { "version": "3.10.1", @@ -3458,13 +5009,20 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz", "integrity": "sha1-BP3aRaHZaXpzhxx0ciI8WBcBqyA=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3" + } }, "karma-phantomjs-launcher": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz", "integrity": "sha1-0jyjSAG9qYY60xjju0vUBisTrNI=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4", + "phantomjs-prebuilt": "2.1.14" + } }, "karma-sinon": { "version": "1.0.5", @@ -3476,13 +5034,23 @@ "version": "0.3.7", "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "karma-webpack": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.3.tgz", "integrity": "sha1-Oc6/XKJYATmyf5rmm3iBa5yC+uY=", "dev": true, + "requires": { + "async": "0.9.2", + "loader-utils": "0.2.17", + "lodash": "3.10.1", + "source-map": "0.1.43", + "webpack-dev-middleware": "1.10.2" + }, "dependencies": { "async": { "version": "0.9.2", @@ -3494,7 +5062,13 @@ "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } }, "lodash": { "version": "3.10.1", @@ -3506,7 +5080,10 @@ "version": "0.1.43", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -3520,13 +5097,19 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } }, "klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "lazy-cache": { "version": "1.0.4", @@ -3538,25 +5121,42 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true + "dev": true, + "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 + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + }, "dependencies": { "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } } } }, @@ -3564,7 +5164,11 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", - "dev": true + "dev": true, + "requires": { + "find-cache-dir": "0.1.1", + "mkdirp": "0.5.1" + } }, "loader-runner": { "version": "2.3.0", @@ -3576,7 +5180,12 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } }, "lodash": { "version": "4.17.4", @@ -3588,7 +5197,11 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } }, "lodash._basecopy": { "version": "3.0.1", @@ -3606,7 +5219,12 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "dev": true + "dev": true, + "requires": { + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9", + "lodash.restparam": "3.6.1" + } }, "lodash._getnative": { "version": "3.9.1", @@ -3624,7 +5242,12 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "dev": true + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._createassigner": "3.1.1", + "lodash.keys": "3.1.2" + } }, "lodash.isarguments": { "version": "3.1.0", @@ -3642,7 +5265,12 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } }, "lodash.map": { "version": "4.6.0", @@ -3679,6 +5307,10 @@ "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", "dev": true, + "requires": { + "readable-stream": "1.0.34", + "semver": "4.3.6" + }, "dependencies": { "isarray": { "version": "0.0.1", @@ -3690,7 +5322,13 @@ "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true + "dev": true, + "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", @@ -3716,13 +5354,20 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true + "dev": true, + "requires": { + "js-tokens": "3.0.1" + } }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } }, "lower-case": { "version": "1.1.4", @@ -3770,13 +5415,29 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.2.11" + } }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.3.8", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -3802,13 +5463,32 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } }, "miller-rabin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.6", + "brorand": "1.1.0" + } }, "mime": { "version": "1.3.6", @@ -3826,7 +5506,10 @@ "version": "2.1.15", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "dev": true + "dev": true, + "requires": { + "mime-db": "1.27.0" + } }, "minimalistic-assert": { "version": "1.0.0", @@ -3844,7 +5527,10 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } }, "minimist": { "version": "0.0.8", @@ -3856,7 +5542,10 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -3893,7 +5582,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", - "dev": true + "dev": true, + "requires": { + "xml-char-classes": "1.0.0" + } }, "negotiator": { "version": "0.6.1", @@ -3923,13 +5615,41 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", - "dev": true + "dev": true, + "requires": { + "lower-case": "1.1.4" + } }, "node-libs-browser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.11.0", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.2.11", + "stream-browserify": "2.0.1", + "stream-http": "2.7.1", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.2", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, "dependencies": { "string_decoder": { "version": "0.10.31", @@ -3944,6 +5664,10 @@ "resolved": "https://registry.npmjs.org/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz", "integrity": "sha1-siOfAxyNBNpn4yg24eMZnhL3qOI=", "dev": true, + "requires": { + "chalk": "0.4.0", + "underscore": "1.6.0" + }, "dependencies": { "ansi-styles": { "version": "1.0.0", @@ -3955,7 +5679,12 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } }, "strip-ansi": { "version": "0.1.1", @@ -3969,25 +5698,41 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true + "dev": true, + "requires": { + "abbrev": "1.0.9" + } }, "normalize-package-data": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", - "dev": true + "dev": true, + "requires": { + "hosted-git-info": "2.4.2", + "is-builtin-module": "1.0.0", + "semver": "4.3.6", + "validate-npm-package-license": "3.0.1" + } }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true + "dev": true, + "requires": { + "remove-trailing-separator": "1.0.2" + } }, "npm-package-arg": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-4.2.1.tgz", "integrity": "sha1-WTMD/eqF98Qid18X+et2cPaA4+w=", "dev": true, + "requires": { + "hosted-git-info": "2.4.2", + "semver": "5.3.0" + }, "dependencies": { "semver": { "version": "5.3.0", @@ -4001,19 +5746,45 @@ "version": "7.5.0", "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-7.5.0.tgz", "integrity": "sha1-D23W5dEUJM+pn85bkw/q8JtPfwQ=", - "dev": true + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "graceful-fs": "4.1.11", + "normalize-package-data": "2.3.8", + "npm-package-arg": "4.2.1", + "npmlog": "4.1.0", + "once": "1.4.0", + "request": "2.79.0", + "retry": "0.10.1", + "semver": "4.3.6", + "slide": "1.1.6" + } }, "npmconf": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz", "integrity": "sha1-ZmBqSnNvHnegWaoHGnnJSreBhTo=", "dev": true, + "requires": { + "config-chain": "1.1.11", + "inherits": "2.0.3", + "ini": "1.3.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "once": "1.3.3", + "osenv": "0.1.4", + "semver": "4.3.6", + "uid-number": "0.0.5" + }, "dependencies": { "once": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } } } }, @@ -4021,7 +5792,13 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", - "dev": true + "dev": 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", @@ -4057,7 +5834,11 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } }, "obuf": { "version": "1.1.1", @@ -4069,7 +5850,10 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true + "dev": true, + "requires": { + "ee-first": "1.1.1" + } }, "on-headers": { "version": "1.0.1", @@ -4081,7 +5865,10 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "onetime": { "version": "1.1.0", @@ -4093,13 +5880,21 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", - "dev": true + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, "dependencies": { "wordwrap": { "version": "0.0.3", @@ -4113,7 +5908,15 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true + "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" + } }, "options": { "version": "0.0.6", @@ -4126,12 +5929,19 @@ "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", "dev": true, + "requires": { + "url-parse": "1.0.5" + }, "dependencies": { "url-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", - "dev": true + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } } } }, @@ -4151,7 +5961,10 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true + "dev": true, + "requires": { + "lcid": "1.0.0" + } }, "os-tmpdir": { "version": "1.0.2", @@ -4163,13 +5976,20 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "pad-right": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", - "dev": true + "dev": true, + "requires": { + "repeat-string": "1.6.1" + } }, "pako": { "version": "0.2.9", @@ -4181,19 +6001,32 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true + "dev": true, + "requires": { + "no-case": "2.3.1" + } }, "parse-asn1": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", - "dev": true + "dev": true, + "requires": { + "asn1.js": "4.9.1", + "browserify-aes": "1.0.6", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.0", + "pbkdf2": "3.0.12" + } }, "parse-author": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-0.2.0.tgz", "integrity": "sha1-3kJ05ecCwYgxxQGnz2b83zGfsfk=", - "dev": true + "dev": true, + "requires": { + "author-regex": "0.2.1" + } }, "parse-github-repo-url": { "version": "1.4.0", @@ -4205,31 +6038,49 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true + "dev": true, + "requires": { + "error-ex": "1.3.1" + } }, "parsejson": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "dev": true + "dev": true, + "requires": { + "better-assert": "1.0.2" + } }, "parseqs": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true + "dev": true, + "requires": { + "better-assert": "1.0.2" + } }, "parseuri": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true + "dev": true, + "requires": { + "better-assert": "1.0.2" + } }, "parseurl": { "version": "1.3.1", @@ -4247,7 +6098,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } }, "path-here": { "version": "1.1.1", @@ -4271,7 +6125,11 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/path-object/-/path-object-2.3.0.tgz", "integrity": "sha1-A+RmU+XDdcYK8cq92UvGRIpdkRA=", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "lodash.assign": "3.2.0" + } }, "path-parse": { "version": "1.0.5", @@ -4284,6 +6142,9 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", "dev": true, + "requires": { + "isarray": "0.0.1" + }, "dependencies": { "isarray": { "version": "0.0.1", @@ -4297,19 +6158,34 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "pause-stream": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true + "dev": true, + "requires": { + "through": "2.3.8" + } }, "pbkdf2": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", - "dev": true + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.0.1", + "sha.js": "2.4.8" + } }, "pend": { "version": "1.2.0", @@ -4321,7 +6197,18 @@ "version": "2.1.14", "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz", "integrity": "sha1-1T0xH8+30dCN2yQBRVjxGIxRbaA=", - "dev": true + "dev": true, + "requires": { + "es6-promise": "4.0.5", + "extract-zip": "1.5.0", + "fs-extra": "1.0.0", + "hasha": "2.2.0", + "kew": "0.7.0", + "progress": "1.1.8", + "request": "2.79.0", + "request-progress": "2.0.1", + "which": "1.2.14" + } }, "pify": { "version": "2.3.0", @@ -4339,13 +6226,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true + "dev": true, + "requires": { + "pinkie": "2.0.4" + } }, "pkg-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2" + } }, "pluralize": { "version": "1.2.1", @@ -4357,7 +6250,12 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", - "dev": true + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.8", + "mkdirp": "0.5.1" + } }, "prelude-ls": { "version": "1.1.2", @@ -4405,7 +6303,11 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", - "dev": true + "dev": true, + "requires": { + "forwarded": "0.1.0", + "ipaddr.js": "1.3.0" + } }, "prr": { "version": "0.0.0", @@ -4417,13 +6319,26 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.6", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } }, "publish-latest": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/publish-latest/-/publish-latest-1.1.2.tgz", "integrity": "sha1-RUp4SdNk9JdRCl8gvZnxdVCzqPc=", - "dev": true + "dev": true, + "requires": { + "commander": "2.9.0", + "parse-author": "0.2.0", + "path-here": "1.1.1", + "repo-path-parse": "1.0.1" + } }, "punycode": { "version": "1.4.1", @@ -4466,18 +6381,28 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "requires": { + "kind-of": "3.2.2" + }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -4485,7 +6410,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -4494,6 +6422,9 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", "dev": true, + "requires": { + "safe-buffer": "5.1.0" + }, "dependencies": { "safe-buffer": { "version": "5.1.0", @@ -4513,55 +6444,102 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", - "dev": true + "dev": true, + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.15", + "unpipe": "1.0.0" + } }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.3.8", + "path-type": "1.1.0" + } }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } }, "readable-stream": { "version": "2.2.11", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", - "dev": true + "dev": 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.0.1", + "string_decoder": "1.0.2", + "util-deprecate": "1.0.2" + } }, "readdirp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.2.11", + "set-immediate-shim": "1.0.1" + } }, "readline2": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + } }, "recast": { "version": "0.11.23", "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", - "dev": true + "dev": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.7", + "source-map": "0.5.6" + } }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true + "dev": true, + "requires": { + "resolve": "1.3.3" + } }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } }, "regenerate": { "version": "1.3.2", @@ -4579,19 +6557,33 @@ "version": "0.9.11", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "private": "0.1.7" + } }, "regex-cache": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "dev": true + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true + "dev": true, + "requires": { + "regenerate": "1.3.2", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } }, "regjsgen": { "version": "0.2.0", @@ -4604,6 +6596,9 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, + "requires": { + "jsesc": "0.5.0" + }, "dependencies": { "jsesc": { "version": "0.5.0", @@ -4641,19 +6636,48 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true + "dev": true, + "requires": { + "is-finite": "1.0.2" + } }, "repo-path-parse": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/repo-path-parse/-/repo-path-parse-1.0.1.tgz", "integrity": "sha1-xRD71c1H7qBNgcozzF1NUzyNpgo=", - "dev": true + "dev": true, + "requires": { + "dox": "0.6.1", + "doxme": "1.8.2" + } }, "request": { "version": "2.79.0", "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "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.15", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.4.3", + "uuid": "3.0.1" + }, "dependencies": { "qs": { "version": "6.3.2", @@ -4667,19 +6691,31 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", - "dev": true + "dev": true, + "requires": { + "throttleit": "1.0.0" + } }, "request-promise": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.1.tgz", "integrity": "sha1-fuxWyJMXqCLL/qmbA5zlQ8LhX2c=", - "dev": true + "dev": true, + "requires": { + "bluebird": "3.5.0", + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.2" + } }, "request-promise-core": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "require-directory": { "version": "2.1.1", @@ -4703,7 +6739,11 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } }, "requires-port": { "version": "1.0.0", @@ -4715,7 +6755,10 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "dev": true + "dev": true, + "requires": { + "path-parse": "1.0.5" + } }, "resolve-from": { "version": "1.0.1", @@ -4727,7 +6770,11 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } }, "retry": { "version": "0.10.1", @@ -4739,7 +6786,10 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true + "dev": true, + "requires": { + "align-text": "0.1.4" + } }, "right-pad": { "version": "1.0.1", @@ -4751,25 +6801,38 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2" + } }, "ripemd160": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", - "dev": true + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } }, "run-async": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true + "dev": true, + "requires": { + "once": "1.4.0" + } }, "run-auto": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/run-auto/-/run-auto-2.0.0.tgz", "integrity": "sha1-X0NT9Yrb1rdJJkibTyWeHa1qeNY=", - "dev": true + "dev": true, + "requires": { + "dezalgo": "1.0.3" + } }, "run-series": { "version": "1.1.4", @@ -4806,12 +6869,36 @@ "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-6.3.6.tgz", "integrity": "sha1-Yp0K7JCziilXpXpKnuEhSvUZKMc=", "dev": true, + "requires": { + "@semantic-release/commit-analyzer": "2.0.0", + "@semantic-release/condition-travis": "5.0.2", + "@semantic-release/error": "1.0.0", + "@semantic-release/last-release-npm": "1.2.1", + "@semantic-release/release-notes-generator": "2.0.0", + "git-head": "1.20.1", + "github": "8.2.1", + "lodash": "4.17.4", + "nerf-dart": "1.0.0", + "nopt": "4.0.1", + "normalize-package-data": "2.3.8", + "npmconf": "2.1.2", + "npmlog": "4.1.0", + "parse-github-repo-url": "1.4.0", + "require-relative": "0.8.7", + "run-auto": "2.0.0", + "run-series": "1.1.4", + "semver": "5.3.0" + }, "dependencies": { "nopt": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true + "dev": true, + "requires": { + "abbrev": "1.0.9", + "osenv": "0.1.4" + } }, "semver": { "version": "5.3.0", @@ -4832,12 +6919,30 @@ "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", "dev": true, + "requires": { + "debug": "2.6.7", + "depd": "1.1.0", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "fresh": "0.5.0", + "http-errors": "1.6.1", + "mime": "1.3.4", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "mime": { "version": "1.3.4", @@ -4851,13 +6956,28 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.0.tgz", "integrity": "sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc=", - "dev": true + "dev": true, + "requires": { + "accepts": "1.3.3", + "batch": "0.6.1", + "debug": "2.6.8", + "escape-html": "1.0.3", + "http-errors": "1.6.1", + "mime-types": "2.1.15", + "parseurl": "1.3.1" + } }, "serve-static": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", - "dev": true + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.1", + "send": "0.15.3" + } }, "set-blocking": { "version": "2.0.0", @@ -4887,13 +7007,21 @@ "version": "2.4.8", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "shelljs": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2", + "interpret": "1.0.3", + "rechoir": "0.6.2" + } }, "signal-exit": { "version": "3.0.2", @@ -4905,7 +7033,17 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.3.4.tgz", "integrity": "sha1-RmrY0brobW21GqIYuS6Ze8Pl24g=", - "dev": true + "dev": true, + "requires": { + "diff": "3.2.0", + "formatio": "1.2.0", + "lolex": "1.6.0", + "native-promise-only": "0.8.1", + "path-to-regexp": "1.7.0", + "samsam": "1.2.1", + "text-encoding": "0.6.4", + "type-detect": "4.0.3" + } }, "slash": { "version": "1.0.0", @@ -4929,19 +7067,34 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "socket.io": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", "dev": true, + "requires": { + "debug": "2.3.3", + "engine.io": "1.8.3", + "has-binary": "0.1.7", + "object-assign": "4.1.0", + "socket.io-adapter": "0.5.0", + "socket.io-client": "1.7.3", + "socket.io-parser": "2.3.1" + }, "dependencies": { "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -4962,12 +7115,19 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", "dev": true, + "requires": { + "debug": "2.3.3", + "socket.io-parser": "2.3.1" + }, "dependencies": { "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -4982,6 +7142,19 @@ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.3.3", + "engine.io-client": "1.8.3", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "2.3.1", + "to-array": "0.1.4" + }, "dependencies": { "component-emitter": { "version": "1.2.1", @@ -4993,7 +7166,10 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -5008,12 +7184,21 @@ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", "dev": true, + "requires": { + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + }, "dependencies": { "debug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.1" + } }, "isarray": { "version": "0.0.1", @@ -5034,6 +7219,10 @@ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "2.0.3" + }, "dependencies": { "uuid": { "version": "2.0.3", @@ -5048,12 +7237,23 @@ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.2.tgz", "integrity": "sha1-8CEqhVDkyUaMjM6u79LjSTwDOtU=", "dev": true, + "requires": { + "debug": "2.6.8", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.1.9" + }, "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=", - "dev": true + "dev": true, + "requires": { + "websocket-driver": "0.6.5" + } } } }, @@ -5073,13 +7273,19 @@ "version": "0.4.15", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.6" + } }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } }, "spdx-expression-parse": { "version": "1.0.4", @@ -5097,19 +7303,39 @@ "version": "3.4.7", "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true + "dev": true, + "requires": { + "debug": "2.6.8", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.0.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + } }, "spdy-transport": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", - "dev": true + "dev": true, + "requires": { + "debug": "2.6.8", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.2.11", + "safe-buffer": "5.0.1", + "wbuf": "1.7.2" + } }, "split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true + "dev": true, + "requires": { + "through": "2.3.8" + } }, "sprintf-js": { "version": "1.0.3", @@ -5122,6 +7348,16 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "dev": 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", @@ -5147,13 +7383,20 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.2.11" + } }, "stream-combiner": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "dev": true + "dev": true, + "requires": { + "duplexer": "0.1.1" + } }, "stream-consume": { "version": "0.1.0", @@ -5165,19 +7408,34 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.1.tgz", "integrity": "sha1-VGpRdBrVprB+njGwsQRBqRffUoo=", - "dev": true + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.2.11", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } }, "string_decoder": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "stringstream": { "version": "0.0.5", @@ -5189,7 +7447,10 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-bom": { "version": "3.0.0", @@ -5201,7 +7462,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -5226,6 +7490,14 @@ "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.0.0" + }, "dependencies": { "is-fullwidth-code-point": { "version": "2.0.0", @@ -5237,7 +7509,11 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", - "dev": true + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -5275,13 +7551,19 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", - "dev": true + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } }, "tmp": { "version": "0.0.31", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "dev": true + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } }, "to-array": { "version": "0.1.4", @@ -5305,19 +7587,30 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true + "dev": true, + "requires": { + "punycode": "1.4.1" + } }, "travis-ci": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/travis-ci/-/travis-ci-2.1.1.tgz", "integrity": "sha1-mGliZa+CeuNXbzGqBth250tLCC4=", "dev": true, + "requires": { + "github": "0.1.16", + "lodash": "1.3.1", + "request": "2.74.0" + }, "dependencies": { "async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", "dev": true, + "requires": { + "lodash": "4.17.4" + }, "dependencies": { "lodash": { "version": "4.17.4", @@ -5331,7 +7624,12 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", - "dev": true + "dev": true, + "requires": { + "async": "2.4.1", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } }, "github": { "version": "0.1.16", @@ -5361,7 +7659,30 @@ "version": "2.74.0", "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", "integrity": "sha1-dpPKdou7DqXIzgjAhKRe+gW4kqs=", - "dev": true + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "bl": "1.1.2", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "1.0.1", + "har-validator": "2.0.6", + "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.15", + "node-uuid": "1.4.8", + "oauth-sign": "0.8.2", + "qs": "6.2.3", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.4.3" + } } } }, @@ -5369,7 +7690,14 @@ "version": "1.0.0-node-0.10-support", "resolved": "https://registry.npmjs.org/travis-deploy-once/-/travis-deploy-once-1.0.0-node-0.10-support.tgz", "integrity": "sha1-mOzOfZWy9Lpdze7r9Uud+HcT1eY=", - "dev": true + "dev": true, + "requires": { + "babel-polyfill": "6.23.0", + "bluebird": "3.5.0", + "request": "2.79.0", + "request-promise": "4.2.1", + "travis-ci": "2.1.1" + } }, "trim-newlines": { "version": "1.0.0", @@ -5412,7 +7740,10 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } }, "type-detect": { "version": "4.0.3", @@ -5424,7 +7755,11 @@ "version": "1.6.15", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "dev": true + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.15" + } }, "typedarray": { "version": "0.0.6", @@ -5436,7 +7771,11 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.15.tgz", "integrity": "sha1-qssyOoRrI0YCJw3q2KMkQaiAb0I=", - "dev": true + "dev": true, + "requires": { + "commander": "2.9.0", + "source-map": "0.5.6" + } }, "uglify-to-browserify": { "version": "1.0.2", @@ -5480,6 +7819,10 @@ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, "dependencies": { "punycode": { "version": "1.3.2", @@ -5494,6 +7837,10 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, "dependencies": { "querystringify": { "version": "1.0.0", @@ -5507,19 +7854,29 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } }, "useragent": { "version": "2.1.13", "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.1.13.tgz", "integrity": "sha1-u6Q+iqJNXOuDwpN0c+EC4h33TBA=", - "dev": true + "dev": true, + "requires": { + "lru-cache": "2.2.4", + "tmp": "0.0.31" + } }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, + "requires": { + "inherits": "2.0.1" + }, "dependencies": { "inherits": { "version": "2.0.1", @@ -5551,7 +7908,11 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } }, "vary": { "version": "1.1.1", @@ -5563,13 +7924,19 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true + "dev": true, + "requires": { + "extsprintf": "1.0.2" + } }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true + "dev": true, + "requires": { + "indexof": "0.0.1" + } }, "void-elements": { "version": "2.0.1", @@ -5581,19 +7948,30 @@ "version": "2.3.9", "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz", "integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins=", - "dev": true + "dev": true, + "requires": { + "foreachasync": "3.0.0" + } }, "watchpack": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=", "dev": true, + "requires": { + "async": "2.4.1", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + }, "dependencies": { "async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } } } }, @@ -5601,43 +7979,92 @@ "version": "1.7.2", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", - "dev": true + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" + } }, "webpack": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.6.1.tgz", "integrity": "sha1-LgRX8KuxrF3zqxBsacZy8jZ4Xwc=", "dev": true, + "requires": { + "acorn": "5.0.3", + "acorn-dynamic-import": "2.0.2", + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "async": "2.4.1", + "enhanced-resolve": "3.1.0", + "interpret": "1.0.3", + "json-loader": "0.5.4", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "0.2.17", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.0.0", + "source-map": "0.5.6", + "supports-color": "3.2.3", + "tapable": "0.2.6", + "uglify-js": "2.8.28", + "watchpack": "1.3.1", + "webpack-sources": "0.2.3", + "yargs": "6.6.0" + }, "dependencies": { "async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true + "dev": true, + "requires": { + "has-flag": "1.0.0" + } }, "uglify-js": { "version": "2.8.28", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.28.tgz", "integrity": "sha512-WqKNbmNJKzIdIEQu/U2ytgGBbhCy2PVks94GoetczOAJ/zCgVu2CuO7gguI5KPFGPtUtI1dmPQl6h0D4cPzypA==", "dev": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, "dependencies": { "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, @@ -5646,6 +8073,21 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -5657,7 +8099,12 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } } } } @@ -5667,13 +8114,38 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.10.2.tgz", "integrity": "sha1-LiUs4d+wINvaHMs33ybzCrAU29E=", - "dev": true + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.3.6", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0" + } }, "webpack-dev-server": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.4.5.tgz", "integrity": "sha1-MThM6BE2vhCAtLTN4OubkOVO5s8=", "dev": true, + "requires": { + "ansi-html": "0.0.7", + "chokidar": "1.7.0", + "compression": "1.6.2", + "connect-history-api-fallback": "1.3.0", + "express": "4.15.3", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "opn": "4.0.2", + "portfinder": "1.0.13", + "serve-index": "1.9.0", + "sockjs": "0.3.18", + "sockjs-client": "1.1.2", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "3.2.3", + "webpack-dev-middleware": "1.10.2", + "yargs": "6.6.0" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -5685,19 +8157,42 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true + "dev": true, + "requires": { + "has-flag": "1.0.0" + } }, "yargs": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } } } }, @@ -5705,13 +8200,20 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=", - "dev": true + "dev": true, + "requires": { + "source-list-map": "1.1.2", + "source-map": "0.5.6" + } }, "websocket-driver": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", - "dev": true + "dev": true, + "requires": { + "websocket-extensions": "0.1.1" + } }, "websocket-extensions": { "version": "0.1.1", @@ -5723,7 +8225,10 @@ "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "dev": true + "dev": true, + "requires": { + "isexe": "2.0.0" + } }, "which-module": { "version": "1.0.0", @@ -5735,7 +8240,10 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2" + } }, "window-size": { "version": "0.1.0", @@ -5759,7 +8267,11 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } }, "wrappy": { "version": "1.0.2", @@ -5771,13 +8283,20 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } }, "ws": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", - "dev": true + "dev": true, + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } }, "wtf-8": { "version": "1.0.0", @@ -5814,13 +8333,22 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, - "optional": true + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } }, "yargs-parser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", "dev": true, + "requires": { + "camelcase": "3.0.0" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -5834,7 +8362,10 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "dev": true + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } }, "yeast": { "version": "0.1.2", diff --git a/package.json b/package.json index bb106ce..5e6874e 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "phantomjs-prebuilt": "^2.1.8", "publish-latest": "^1.1.2", "semantic-release": "^6.0.0", - "sinon": "^2.0.0", + "sinon": "^3.0.0", "webpack": "^3.0.0", "webpack-dev-server": "^2.4.5" }, From c03a8676086cb3f781ed77278a04afd9f4912573 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 3 Aug 2017 12:48:28 -0500 Subject: [PATCH 056/159] chore(package): update html-loader to version 0.5.0 (#146) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5e6874e..bc9b6af 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "eslint-config-google": "^0.8.1", "eslint-loader": "^1.4.1", "eslint-plugin-jasmine": "^2.0.0", - "html-loader": "^0.4.3", + "html-loader": "^0.5.0", "isparta-loader": "^2.0.0", "jasmine-core": "^2.4.1", "karma": "^1.1.2", From e350766b11d035a8007b170f17ad714708d13ba9 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 16 Aug 2017 09:56:27 -0500 Subject: [PATCH 057/159] =?UTF-8?q?chore(package):=20update=20semantic-rel?= =?UTF-8?q?ease=20to=20version=207.0.1=20=F0=9F=9A=80=20(#148)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 2873 ++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 1401 insertions(+), 1474 deletions(-) diff --git a/package-lock.json b/package-lock.json index b07c571..a6343d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,14 +20,14 @@ "dev": true, "requires": { "@semantic-release/error": "1.0.0", - "semver": "5.3.0", + "semver": "5.4.1", "travis-deploy-once": "1.0.0-node-0.10-support" }, "dependencies": { "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true } } @@ -86,13 +86,33 @@ } }, "@semantic-release/release-notes-generator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-2.0.0.tgz", - "integrity": "sha1-fF2mVolGbVNqU/36n01io70TwW4=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-3.0.1.tgz", + "integrity": "sha512-7KpT3eKOWf6Sd+3vWJgbBEdMKbqgsLiDNq+U0EwEadKdbTxaxDtSWYixw0S8Kd+0jv5CvmMpHxac5jTV3f54Xg==", "dev": true, "requires": { - "conventional-changelog": "0.0.17", + "conventional-changelog": "1.1.4", "github-url-from-git": "1.5.0" + }, + "dependencies": { + "conventional-changelog": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.4.tgz", + "integrity": "sha1-EIvHUMKjF+IA4vm0E8qqH4x++js=", + "dev": true, + "requires": { + "conventional-changelog-angular": "1.4.0", + "conventional-changelog-atom": "0.1.1", + "conventional-changelog-codemirror": "0.1.0", + "conventional-changelog-core": "1.9.0", + "conventional-changelog-ember": "0.2.6", + "conventional-changelog-eslint": "0.1.0", + "conventional-changelog-express": "0.1.0", + "conventional-changelog-jquery": "0.1.0", + "conventional-changelog-jscs": "0.1.0", + "conventional-changelog-jshint": "0.1.0" + } + } } }, "abbrev": { @@ -175,16 +195,6 @@ } } }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, "ajv-keywords": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", @@ -226,12 +236,6 @@ "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", "dev": true }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", @@ -312,6 +316,12 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, "array-slice": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", @@ -352,9 +362,9 @@ "dev": true }, "asap": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz", - "integrity": "sha1-UidltQw1EEkOUtfc/ghe+bqWlY8=", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", "dev": true }, "asn1": { @@ -1362,7 +1372,6 @@ "requires": { "anymatch": "1.3.0", "async-each": "1.0.1", - "fsevents": "1.1.1", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -1395,15 +1404,6 @@ "source-map": "0.5.6" } }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, "cli-width": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", @@ -1441,6 +1441,21 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "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 + }, "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", @@ -1480,6 +1495,16 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "dev": true, + "requires": { + "array-ify": "1.0.0", + "dot-prop": "3.0.0" + } + }, "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", @@ -1665,12 +1690,231 @@ } } }, + "conventional-changelog-angular": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.4.0.tgz", + "integrity": "sha512-ukKX22lJl9ewogze1hKbBuff/dGMG2uyGpOhhw0ehhlv6GtdeCxj51YfGOZ5qC89WwsHT7SDXFzBKidwH3pwmQ==", + "dev": true, + "requires": { + "compare-func": "1.3.2", + "github-url-from-git": "1.5.0", + "q": "1.5.0", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.3.8", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + } + } + }, + "conventional-changelog-atom": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-0.1.1.tgz", + "integrity": "sha512-6Nlu/+MiD4gi7k3Z+N1vMJWpaPSdvFPWzPGnH4OXewHAxiAl0L/TT9CGgA01fosPxmYr4hMNtD7kyN0tkg8vIA==", + "dev": true, + "requires": { + "q": "1.5.0" + } + }, + "conventional-changelog-codemirror": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.1.0.tgz", + "integrity": "sha1-dXelkdv5tTjnoVCn7mL2WihyszQ=", + "dev": true, + "requires": { + "q": "1.5.0" + } + }, + "conventional-changelog-core": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-1.9.0.tgz", + "integrity": "sha1-3l37wJGEdlZQjUo4njXJobxJ5/Q=", + "dev": true, + "requires": { + "conventional-changelog-writer": "1.4.1", + "conventional-commits-parser": "1.3.0", + "dateformat": "1.0.12", + "get-pkg-repo": "1.4.0", + "git-raw-commits": "1.2.0", + "git-remote-origin-url": "2.0.0", + "git-semver-tags": "1.2.1", + "lodash": "4.17.4", + "normalize-package-data": "2.3.8", + "q": "1.5.0", + "read-pkg": "1.1.0", + "read-pkg-up": "1.0.1", + "through2": "2.0.3" + } + }, + "conventional-changelog-ember": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.2.6.tgz", + "integrity": "sha1-i3NVQZ9RJ0k8TFYkc6svx5LxwrY=", + "dev": true, + "requires": { + "q": "1.5.0" + } + }, + "conventional-changelog-eslint": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-0.1.0.tgz", + "integrity": "sha1-pSQR6ZngUBzlALhWsKZD0DMJB+I=", + "dev": true, + "requires": { + "q": "1.5.0" + } + }, + "conventional-changelog-express": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-0.1.0.tgz", + "integrity": "sha1-VcbIQcgRliA2wDe9vZZKVK4xD84=", + "dev": true, + "requires": { + "q": "1.5.0" + } + }, + "conventional-changelog-jquery": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz", + "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=", + "dev": true, + "requires": { + "q": "1.5.0" + } + }, + "conventional-changelog-jscs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz", + "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=", + "dev": true, + "requires": { + "q": "1.5.0" + } + }, + "conventional-changelog-jshint": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-0.1.0.tgz", + "integrity": "sha1-AMq46aMxdIer2UxNhGcTQpGNKgc=", + "dev": true, + "requires": { + "compare-func": "1.3.2", + "q": "1.5.0" + } + }, + "conventional-changelog-writer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-1.4.1.tgz", + "integrity": "sha1-P0y00APrtWmJ0w00WJO1KkNjnI4=", + "dev": true, + "requires": { + "compare-func": "1.3.2", + "conventional-commits-filter": "1.0.0", + "dateformat": "1.0.12", + "handlebars": "4.0.10", + "json-stringify-safe": "5.0.1", + "lodash": "4.17.4", + "meow": "3.7.0", + "semver": "5.4.1", + "split": "1.0.1", + "through2": "2.0.3" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2.3.8" + } + } + } + }, "conventional-commit-types": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-2.1.0.tgz", "integrity": "sha1-RdhgOGyaLmU37pHYobYb0EEbPQQ=", "dev": true }, + "conventional-commits-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.0.0.tgz", + "integrity": "sha1-b8KmWTcrw/IznPn//34bA0S5MDk=", + "dev": true, + "requires": { + "is-subset": "0.1.1", + "modify-values": "1.0.0" + } + }, + "conventional-commits-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-1.3.0.tgz", + "integrity": "sha1-4ye1MZThp61dxjR57pCZpSsCSGU=", + "dev": true, + "requires": { + "is-text-path": "1.0.1", + "JSONStream": "1.3.1", + "lodash": "4.17.4", + "meow": "3.7.0", + "split2": "2.1.1", + "through2": "2.0.3", + "trim-off-newlines": "1.0.1" + } + }, "convert-source-map": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", @@ -1737,6 +1981,29 @@ "sha.js": "2.4.8" } }, + "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.2.14" + }, + "dependencies": { + "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" + } + } + } + }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", @@ -1802,6 +2069,15 @@ "es5-ext": "0.10.23" } }, + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -1926,7 +2202,7 @@ "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", "dev": true, "requires": { - "asap": "2.0.5", + "asap": "2.0.6", "wrappy": "1.0.2" } }, @@ -1981,6 +2257,15 @@ "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", "dev": true }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, "dox": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/dox/-/dox-0.6.1.tgz", @@ -2158,18 +2443,6 @@ "wtf-8": "1.0.0" } }, - "enhanced-resolve": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz", - "integrity": "sha1-n0tib1dyRe3PSyrYPYbhf09CHew=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.6" - } - }, "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -2342,125 +2615,370 @@ } }, "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.4.1.tgz", + "integrity": "sha1-mc1+r8/8ov+Zpcj18qR01jZLS9M=", "dev": true, "requires": { + "ajv": "5.2.2", "babel-code-frame": "6.22.0", "chalk": "1.1.3", "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", "debug": "2.6.8", "doctrine": "2.0.0", - "escope": "3.6.0", - "espree": "3.4.3", + "eslint-scope": "3.7.1", + "espree": "3.5.0", "esquery": "1.0.0", "estraverse": "4.2.0", "esutils": "2.0.2", "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", "glob": "7.1.2", "globals": "9.18.0", "ignore": "3.3.3", "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.16.0", + "inquirer": "3.2.1", "is-resolvable": "1.0.0", - "js-yaml": "3.8.4", + "js-yaml": "3.9.1", "json-stable-stringify": "1.0.1", "levn": "0.3.0", "lodash": "4.17.4", + "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", "optionator": "0.8.2", "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", + "pluralize": "4.0.0", + "progress": "2.0.0", "require-uncached": "1.0.3", - "shelljs": "0.7.8", - "strip-bom": "3.0.0", + "semver": "5.4.1", "strip-json-comments": "2.0.1", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" - } - }, - "eslint-config-google": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.7.1.tgz", - "integrity": "sha1-VZj4SY6eB4Qg80uASVuNlZ9lH7I=", - "dev": true - }, - "eslint-loader": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.7.1.tgz", - "integrity": "sha1-ULFY3WJy3O+5fphCVIN/gaWALOA=", - "dev": true, - "requires": { - "find-cache-dir": "0.1.1", - "loader-fs-cache": "1.0.1", - "loader-utils": "1.1.0", - "object-assign": "4.1.1", - "object-hash": "1.1.8", - "rimraf": "2.6.1" - } - }, - "eslint-plugin-jasmine": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.2.0.tgz", - "integrity": "sha1-cTWHk4PDmmZ8ch0wK58g8DiVQ94=", - "dev": true - }, - "espree": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", - "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", - "dev": true, - "requires": { - "acorn": "5.0.3", - "acorn-jsx": "3.0.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", - "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=", - "dev": true, - "requires": { - "estraverse": "4.1.1", - "object-assign": "4.1.1" + "table": "4.0.1", + "text-table": "0.2.0" }, "dependencies": { - "estraverse": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", - "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=", + "acorn": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", + "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==", "dev": true - } - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", + }, + "ajv": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", + "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-escapes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "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.0" + } + }, + "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" + } + }, + "espree": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz", + "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", + "dev": true, + "requires": { + "acorn": "5.1.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "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" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "inquirer": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.1.tgz", + "integrity": "sha512-QgW3eiPN8gpj/K5vVpHADJJgrrF0ho/dZGylikGX7iqAdRgC9FVKYKWFLx6hZDBFcOLEoSqINYrVPeFAeG/PdA==", + "dev": true, + "requires": { + "ansi-escapes": "2.0.0", + "chalk": "2.1.0", + "cli-cursor": "2.1.0", + "cli-width": "2.1.0", + "external-editor": "2.0.4", + "figures": "2.0.0", + "lodash": "4.17.4", + "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": { + "chalk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.2.1" + } + } + } + }, + "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 + }, + "js-yaml": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz", + "integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "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.1.0" + } + }, + "pluralize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", + "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "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" + } + }, + "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 + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "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" + } + }, + "supports-color": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "table": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", + "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + } + } + } + } + }, + "eslint-config-google": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.8.1.tgz", + "integrity": "sha512-pVRvIPElH6JivuOsvnMKIWhX3JCJNOZnY7f0G5dX43ha4ZL4KI7P2dOiPqfD+Pkft1TJSbm7SuTmEx0SpvFCxQ==", + "dev": true + }, + "eslint-loader": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.7.1.tgz", + "integrity": "sha1-ULFY3WJy3O+5fphCVIN/gaWALOA=", + "dev": true, + "requires": { + "find-cache-dir": "0.1.1", + "loader-fs-cache": "1.0.1", + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "object-hash": "1.1.8", + "rimraf": "2.6.1" + } + }, + "eslint-plugin-jasmine": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.2.0.tgz", + "integrity": "sha1-cTWHk4PDmmZ8ch0wK58g8DiVQ94=", + "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.1.0", + "estraverse": "4.2.0" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", + "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=", + "dev": true, + "requires": { + "estraverse": "4.1.1", + "object-assign": "4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", + "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=", + "dev": true + } + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true @@ -2526,11 +3044,20 @@ "create-hash": "1.1.3" } }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } }, "expand-braces": { "version": "0.1.2", @@ -2653,6 +3180,25 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, + "external-editor": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", + "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", + "dev": true, + "requires": { + "iconv-lite": "0.4.18", + "jschardet": "1.5.1", + "tmp": "0.0.31" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", + "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==", + "dev": true + } + } + }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -2728,6 +3274,12 @@ "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", "dev": true }, + "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=", + "dev": true + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -2758,16 +3310,6 @@ "pend": "1.2.0" } }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, "file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", @@ -2881,1028 +3423,79 @@ "for-in": "1.0.2" } }, - "foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true, - "requires": { - "samsam": "1.2.1" - } - }, - "forwarded": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", - "dev": true - }, - "fresh": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", - "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", - "dev": true - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.1.tgz", - "integrity": "sha1-8Z/Sj0Pur3YWgOUZogPE0LPTGv8=", - "dev": true, - "optional": true, - "requires": { - "nan": "2.6.2", - "node-pre-gyp": "0.6.33" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.2" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.6", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.11.0", - "bundled": true, - "dev": true, - "optional": true - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": 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" - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "0.7.1" - } - }, - "deep-extend": { - "version": "0.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "extend": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.14" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.10", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.5.4" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.10", - "inherits": "2.0.3", - "minimatch": "3.0.3" - } - }, - "gauge": { - "version": "2.7.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "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.0" - } - }, - "generate-function": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "generate-object-property": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "is-property": "1.0.2" - } - }, - "getpass": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.1", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.3", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "2.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chalk": "1.1.3", - "commander": "2.9.0", - "is-my-json-valid": "2.15.0", - "pinkie-promise": "2.0.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "dev": true, - "optional": 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, - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.3.1", - "sshpk": "1.10.2" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-my-json-valid": { - "version": "2.15.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, - "is-property": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonpointer": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - } - }, - "mime-db": { - "version": "1.26.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.14", - "bundled": true, - "dev": true, - "requires": { - "mime-db": "1.26.0" - } - }, - "minimatch": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.6" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "0.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.33", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.0.2", - "rc": "1.1.7", - "request": "2.79.0", - "rimraf": "2.5.4", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.3.0" - } - }, - "nopt": { - "version": "3.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.0" - } - }, - "npmlog": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.2", - "console-control-strings": "1.1.0", - "gauge": "2.7.3", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.3.1", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.4.1", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.79.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.0", - "forever-agent": "0.6.1", - "form-data": "2.1.2", - "har-validator": "2.0.6", - "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.14", - "oauth-sign": "0.8.2", - "qs": "6.3.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.4.3", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.5.4", - "bundled": true, - "dev": true, - "requires": { - "glob": "7.1.1" - } - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.10.2", - "bundled": true, - "dev": true, - "optional": 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.6", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "supports-color": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.10", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.2.0", - "fstream": "1.0.10", - "fstream-ignore": "1.0.5", - "once": "1.3.3", - "readable-stream": "2.1.5", - "rimraf": "2.5.4", - "tar": "2.2.1", - "uid-number": "0.0.6" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "readable-stream": { - "version": "2.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - } - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.4.3", - "bundled": true, - "dev": true, - "optional": true - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true - } - } - }, + "foreachasync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", + "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "formatio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", + "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", + "dev": true, + "requires": { + "samsam": "1.2.1" + } + }, + "forwarded": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", + "dev": true + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "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=", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -3940,12 +3533,31 @@ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, + "get-pkg-repo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", + "dev": true, + "requires": { + "hosted-git-info": "2.4.2", + "meow": "3.7.0", + "normalize-package-data": "2.3.8", + "parse-github-repo-url": "1.4.0", + "through2": "2.0.3" + } + }, "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", "dev": true }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -3972,6 +3584,19 @@ "git-refs": "1.1.3" } }, + "git-raw-commits": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.2.0.tgz", + "integrity": "sha1-DzqL/ZmuDy2LkiTViJKXXppS0Dw=", + "dev": true, + "requires": { + "dargs": "4.1.0", + "lodash.template": "4.4.0", + "meow": "3.7.0", + "split2": "2.1.1", + "through2": "2.0.3" + } + }, "git-refs": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/git-refs/-/git-refs-1.1.3.tgz", @@ -3983,6 +3608,43 @@ "walk": "2.3.9" } }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "requires": { + "gitconfiglocal": "1.0.0", + "pify": "2.3.0" + } + }, + "git-semver-tags": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.2.1.tgz", + "integrity": "sha512-fFyxtzTHCTQKwB4clA2AInVrlflBbVbbJD4NWwmxKXHUgsU/K9kmHNlkPLqFiuy9xu9q3lNopghR4VXeQwZbTQ==", + "dev": true, + "requires": { + "meow": "3.7.0", + "semver": "5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "requires": { + "ini": "1.3.4" + } + }, "github": { "version": "8.2.1", "resolved": "https://registry.npmjs.org/github/-/github-8.2.1.tgz", @@ -4282,9 +3944,9 @@ "dev": true }, "html-loader": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.4.5.tgz", - "integrity": "sha1-X7zYfNY6XEmn/OL+VvQl4Fcpxow=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.1.tgz", + "integrity": "sha512-RxokXoxcsRSWcN553Ew+K0TUo68gQfmddTuUIZ4xRD8Ax1xXzX2UYQ3FC3D5MoRPGAdL1erWKeEFihDrrdxHiA==", "dev": true, "requires": { "es6-templates": "0.2.3", @@ -4456,27 +4118,6 @@ "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "dev": true }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.1.0", - "figures": "1.7.0", - "lodash": "4.17.4", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - } - }, "interpret": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", @@ -4609,6 +4250,12 @@ "kind-of": "3.2.2" } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -4645,6 +4292,12 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -4666,6 +4319,21 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "requires": { + "text-extensions": "1.5.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -4832,6 +4500,12 @@ "dev": true, "optional": true }, + "jschardet": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz", + "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==", + "dev": true + }, "jsdoctypeparser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz", @@ -4867,6 +4541,12 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, + "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=", + "dev": true + }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", @@ -4909,12 +4589,28 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, "jsonpointer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", "dev": true }, + "JSONStream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", + "dev": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, "jsprim": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", @@ -4935,6 +4631,12 @@ } } }, + "just-extend": { + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.22.tgz", + "integrity": "sha1-MzCvdWyralQnAMZLLk5KoGLVL/8=", + "dev": true + }, "karma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", @@ -5187,6 +4889,24 @@ "json5": "0.5.1" } }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -5238,6 +4958,12 @@ "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", "dev": true }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, "lodash.assign": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", @@ -5302,6 +5028,25 @@ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", "dev": true }, + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.1.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0" + } + }, "log4js": { "version": "0.6.38", "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", @@ -5411,6 +5156,15 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -5511,6 +5265,12 @@ "mime-db": "1.27.0" } }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, "minimalistic-assert": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", @@ -5547,25 +5307,18 @@ "minimist": "0.0.8" } }, + "modify-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.0.tgz", + "integrity": "sha1-4rbN65zhn5kxelNyLz2/XfXqqrI=", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", - "dev": true, - "optional": true - }, "native-promise-only": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", @@ -5611,6 +5364,18 @@ "integrity": "sha1-L6xKCyGCOgeRow9eA1wGIDNuqdA=", "dev": true }, + "nise": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.0.1.tgz", + "integrity": "sha1-DakrEKhU6XwPSW9sKEWjASgLPu8=", + "dev": true, + "requires": { + "formatio": "1.2.0", + "just-extend": "1.1.22", + "lolex": "1.6.0", + "path-to-regexp": "1.7.0" + } + }, "no-case": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", @@ -5731,13 +5496,13 @@ "dev": true, "requires": { "hosted-git-info": "2.4.2", - "semver": "5.3.0" + "semver": "5.4.1" }, "dependencies": { "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true } } @@ -5752,7 +5517,7 @@ "graceful-fs": "4.1.11", "normalize-package-data": "2.3.8", "npm-package-arg": "4.2.1", - "npmlog": "4.1.0", + "npmlog": "4.1.2", "once": "1.4.0", "request": "2.79.0", "retry": "0.10.1", @@ -5760,6 +5525,15 @@ "slide": "1.1.6" } }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, "npmconf": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz", @@ -5789,9 +5563,9 @@ } }, "npmlog": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { "are-we-there-yet": "1.1.4", @@ -5870,12 +5644,6 @@ "wrappy": "1.0.2" } }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, "opn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", @@ -5982,6 +5750,27 @@ "os-tmpdir": "1.0.2" } }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, "pad-right": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", @@ -6121,6 +5910,12 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-object": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/path-object/-/path-object-2.3.0.tgz", @@ -6131,12 +5926,6 @@ "lodash.assign": "3.2.0" } }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, "path-to-regexp": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", @@ -6240,12 +6029,6 @@ "find-up": "1.1.2" } }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - }, "portfinder": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", @@ -6315,6 +6098,12 @@ "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", "dev": true }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, "public-encrypt": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", @@ -6346,6 +6135,12 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "q": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", + "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "dev": true + }, "qjobs": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", @@ -6499,17 +6294,6 @@ "set-immediate-shim": "1.0.1" } }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "mute-stream": "0.0.5" - } - }, "recast": { "version": "0.11.23", "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", @@ -6522,15 +6306,6 @@ "source-map": "0.5.6" } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "1.3.3" - } - }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -6751,31 +6526,12 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "resolve": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "dev": true, - "requires": { - "path-parse": "1.0.5" - } - }, "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": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, "retry": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", @@ -6816,15 +6572,6 @@ "inherits": "2.0.3" } }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, "run-auto": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/run-auto/-/run-auto-2.0.0.tgz", @@ -6846,6 +6593,15 @@ "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", "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": "3.1.2" + } + }, "safe-buffer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", @@ -6865,16 +6621,16 @@ "dev": true }, "semantic-release": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-6.3.6.tgz", - "integrity": "sha1-Yp0K7JCziilXpXpKnuEhSvUZKMc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-7.0.1.tgz", + "integrity": "sha512-M0kDAYWqax/Euq4Z6kq4UUbgizaiYeNfNFJ4j7lstzP82mv5E6yUi6n8j1TxFSyTMQoMELpctW7jDz9+bvGqww==", "dev": true, "requires": { "@semantic-release/commit-analyzer": "2.0.0", "@semantic-release/condition-travis": "5.0.2", "@semantic-release/error": "1.0.0", "@semantic-release/last-release-npm": "1.2.1", - "@semantic-release/release-notes-generator": "2.0.0", + "@semantic-release/release-notes-generator": "3.0.1", "git-head": "1.20.1", "github": "8.2.1", "lodash": "4.17.4", @@ -6882,12 +6638,12 @@ "nopt": "4.0.1", "normalize-package-data": "2.3.8", "npmconf": "2.1.2", - "npmlog": "4.1.0", + "npmlog": "4.1.2", "parse-github-repo-url": "1.4.0", "require-relative": "0.8.7", "run-auto": "2.0.0", "run-series": "1.1.4", - "semver": "5.3.0" + "semver": "5.4.1" }, "dependencies": { "nopt": { @@ -6901,9 +6657,9 @@ } }, "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true } } @@ -7012,17 +6768,21 @@ "inherits": "2.0.3" } }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "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": { - "glob": "7.1.2", - "interpret": "1.0.3", - "rechoir": "0.6.2" + "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", @@ -7030,19 +6790,28 @@ "dev": true }, "sinon": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.3.4.tgz", - "integrity": "sha1-RmrY0brobW21GqIYuS6Ze8Pl24g=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-3.2.0.tgz", + "integrity": "sha512-Jg2Bcp+X5L0d5bMQqQzMPMh/oZ/TwwcgbVG5Z4xRPxKYqWYw75O6m4LrEhrQdOE10RsoaEQMwTFNn4rHjTyKew==", "dev": true, "requires": { "diff": "3.2.0", "formatio": "1.2.0", - "lolex": "1.6.0", + "lolex": "2.1.2", "native-promise-only": "0.8.1", + "nise": "1.0.1", "path-to-regexp": "1.7.0", "samsam": "1.2.1", "text-encoding": "0.6.4", "type-detect": "4.0.3" + }, + "dependencies": { + "lolex": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.1.2.tgz", + "integrity": "sha1-JpS5U8nqTQE+W4v7qJHJkQJbJik=", + "dev": true + } } }, "slash": { @@ -7257,12 +7026,6 @@ } } }, - "source-list-map": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", - "integrity": "sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE=", - "dev": true - }, "source-map": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", @@ -7337,6 +7100,15 @@ "through": "2.3.8" } }, + "split2": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.1.1.tgz", + "integrity": "sha1-eh9VHhdqkOzTNF9yRqDP4XXvT9A=", + "dev": true, + "requires": { + "through2": "2.0.3" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -7458,6 +7230,12 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", @@ -7485,50 +7263,18 @@ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", - "slice-ansi": "0.0.4", - "string-width": "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 - }, - "string-width": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", - "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "tapable": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz", - "integrity": "sha1-IGvo4YiGC1FEJTdebxrom/sB/Y0=", - "dev": true - }, "text-encoding": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", "dev": true }, + "text-extensions": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.5.0.tgz", + "integrity": "sha1-0cstFLXQvEW/3Kigikc/aMfrDLw=", + "dev": true + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -7547,6 +7293,16 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.2.11", + "xtend": "4.0.1" + } + }, "timers-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", @@ -7600,13 +7356,14 @@ "requires": { "github": "0.1.16", "lodash": "1.3.1", - "request": "2.74.0" + "request": "2.74.0", + "underscore.string": "2.2.1" }, "dependencies": { "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", "dev": true, "requires": { "lodash": "4.17.4" @@ -7626,7 +7383,7 @@ "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", "dev": true, "requires": { - "async": "2.4.1", + "async": "2.5.0", "combined-stream": "1.0.5", "mime-types": "2.1.15" } @@ -7705,6 +7462,12 @@ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", "dev": true }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -7784,6 +7547,46 @@ "dev": true, "optional": true }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.6", + "uglify-js": "2.8.29", + "webpack-sources": "1.0.1" + }, + "dependencies": { + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "webpack-sources": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.5.6" + } + } + } + }, "uid-number": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz", @@ -7802,6 +7605,12 @@ "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", "dev": true }, + "underscore.string": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", + "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -7850,15 +7659,6 @@ } } }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, "useragent": { "version": "2.1.13", "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.1.13.tgz", @@ -7953,28 +7753,6 @@ "foreachasync": "3.0.0" } }, - "watchpack": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", - "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=", - "dev": true, - "requires": { - "async": "2.4.1", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" - }, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - } - } - }, "wbuf": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", @@ -7985,127 +7763,281 @@ } }, "webpack": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.6.1.tgz", - "integrity": "sha1-LgRX8KuxrF3zqxBsacZy8jZ4Xwc=", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.5.4.tgz", + "integrity": "sha1-VYPrJj7Se3i1vRe/37DrGxzRv4E=", "dev": true, "requires": { "acorn": "5.0.3", "acorn-dynamic-import": "2.0.2", - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "async": "2.4.1", - "enhanced-resolve": "3.1.0", + "ajv": "5.2.2", + "ajv-keywords": "2.1.0", + "async": "2.5.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", "interpret": "1.0.3", "json-loader": "0.5.4", "json5": "0.5.1", "loader-runner": "2.3.0", - "loader-utils": "0.2.17", + "loader-utils": "1.1.0", "memory-fs": "0.4.1", "mkdirp": "0.5.1", "node-libs-browser": "2.0.0", "source-map": "0.5.6", - "supports-color": "3.2.3", - "tapable": "0.2.6", - "uglify-js": "2.8.28", - "watchpack": "1.3.1", - "webpack-sources": "0.2.3", - "yargs": "6.6.0" + "supports-color": "4.2.1", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.0.1", + "yargs": "8.0.2" }, "dependencies": { + "ajv": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", + "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", + "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", "dev": true, "requires": { "lodash": "4.17.4" } }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } } }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", "dev": true, "requires": { - "has-flag": "1.0.0" + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" } }, - "uglify-js": { - "version": "2.8.28", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.28.tgz", - "integrity": "sha512-WqKNbmNJKzIdIEQu/U2ytgGBbhCy2PVks94GoetczOAJ/zCgVu2CuO7gguI5KPFGPtUtI1dmPQl6h0D4cPzypA==", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "locate-path": "2.0.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.3.8", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "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" }, "dependencies": { - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "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 + }, + "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": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" + "ansi-regex": "3.0.0" } } } }, + "supports-color": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "dev": true + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "dev": true, + "requires": { + "async": "2.5.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "webpack-sources": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.5.6" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "dev": true, "requires": { - "camelcase": "3.0.0", + "camelcase": "4.1.0", "cliui": "3.2.0", "decamelize": "1.2.0", "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", "require-directory": "2.1.1", "require-main-filename": "1.0.1", "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", "y18n": "3.2.1", - "yargs-parser": "4.2.1" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - } + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" } } } @@ -8196,16 +8128,6 @@ } } }, - "webpack-sources": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", - "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=", - "dev": true, - "requires": { - "source-list-map": "1.1.2", - "source-map": "0.5.6" - } - }, "websocket-driver": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", @@ -8328,12 +8250,17 @@ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, + "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.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, - "optional": true, "requires": { "camelcase": "1.2.1", "cliui": "2.1.0", diff --git a/package.json b/package.json index bc9b6af..af06b81 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "ng-select-all-on-focus": "^1.0.3", "phantomjs-prebuilt": "^2.1.8", "publish-latest": "^1.1.2", - "semantic-release": "^6.0.0", + "semantic-release": "^7.0.1", "sinon": "^3.0.0", "webpack": "^3.0.0", "webpack-dev-server": "^2.4.5" From c211043f2f1494974afbc0c978eeceb023e65e4b Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Fri, 18 Aug 2017 14:44:02 -0500 Subject: [PATCH 058/159] chore(ci): run ci on multiple browsers (#150) - switch from npm to yarn - ci will now run on Chrome and Firefox --- .gitignore | 1 + .travis.yml | 25 +- bower.json | 3 +- karma.ci.conf.js | 46 + karma.conf.js | 8 +- package-lock.json | 8304 --------------------------------------------- package.json | 10 +- yarn.lock | 5749 +++++++++++++++++++++++++++++++ 8 files changed, 5823 insertions(+), 8323 deletions(-) create mode 100644 karma.ci.conf.js delete mode 100644 package-lock.json create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index ef669ae..3cb8f68 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ bower_components/ dist/ coverage/ npm-debug.log +package-lock.json diff --git a/.travis.yml b/.travis.yml index 884efe5..7c97397 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,22 +2,29 @@ sudo: false language: node_js node_js: node cache: + yarn: true directories: - node_modules branches: only: - master - /^greenkeeper/.*$/ +addons: + firefox: latest + apt: + sources: + - google-chrome + packages: + - google-chrome-stable before_install: - - npm install -g greenkeeper-lockfile@1 -before_script: - - npm prune - - greenkeeper-lockfile-update + - yarn global add greenkeeper-lockfile@1 +before_script: greenkeeper-lockfile-update script: - - npm run test -after_script: - - greenkeeper-lockfile-upload + - yarn run lint + - xvfb-run yarn run test:sauce + - yarn run test +after_script: greenkeeper-lockfile-upload after_success: - - npm run semantic-release + - yarn run semantic-release notifications: - email: false + email: change diff --git a/bower.json b/bower.json index ed7c7a2..7746b91 100644 --- a/bower.json +++ b/bower.json @@ -18,8 +18,7 @@ "**/.*", "node_modules", "bower_components", - "test", - "tests" + "test" ], "devDependencies": { "angular": ">=1.3.4" diff --git a/karma.ci.conf.js b/karma.ci.conf.js new file mode 100644 index 0000000..d1c96da --- /dev/null +++ b/karma.ci.conf.js @@ -0,0 +1,46 @@ +const webpackConfig = require('./webpack.test.config.js'); + +module.exports = function(config) { + const karmaConfig = { + basePath: '', + + frameworks: [ + 'jasmine', + 'sinon' + ], + + files: [ + 'test/index.js' + ], + + preprocessors: { + 'test/index.js': ['webpack', 'sourcemap'] + }, + + webpack: webpackConfig, + + webpackMiddleware: { + noInfo: true + }, + + reporters: ['spec'], + + port: 9876, + + colors: true, + + logLevel: config.LOG_INFO, + + browsers: [ + 'Chrome', + 'Firefox' + ], + + captureTimeout: 0, + browserNoActivityTimeout: 120000, + + singleRun: true + }; + + config.set(karmaConfig); +}; diff --git a/karma.conf.js b/karma.conf.js index 2705c11..a340b37 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -14,8 +14,7 @@ module.exports = function(config) { ], preprocessors: { - 'test/index.js': ['webpack', 'sourcemap'], - 'src/**/*.js': ['coverage'] + 'test/index.js': ['webpack', 'sourcemap'] }, webpack: webpackConfig, @@ -44,10 +43,7 @@ module.exports = function(config) { browsers: ['PhantomJS'], - captureTimeout: 60000, - browserDisconnectTimeout: 7000, - browserDisconnectTolerance: 1, - browserDisconnectNoActivityTimeout: 60000, + browserNoActivityTimeout: 120000, singleRun: false }); diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index a6343d5..0000000 --- a/package-lock.json +++ /dev/null @@ -1,8304 +0,0 @@ -{ - "name": "ng-currency", - "version": "0.0.0-semantically-released.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@semantic-release/commit-analyzer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-2.0.0.tgz", - "integrity": "sha1-kk0eLDAWfGpHK+2fZu6Pjgd0ibI=", - "dev": true, - "requires": { - "conventional-changelog": "0.0.17" - } - }, - "@semantic-release/condition-travis": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/condition-travis/-/condition-travis-5.0.2.tgz", - "integrity": "sha1-9Lt3emxttVZdcHVKm2KSM71KZZc=", - "dev": true, - "requires": { - "@semantic-release/error": "1.0.0", - "semver": "5.4.1", - "travis-deploy-once": "1.0.0-node-0.10-support" - }, - "dependencies": { - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - } - } - }, - "@semantic-release/error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-1.0.0.tgz", - "integrity": "sha1-u4+O7t1cf4xG+Ws37znhuMN2wcw=", - "dev": true - }, - "@semantic-release/last-release-npm": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@semantic-release/last-release-npm/-/last-release-npm-1.2.1.tgz", - "integrity": "sha1-/3SBQuzxU1S4M6hroYIF9/zllO4=", - "dev": true, - "requires": { - "@semantic-release/error": "1.0.0", - "npm-registry-client": "7.5.0", - "npmlog": "1.2.1" - }, - "dependencies": { - "are-we-there-yet": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", - "integrity": "sha1-otKMkxAqpsyWJFomy5VN4G7FPww=", - "dev": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.11" - } - }, - "gauge": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", - "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", - "dev": true, - "requires": { - "ansi": "0.3.1", - "has-unicode": "2.0.1", - "lodash.pad": "4.5.1", - "lodash.padend": "4.6.1", - "lodash.padstart": "4.6.1" - } - }, - "npmlog": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", - "integrity": "sha1-KOe+YZYJtT960d0wChDWTXFiaLY=", - "dev": true, - "requires": { - "ansi": "0.3.1", - "are-we-there-yet": "1.0.6", - "gauge": "1.2.7" - } - } - } - }, - "@semantic-release/release-notes-generator": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-3.0.1.tgz", - "integrity": "sha512-7KpT3eKOWf6Sd+3vWJgbBEdMKbqgsLiDNq+U0EwEadKdbTxaxDtSWYixw0S8Kd+0jv5CvmMpHxac5jTV3f54Xg==", - "dev": true, - "requires": { - "conventional-changelog": "1.1.4", - "github-url-from-git": "1.5.0" - }, - "dependencies": { - "conventional-changelog": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.4.tgz", - "integrity": "sha1-EIvHUMKjF+IA4vm0E8qqH4x++js=", - "dev": true, - "requires": { - "conventional-changelog-angular": "1.4.0", - "conventional-changelog-atom": "0.1.1", - "conventional-changelog-codemirror": "0.1.0", - "conventional-changelog-core": "1.9.0", - "conventional-changelog-ember": "0.2.6", - "conventional-changelog-eslint": "0.1.0", - "conventional-changelog-express": "0.1.0", - "conventional-changelog-jquery": "0.1.0", - "conventional-changelog-jscs": "0.1.0", - "conventional-changelog-jshint": "0.1.0" - } - } - } - }, - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true - }, - "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "dev": true, - "requires": { - "mime-types": "2.1.15", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", - "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=", - "dev": true - }, - "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", - "dev": true, - "requires": { - "acorn": "4.0.13" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } - } - }, - "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 - } - } - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true - }, - "agent-base": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", - "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", - "dev": true, - "requires": { - "extend": "3.0.1", - "semver": "5.0.3" - }, - "dependencies": { - "semver": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", - "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", - "dev": true - } - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "angular": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/angular/-/angular-1.6.4.tgz", - "integrity": "sha1-A7exXAGggC1+LPWTJA5gQFTcd/s=", - "dev": true - }, - "angular-mocks": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.6.4.tgz", - "integrity": "sha1-R/31CSHPJPtInxAKjPKtmdBTj0A=", - "dev": true - }, - "ansi": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", - "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", - "dev": true - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "dev": true, - "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11" - } - }, - "aproba": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", - "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.11" - } - }, - "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" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.0.3" - } - }, - "arr-flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", - "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "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=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", - "dev": true, - "requires": { - "bn.js": "4.11.6", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - } - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "author-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-0.2.1.tgz", - "integrity": "sha1-i976rGBlqTF5m+wH7u9RuUDgjzw=", - "dev": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true - }, - "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.1" - } - }, - "babel-core": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.3", - "convert-source-map": "1.5.0", - "debug": "2.6.8", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "slash": "1.0.0", - "source-map": "0.5.6" - } - }, - "babel-generator": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.6", - "trim-right": "1.0.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-define-map": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", - "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "lodash": "4.17.4" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", - "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "lodash": "4.17.4" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, - "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-loader": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.0.0.tgz", - "integrity": "sha1-LkOma+4f/0RwUz0EAsikUy+vuvc=", - "dev": true, - "requires": { - "find-cache-dir": "0.1.1", - "loader-utils": "1.1.0", - "mkdirp": "0.5.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", - "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "lodash": "4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, - "requires": { - "babel-helper-define-map": "6.24.1", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", - "regexpu-core": "2.0.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", - "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", - "dev": true, - "requires": { - "regenerator-transform": "0.9.11" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-polyfill": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "core-js": "2.4.1", - "regenerator-runtime": "0.10.5" - } - }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.24.1", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.24.1" - } - }, - "babel-register": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", - "dev": true, - "requires": { - "babel-core": "6.25.0", - "babel-runtime": "6.23.0", - "core-js": "2.4.1", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.15" - } - }, - "babel-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", - "dev": true, - "requires": { - "core-js": "2.4.1", - "regenerator-runtime": "0.10.5" - } - }, - "babel-template": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.3", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "babylon": "6.17.3", - "debug": "2.6.8", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.17.3", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.3.tgz", - "integrity": "sha512-mq0x3HCAGGmQyZXviOVe5TRsw37Ijy3D43jCqt/9WVf+onx2dUgW3PosnqCbScAFhRO9DGs8nxoMzU0iiosMqQ==", - "dev": true - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, - "base64-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", - "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", - "dev": true - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, - "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", - "dev": true - }, - "binary-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", - "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", - "dev": true - }, - "bl": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=", - "dev": true, - "requires": { - "readable-stream": "2.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", - "dev": true - }, - "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", - "dev": true - }, - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true - }, - "body-parser": { - "version": "1.17.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", - "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", - "dev": true, - "requires": { - "bytes": "2.4.0", - "content-type": "1.0.2", - "debug": "2.6.7", - "depd": "1.1.0", - "http-errors": "1.6.1", - "iconv-lite": "0.4.15", - "on-finished": "2.3.0", - "qs": "6.4.0", - "raw-body": "2.2.0", - "type-is": "1.6.15" - }, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", - "dev": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.3", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", - "dev": true, - "requires": { - "browserify-aes": "1.0.6", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.0" - } - }, - "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", - "dev": true, - "requires": { - "cipher-base": "1.0.3", - "des.js": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "4.11.6", - "randombytes": "2.0.5" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "4.11.6", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" - } - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true, - "requires": { - "pako": "0.2.9" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "1.2.0", - "ieee754": "1.1.8", - "isarray": "1.0.0" - } - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", - "dev": true - }, - "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" - } - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "2.3.1", - "upper-case": "1.1.3" - } - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "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" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "1.3.0", - "async-each": "1.0.1", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "cipher-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", - "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "circular-json": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", - "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", - "dev": true - }, - "clean-css": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.3.tgz", - "integrity": "sha1-B8/omA7bINRV3cI6rc8eBMblCc4=", - "dev": true, - "requires": { - "source-map": "0.5.6" - } - }, - "cli-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "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=", - "dev": true - }, - "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "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 - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combine-lists": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", - "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "compare-func": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", - "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", - "dev": true, - "requires": { - "array-ify": "1.0.0", - "dot-prop": "3.0.0" - } - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, - "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, - "compressible": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.10.tgz", - "integrity": "sha1-/tocf3YXkScyspv4zyYlKiC57s0=", - "dev": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "compression": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.6.2.tgz", - "integrity": "sha1-zOsSHsydCcUtetDDNQ6pPd1AK8M=", - "dev": true, - "requires": { - "accepts": "1.3.3", - "bytes": "2.3.0", - "compressible": "2.0.10", - "debug": "2.2.0", - "on-headers": "1.0.1", - "vary": "1.1.1" - }, - "dependencies": { - "bytes": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.3.0.tgz", - "integrity": "sha1-1baAoWW2IBc5rLYRVCqrwtjOsHA=", - "dev": true - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.2.11", - "typedarray": "0.0.6" - } - }, - "config-chain": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", - "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", - "dev": true, - "requires": { - "ini": "1.3.4", - "proto-list": "1.2.4" - } - }, - "connect": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz", - "integrity": "sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=", - "dev": true, - "requires": { - "debug": "2.6.7", - "finalhandler": "1.0.3", - "parseurl": "1.3.1", - "utils-merge": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "connect-history-api-fallback": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", - "integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "0.1.4" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", - "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", - "dev": true - }, - "conventional-changelog": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-0.0.17.tgz", - "integrity": "sha1-XgIWYA9GhhkPDILvuws90RtJzjQ=", - "dev": true, - "requires": { - "dateformat": "1.0.12", - "event-stream": "3.3.4", - "github-url-from-git": "1.5.0", - "lodash": "3.10.1", - "normalize-package-data": "1.0.3" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, - "normalize-package-data": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-1.0.3.tgz", - "integrity": "sha1-i+lVuJB6+XXxpFhOqLubQUkjEvU=", - "dev": true, - "requires": { - "github-url-from-git": "1.5.0", - "github-url-from-username-repo": "1.0.2", - "semver": "4.3.6" - } - } - } - }, - "conventional-changelog-angular": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.4.0.tgz", - "integrity": "sha512-ukKX22lJl9ewogze1hKbBuff/dGMG2uyGpOhhw0ehhlv6GtdeCxj51YfGOZ5qC89WwsHT7SDXFzBKidwH3pwmQ==", - "dev": true, - "requires": { - "compare-func": "1.3.2", - "github-url-from-git": "1.5.0", - "q": "1.5.0", - "read-pkg-up": "2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "2.3.0" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.3.8", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - } - } - } - }, - "conventional-changelog-atom": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-0.1.1.tgz", - "integrity": "sha512-6Nlu/+MiD4gi7k3Z+N1vMJWpaPSdvFPWzPGnH4OXewHAxiAl0L/TT9CGgA01fosPxmYr4hMNtD7kyN0tkg8vIA==", - "dev": true, - "requires": { - "q": "1.5.0" - } - }, - "conventional-changelog-codemirror": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.1.0.tgz", - "integrity": "sha1-dXelkdv5tTjnoVCn7mL2WihyszQ=", - "dev": true, - "requires": { - "q": "1.5.0" - } - }, - "conventional-changelog-core": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-1.9.0.tgz", - "integrity": "sha1-3l37wJGEdlZQjUo4njXJobxJ5/Q=", - "dev": true, - "requires": { - "conventional-changelog-writer": "1.4.1", - "conventional-commits-parser": "1.3.0", - "dateformat": "1.0.12", - "get-pkg-repo": "1.4.0", - "git-raw-commits": "1.2.0", - "git-remote-origin-url": "2.0.0", - "git-semver-tags": "1.2.1", - "lodash": "4.17.4", - "normalize-package-data": "2.3.8", - "q": "1.5.0", - "read-pkg": "1.1.0", - "read-pkg-up": "1.0.1", - "through2": "2.0.3" - } - }, - "conventional-changelog-ember": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.2.6.tgz", - "integrity": "sha1-i3NVQZ9RJ0k8TFYkc6svx5LxwrY=", - "dev": true, - "requires": { - "q": "1.5.0" - } - }, - "conventional-changelog-eslint": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-0.1.0.tgz", - "integrity": "sha1-pSQR6ZngUBzlALhWsKZD0DMJB+I=", - "dev": true, - "requires": { - "q": "1.5.0" - } - }, - "conventional-changelog-express": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-0.1.0.tgz", - "integrity": "sha1-VcbIQcgRliA2wDe9vZZKVK4xD84=", - "dev": true, - "requires": { - "q": "1.5.0" - } - }, - "conventional-changelog-jquery": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz", - "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=", - "dev": true, - "requires": { - "q": "1.5.0" - } - }, - "conventional-changelog-jscs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz", - "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=", - "dev": true, - "requires": { - "q": "1.5.0" - } - }, - "conventional-changelog-jshint": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-0.1.0.tgz", - "integrity": "sha1-AMq46aMxdIer2UxNhGcTQpGNKgc=", - "dev": true, - "requires": { - "compare-func": "1.3.2", - "q": "1.5.0" - } - }, - "conventional-changelog-writer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-1.4.1.tgz", - "integrity": "sha1-P0y00APrtWmJ0w00WJO1KkNjnI4=", - "dev": true, - "requires": { - "compare-func": "1.3.2", - "conventional-commits-filter": "1.0.0", - "dateformat": "1.0.12", - "handlebars": "4.0.10", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.4", - "meow": "3.7.0", - "semver": "5.4.1", - "split": "1.0.1", - "through2": "2.0.3" - }, - "dependencies": { - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "requires": { - "through": "2.3.8" - } - } - } - }, - "conventional-commit-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-2.1.0.tgz", - "integrity": "sha1-RdhgOGyaLmU37pHYobYb0EEbPQQ=", - "dev": true - }, - "conventional-commits-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.0.0.tgz", - "integrity": "sha1-b8KmWTcrw/IznPn//34bA0S5MDk=", - "dev": true, - "requires": { - "is-subset": "0.1.1", - "modify-values": "1.0.0" - } - }, - "conventional-commits-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-1.3.0.tgz", - "integrity": "sha1-4ye1MZThp61dxjR57pCZpSsCSGU=", - "dev": true, - "requires": { - "is-text-path": "1.0.1", - "JSONStream": "1.3.1", - "lodash": "4.17.4", - "meow": "3.7.0", - "split2": "2.1.1", - "through2": "2.0.3", - "trim-off-newlines": "1.0.1" - } - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true - }, - "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=", - "dev": true - }, - "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", - "dev": true, - "requires": { - "bn.js": "4.11.6", - "elliptic": "6.4.0" - } - }, - "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", - "dev": true, - "requires": { - "cipher-base": "1.0.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.8" - } - }, - "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", - "dev": true, - "requires": { - "cipher-base": "1.0.3", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.0.1", - "sha.js": "2.4.8" - } - }, - "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.2.14" - }, - "dependencies": { - "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" - } - } - } - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.10.1" - } - }, - "crypto-browserify": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", - "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=", - "dev": true, - "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.12", - "public-encrypt": "4.0.0", - "randombytes": "2.0.5" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "1.0.2" - } - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", - "dev": true - }, - "cz-conventional-changelog": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.0.0.tgz", - "integrity": "sha1-Val5r9/pXnAkh50qD1kkYwFwtTM=", - "dev": true, - "requires": { - "conventional-commit-types": "2.1.0", - "lodash.map": "4.6.0", - "longest": "1.0.1", - "pad-right": "0.2.2", - "right-pad": "1.0.1", - "word-wrap": "1.2.3" - } - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "0.10.23" - } - }, - "dargs": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", - "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true, - "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "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 - }, - "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.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "depd": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", - "dev": true - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", - "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", - "dev": true - }, - "dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", - "dev": true, - "requires": { - "asap": "2.0.6", - "wrappy": "1.0.2" - } - }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", - "dev": true, - "requires": { - "bn.js": "4.11.6", - "miller-rabin": "4.0.0", - "randombytes": "2.0.5" - } - }, - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true, - "requires": { - "custom-event": "1.0.1", - "ent": "2.2.0", - "extend": "3.0.1", - "void-elements": "2.0.1" - } - }, - "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", - "dev": true - }, - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", - "dev": true, - "requires": { - "is-obj": "1.0.1" - } - }, - "dox": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/dox/-/dox-0.6.1.tgz", - "integrity": "sha1-gkcHWtSydf6I+7rgL+EvPFSAp/0=", - "dev": true, - "requires": { - "commander": "0.6.1", - "jsdoctypeparser": "1.2.0", - "marked": "0.3.6" - }, - "dependencies": { - "commander": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", - "dev": true - } - } - }, - "doxme": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/doxme/-/doxme-1.8.2.tgz", - "integrity": "sha1-jcPEo4aCpOlqcuACnqrVwaNUZEI=", - "dev": true, - "requires": { - "concat-stream": "1.6.0", - "markdown-table": "0.3.2", - "minimist": "1.2.0", - "repo-path-parse": "1.0.1", - "striptags": "2.2.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true, - "requires": { - "bn.js": "4.11.6", - "brorand": "1.1.0", - "hash.js": "1.0.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", - "dev": true - }, - "engine.io": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", - "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", - "dev": true, - "requires": { - "accepts": "1.3.3", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "ws": "1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "engine.io-client": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", - "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parsejson": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "1.1.2", - "xmlhttprequest-ssl": "1.5.3", - "yeast": "0.1.2" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "engine.io-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", - "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", - "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary": "0.1.7", - "wtf-8": "1.0.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true, - "requires": { - "prr": "0.0.0" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es5-ext": { - "version": "0.10.23", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.23.tgz", - "integrity": "sha1-dXi1G+l0IHpUh4IbVlOMIk5Oezg=", - "dev": true, - "requires": { - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" - } - }, - "es6-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.23", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.23", - "es6-iterator": "2.0.1", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-promise": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz", - "integrity": "sha1-eILzCt3lskDM+n99eMVIMwlRrkI=", - "dev": true - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.23", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.23" - } - }, - "es6-templates": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", - "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", - "dev": true, - "requires": { - "recast": "0.11.23", - "through": "2.3.8" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.23", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "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 - }, - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, - "requires": { - "esprima": "2.7.3", - "estraverse": "1.9.3", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.2.0" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.1.0", - "estraverse": "4.2.0" - } - }, - "eslint": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.4.1.tgz", - "integrity": "sha1-mc1+r8/8ov+Zpcj18qR01jZLS9M=", - "dev": true, - "requires": { - "ajv": "5.2.2", - "babel-code-frame": "6.22.0", - "chalk": "1.1.3", - "concat-stream": "1.6.0", - "cross-spawn": "5.1.0", - "debug": "2.6.8", - "doctrine": "2.0.0", - "eslint-scope": "3.7.1", - "espree": "3.5.0", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.3", - "imurmurhash": "0.1.4", - "inquirer": "3.2.1", - "is-resolvable": "1.0.0", - "js-yaml": "3.9.1", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "4.0.0", - "progress": "2.0.0", - "require-uncached": "1.0.3", - "semver": "5.4.1", - "strip-json-comments": "2.0.1", - "table": "4.0.1", - "text-table": "0.2.0" - }, - "dependencies": { - "acorn": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", - "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==", - "dev": true - }, - "ajv": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", - "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-escapes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", - "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "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.0" - } - }, - "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" - } - }, - "espree": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz", - "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", - "dev": true, - "requires": { - "acorn": "5.1.1", - "acorn-jsx": "3.0.1" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "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" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "inquirer": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.1.tgz", - "integrity": "sha512-QgW3eiPN8gpj/K5vVpHADJJgrrF0ho/dZGylikGX7iqAdRgC9FVKYKWFLx6hZDBFcOLEoSqINYrVPeFAeG/PdA==", - "dev": true, - "requires": { - "ansi-escapes": "2.0.0", - "chalk": "2.1.0", - "cli-cursor": "2.1.0", - "cli-width": "2.1.0", - "external-editor": "2.0.4", - "figures": "2.0.0", - "lodash": "4.17.4", - "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": { - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" - } - } - } - }, - "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 - }, - "js-yaml": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz", - "integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "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.1.0" - } - }, - "pluralize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", - "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=", - "dev": true - }, - "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", - "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" - } - }, - "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 - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "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" - } - }, - "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - }, - "table": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", - "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", - "slice-ansi": "0.0.4", - "string-width": "2.1.1" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - } - } - } - } - }, - "eslint-config-google": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.8.1.tgz", - "integrity": "sha512-pVRvIPElH6JivuOsvnMKIWhX3JCJNOZnY7f0G5dX43ha4ZL4KI7P2dOiPqfD+Pkft1TJSbm7SuTmEx0SpvFCxQ==", - "dev": true - }, - "eslint-loader": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.7.1.tgz", - "integrity": "sha1-ULFY3WJy3O+5fphCVIN/gaWALOA=", - "dev": true, - "requires": { - "find-cache-dir": "0.1.1", - "loader-fs-cache": "1.0.1", - "loader-utils": "1.1.0", - "object-assign": "4.1.1", - "object-hash": "1.1.8", - "rimraf": "2.6.1" - } - }, - "eslint-plugin-jasmine": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.2.0.tgz", - "integrity": "sha1-cTWHk4PDmmZ8ch0wK58g8DiVQ94=", - "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.1.0", - "estraverse": "4.2.0" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", - "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=", - "dev": true, - "requires": { - "estraverse": "4.1.1", - "object-assign": "4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", - "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=", - "dev": true - } - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "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.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", - "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", - "dev": true - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.23" - } - }, - "event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "dev": true, - "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", - "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" - } - }, - "eventemitter3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true, - "requires": { - "original": "1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", - "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", - "dev": true, - "requires": { - "create-hash": "1.1.3" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "expand-braces": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", - "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", - "dev": true, - "requires": { - "array-slice": "0.2.3", - "array-unique": "0.2.1", - "braces": "0.1.5" - }, - "dependencies": { - "braces": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", - "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "dev": true, - "requires": { - "expand-range": "0.1.1" - } - }, - "expand-range": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", - "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", - "dev": true, - "requires": { - "is-number": "0.1.1", - "repeat-string": "0.2.2" - } - }, - "is-number": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", - "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", - "dev": true - }, - "repeat-string": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", - "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", - "dev": true - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "2.2.3" - } - }, - "express": { - "version": "4.15.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", - "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", - "dev": true, - "requires": { - "accepts": "1.3.3", - "array-flatten": "1.1.1", - "content-disposition": "0.5.2", - "content-type": "1.0.2", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.7", - "depd": "1.1.0", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.0", - "finalhandler": "1.0.3", - "fresh": "0.5.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.4", - "qs": "6.4.0", - "range-parser": "1.2.0", - "send": "0.15.3", - "serve-static": "1.12.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1", - "type-is": "1.6.15", - "utils-merge": "1.0.0", - "vary": "1.1.1" - }, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "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=", - "dev": true - } - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "external-editor": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", - "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", - "dev": true, - "requires": { - "iconv-lite": "0.4.18", - "jschardet": "1.5.1", - "tmp": "0.0.31" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==", - "dev": true - } - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "extract-zip": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", - "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=", - "dev": true, - "requires": { - "concat-stream": "1.5.0", - "debug": "0.7.4", - "mkdirp": "0.5.0", - "yauzl": "2.4.1" - }, - "dependencies": { - "concat-stream": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", - "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.0.6", - "typedarray": "0.0.6" - } - }, - "debug": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", - "dev": true - }, - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true - }, - "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=", - "dev": true - }, - "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 - }, - "fastparse": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", - "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": "0.6.5" - } - }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true, - "requires": { - "pend": "1.2.0" - } - }, - "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.2.2", - "object-assign": "4.1.1" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "finalhandler": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", - "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", - "dev": true, - "requires": { - "debug": "2.6.7", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.1", - "statuses": "1.3.1", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "flat-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", - "dev": true, - "requires": { - "circular-json": "0.3.1", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" - } - }, - "follow-redirects": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", - "dev": true, - "requires": { - "debug": "2.6.8", - "stream-consume": "0.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true, - "requires": { - "samsam": "1.2.1" - } - }, - "forwarded": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", - "dev": true - }, - "fresh": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", - "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", - "dev": true - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "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=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "1.1.2", - "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" - } - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "1.0.2" - } - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-pkg-repo": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", - "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", - "dev": true, - "requires": { - "hosted-git-info": "2.4.2", - "meow": "3.7.0", - "normalize-package-data": "2.3.8", - "parse-github-repo-url": "1.4.0", - "through2": "2.0.3" - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "git-head": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/git-head/-/git-head-1.20.1.tgz", - "integrity": "sha1-A20WpLN0lJ5OPa8VgnkDaG08zVI=", - "dev": true, - "requires": { - "git-refs": "1.1.3" - } - }, - "git-raw-commits": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.2.0.tgz", - "integrity": "sha1-DzqL/ZmuDy2LkiTViJKXXppS0Dw=", - "dev": true, - "requires": { - "dargs": "4.1.0", - "lodash.template": "4.4.0", - "meow": "3.7.0", - "split2": "2.1.1", - "through2": "2.0.3" - } - }, - "git-refs": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/git-refs/-/git-refs-1.1.3.tgz", - "integrity": "sha1-gwl8s6klhcSkkm7FTiGC354g6J0=", - "dev": true, - "requires": { - "path-object": "2.3.0", - "slash": "1.0.0", - "walk": "2.3.9" - } - }, - "git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", - "dev": true, - "requires": { - "gitconfiglocal": "1.0.0", - "pify": "2.3.0" - } - }, - "git-semver-tags": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.2.1.tgz", - "integrity": "sha512-fFyxtzTHCTQKwB4clA2AInVrlflBbVbbJD4NWwmxKXHUgsU/K9kmHNlkPLqFiuy9xu9q3lNopghR4VXeQwZbTQ==", - "dev": true, - "requires": { - "meow": "3.7.0", - "semver": "5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - } - } - }, - "gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", - "dev": true, - "requires": { - "ini": "1.3.4" - } - }, - "github": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/github/-/github-8.2.1.tgz", - "integrity": "sha1-YWsiEfvNHMhjFmmu1nZT5i61OBY=", - "dev": true, - "requires": { - "follow-redirects": "0.0.7", - "https-proxy-agent": "1.0.0", - "mime": "1.3.6", - "netrc": "0.1.4" - } - }, - "github-url-from-git": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/github-url-from-git/-/github-url-from-git-1.5.0.tgz", - "integrity": "sha1-+YX+3MCpqledyI16/waNVcxiUaA=", - "dev": true - }, - "github-url-from-username-repo": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/github-url-from-username-repo/-/github-url-from-username-repo-1.0.2.tgz", - "integrity": "sha1-fdeTMNKr5pwQws73lxTJchV5Hfo=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "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" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", - "dev": true - }, - "handlebars": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", - "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", - "dev": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.28" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - }, - "uglify-js": { - "version": "2.8.28", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.28.tgz", - "integrity": "sha512-WqKNbmNJKzIdIEQu/U2ytgGBbhCy2PVks94GoetczOAJ/zCgVu2CuO7gguI5KPFGPtUtI1dmPQl6h0D4cPzypA==", - "dev": true, - "optional": true, - "requires": { - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", - "dev": true, - "optional": true - } - } - } - } - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "commander": "2.9.0", - "is-my-json-valid": "2.16.0", - "pinkie-promise": "2.0.1" - } - }, - "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-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", - "dev": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "hash.js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", - "integrity": "sha1-EzL/ABVsCg/92CNgE9B7d6BFFXM=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "hasha": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", - "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", - "dev": true, - "requires": { - "is-stream": "1.1.0", - "pinkie-promise": "2.0.1" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "1.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "hosted-git-info": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", - "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "obuf": "1.1.1", - "readable-stream": "2.2.11", - "wbuf": "1.7.2" - } - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "html-loader": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.1.tgz", - "integrity": "sha512-RxokXoxcsRSWcN553Ew+K0TUo68gQfmddTuUIZ4xRD8Ax1xXzX2UYQ3FC3D5MoRPGAdL1erWKeEFihDrrdxHiA==", - "dev": true, - "requires": { - "es6-templates": "0.2.3", - "fastparse": "1.1.1", - "html-minifier": "3.5.2", - "loader-utils": "1.1.0", - "object-assign": "4.1.1" - } - }, - "html-minifier": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.2.tgz", - "integrity": "sha1-1zvD/0SJQkCIGM5gm/P7DqfvTrc=", - "dev": true, - "requires": { - "camel-case": "3.0.0", - "clean-css": "4.1.3", - "commander": "2.9.0", - "he": "1.1.1", - "ncname": "1.0.0", - "param-case": "2.1.1", - "relateurl": "0.2.7", - "uglify-js": "3.0.15" - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", - "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", - "dev": true, - "requires": { - "depd": "1.1.0", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - } - }, - "http-proxy": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", - "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", - "dev": true, - "requires": { - "eventemitter3": "1.2.0", - "requires-port": "1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", - "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", - "dev": true, - "requires": { - "http-proxy": "1.16.2", - "is-glob": "3.1.0", - "lodash": "4.17.4", - "micromatch": "2.3.11" - }, - "dependencies": { - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.1" - } - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", - "dev": true - }, - "https-proxy-agent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", - "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", - "dev": true, - "requires": { - "agent-base": "2.1.1", - "debug": "2.6.8", - "extend": "3.0.1" - } - }, - "iconv-lite": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", - "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", - "dev": true - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", - "dev": true - }, - "ignore": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", - "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "dev": true - }, - "interpret": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", - "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", - "dev": true - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, - "requires": { - "loose-envify": "1.3.1" - } - }, - "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=", - "dev": true - }, - "ipaddr.js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", - "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "1.8.0" - } - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "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=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-my-json-valid": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", - "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", - "dev": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "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.0" - } - }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true, - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true, - "requires": { - "tryit": "1.0.3" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-subset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", - "dev": true - }, - "is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", - "dev": true, - "requires": { - "text-extensions": "1.5.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", - "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "isparta": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isparta/-/isparta-4.0.0.tgz", - "integrity": "sha1-HekZlvSAsi3LGsqFECVbrhV0RG4=", - "dev": true, - "requires": { - "babel-core": "6.25.0", - "escodegen": "1.8.1", - "esprima": "2.7.3", - "istanbul": "0.4.5", - "mkdirp": "0.5.1", - "nomnomnomnom": "2.0.1", - "object-assign": "4.1.1", - "source-map": "0.5.6", - "which": "1.2.14" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - } - } - }, - "isparta-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isparta-loader/-/isparta-loader-2.0.0.tgz", - "integrity": "sha1-RCX0lsk/dlu8603ZOFdtowdWbtE=", - "dev": true, - "requires": { - "isparta": "4.0.0" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "dev": true, - "requires": { - "abbrev": "1.0.9", - "async": "1.5.2", - "escodegen": "1.8.1", - "esprima": "2.7.3", - "glob": "5.0.15", - "handlebars": "4.0.10", - "js-yaml": "3.8.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.4.0", - "resolve": "1.1.7", - "supports-color": "3.2.3", - "which": "1.2.14", - "wordwrap": "1.0.0" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "jasmine-core": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.3.tgz", - "integrity": "sha1-RQcpUOSkKx4yL+VcABEApGXXeBU=", - "dev": true - }, - "js-tokens": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", - "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", - "dev": true - }, - "js-yaml": { - "version": "3.8.4", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", - "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "3.1.3" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "jschardet": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz", - "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==", - "dev": true - }, - "jsdoctypeparser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz", - "integrity": "sha1-597cFToRhJ/8UUEUSuhqfvDCU5I=", - "dev": true, - "requires": { - "lodash": "3.10.1" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-loader": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", - "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "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=", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "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=", - "dev": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "JSONStream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", - "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", - "dev": true, - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - } - }, - "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "just-extend": { - "version": "1.1.22", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.22.tgz", - "integrity": "sha1-MzCvdWyralQnAMZLLk5KoGLVL/8=", - "dev": true - }, - "karma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", - "integrity": "sha1-b3oaQGRG+i4YfslTmGmPTO5HYmk=", - "dev": true, - "requires": { - "bluebird": "3.5.0", - "body-parser": "1.17.2", - "chokidar": "1.7.0", - "colors": "1.1.2", - "combine-lists": "1.0.1", - "connect": "3.6.2", - "core-js": "2.4.1", - "di": "0.0.1", - "dom-serialize": "2.2.1", - "expand-braces": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "http-proxy": "1.16.2", - "isbinaryfile": "3.0.2", - "lodash": "3.10.1", - "log4js": "0.6.38", - "mime": "1.3.6", - "minimatch": "3.0.4", - "optimist": "0.6.1", - "qjobs": "1.1.5", - "range-parser": "1.2.0", - "rimraf": "2.6.1", - "safe-buffer": "5.0.1", - "socket.io": "1.7.3", - "source-map": "0.5.6", - "tmp": "0.0.31", - "useragent": "2.1.13" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, - "karma-coverage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.1.tgz", - "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=", - "dev": true, - "requires": { - "dateformat": "1.0.12", - "istanbul": "0.4.5", - "lodash": "3.10.1", - "minimatch": "3.0.4", - "source-map": "0.5.6" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, - "karma-jasmine": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.0.tgz", - "integrity": "sha1-IuTAa/mhguUpTR9wXjczgRuBCs8=", - "dev": true - }, - "karma-mocha-reporter": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz", - "integrity": "sha1-BP3aRaHZaXpzhxx0ciI8WBcBqyA=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "karma-phantomjs-launcher": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz", - "integrity": "sha1-0jyjSAG9qYY60xjju0vUBisTrNI=", - "dev": true, - "requires": { - "lodash": "4.17.4", - "phantomjs-prebuilt": "2.1.14" - } - }, - "karma-sinon": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/karma-sinon/-/karma-sinon-1.0.5.tgz", - "integrity": "sha1-TjRD8oMP3s/2JNN0cWPxIX2qKpo=", - "dev": true - }, - "karma-sourcemap-loader": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", - "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "karma-webpack": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.3.tgz", - "integrity": "sha1-Oc6/XKJYATmyf5rmm3iBa5yC+uY=", - "dev": true, - "requires": { - "async": "0.9.2", - "loader-utils": "0.2.17", - "lodash": "3.10.1", - "source-map": "0.1.43", - "webpack-dev-middleware": "1.10.2" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "kew": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", - "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "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" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - } - } - }, - "loader-fs-cache": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", - "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", - "dev": true, - "requires": { - "find-cache-dir": "0.1.1", - "mkdirp": "0.5.1" - } - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", - "dev": true - }, - "lodash._createassigner": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", - "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "dev": true, - "requires": { - "lodash._bindcallback": "3.0.1", - "lodash._isiterateecall": "3.0.9", - "lodash.restparam": "3.6.1" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash.assign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", - "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "dev": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._createassigner": "3.1.1", - "lodash.keys": "3.1.2" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, - "lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", - "dev": true - }, - "lodash.pad": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", - "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA=", - "dev": true - }, - "lodash.padend": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", - "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", - "dev": true - }, - "lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=", - "dev": true - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "lodash.template": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", - "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", - "dev": true, - "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.templatesettings": "4.1.0" - } - }, - "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", - "dev": true, - "requires": { - "lodash._reinterpolate": "3.0.0" - } - }, - "log4js": { - "version": "0.6.38", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", - "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "semver": "4.3.6" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "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=", - "dev": true - } - } - }, - "lolex": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", - "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, - "requires": { - "js-tokens": "3.0.1" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", - "dev": true - }, - "markdown-table": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.3.2.tgz", - "integrity": "sha1-qwUBQlEXIYxJh1TVfiRNzUqAIy4=", - "dev": true - }, - "marked": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "1.1.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.2.11" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.3.8", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.3" - } - }, - "miller-rabin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", - "dev": true, - "requires": { - "bn.js": "4.11.6", - "brorand": "1.1.0" - } - }, - "mime": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", - "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", - "dev": true - }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "dev": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "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" - } - }, - "modify-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.0.tgz", - "integrity": "sha1-4rbN65zhn5kxelNyLz2/XfXqqrI=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", - "dev": true - }, - "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 - }, - "ncname": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", - "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", - "dev": true, - "requires": { - "xml-char-classes": "1.0.0" - } - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "nerf-dart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", - "dev": true - }, - "netrc": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", - "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=", - "dev": true - }, - "ng-select-all-on-focus": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ng-select-all-on-focus/-/ng-select-all-on-focus-1.0.3.tgz", - "integrity": "sha1-L6xKCyGCOgeRow9eA1wGIDNuqdA=", - "dev": true - }, - "nise": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.0.1.tgz", - "integrity": "sha1-DakrEKhU6XwPSW9sKEWjASgLPu8=", - "dev": true, - "requires": { - "formatio": "1.2.0", - "just-extend": "1.1.22", - "lolex": "1.6.0", - "path-to-regexp": "1.7.0" - } - }, - "no-case": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", - "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", - "dev": true, - "requires": { - "lower-case": "1.1.4" - } - }, - "node-libs-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", - "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", - "dev": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.0", - "domain-browser": "1.1.7", - "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.2.11", - "stream-browserify": "2.0.1", - "stream-http": "2.7.1", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.2", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "nomnomnomnom": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz", - "integrity": "sha1-siOfAxyNBNpn4yg24eMZnhL3qOI=", - "dev": true, - "requires": { - "chalk": "0.4.0", - "underscore": "1.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1.0.9" - } - }, - "normalize-package-data": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", - "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", - "dev": true, - "requires": { - "hosted-git-info": "2.4.2", - "is-builtin-module": "1.0.0", - "semver": "4.3.6", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "1.0.2" - } - }, - "npm-package-arg": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-4.2.1.tgz", - "integrity": "sha1-WTMD/eqF98Qid18X+et2cPaA4+w=", - "dev": true, - "requires": { - "hosted-git-info": "2.4.2", - "semver": "5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - } - } - }, - "npm-registry-client": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-7.5.0.tgz", - "integrity": "sha1-D23W5dEUJM+pn85bkw/q8JtPfwQ=", - "dev": true, - "requires": { - "concat-stream": "1.6.0", - "graceful-fs": "4.1.11", - "normalize-package-data": "2.3.8", - "npm-package-arg": "4.2.1", - "npmlog": "4.1.2", - "once": "1.4.0", - "request": "2.79.0", - "retry": "0.10.1", - "semver": "4.3.6", - "slide": "1.1.6" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "2.0.1" - } - }, - "npmconf": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz", - "integrity": "sha1-ZmBqSnNvHnegWaoHGnnJSreBhTo=", - "dev": true, - "requires": { - "config-chain": "1.1.11", - "inherits": "2.0.3", - "ini": "1.3.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.3.3", - "osenv": "0.1.4", - "semver": "4.3.6", - "uid-number": "0.0.5" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - } - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": 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", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "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-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, - "object-hash": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.1.8.tgz", - "integrity": "sha1-KKZZz5h9lqTavnhgKJ87UybEoDw=", - "dev": true - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "obuf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", - "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "opn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, - "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" - } - }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", - "dev": true - }, - "original": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", - "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", - "dev": true, - "requires": { - "url-parse": "1.0.5" - }, - "dependencies": { - "url-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", - "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", - "dev": true, - "requires": { - "querystringify": "0.0.4", - "requires-port": "1.0.0" - } - } - } - }, - "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "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 - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "1.1.0" - } - }, - "pad-right": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", - "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", - "dev": true, - "requires": { - "repeat-string": "1.6.1" - } - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "2.3.1" - } - }, - "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", - "dev": true, - "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.6", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.0", - "pbkdf2": "3.0.12" - } - }, - "parse-author": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-0.2.0.tgz", - "integrity": "sha1-3kJ05ecCwYgxxQGnz2b83zGfsfk=", - "dev": true, - "requires": { - "author-regex": "0.2.1" - } - }, - "parse-github-repo-url": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.0.tgz", - "integrity": "sha1-KGxT4smWLgZBZJ7jrJUI/KTdlZw=", - "dev": true - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseurl": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-here": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/path-here/-/path-here-1.1.1.tgz", - "integrity": "sha1-K5IBdBNAOCuV0OnuCMamX4Fl0Gk=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-object": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/path-object/-/path-object-2.3.0.tgz", - "integrity": "sha1-A+RmU+XDdcYK8cq92UvGRIpdkRA=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "lodash.assign": "3.2.0" - } - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "requires": { - "through": "2.3.8" - } - }, - "pbkdf2": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", - "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", - "dev": true, - "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.0.1", - "sha.js": "2.4.8" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "phantomjs-prebuilt": { - "version": "2.1.14", - "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz", - "integrity": "sha1-1T0xH8+30dCN2yQBRVjxGIxRbaA=", - "dev": true, - "requires": { - "es6-promise": "4.0.5", - "extract-zip": "1.5.0", - "fs-extra": "1.0.0", - "hasha": "2.2.0", - "kew": "0.7.0", - "progress": "1.1.8", - "request": "2.79.0", - "request-progress": "2.0.1", - "which": "1.2.14" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "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" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "1.1.2" - } - }, - "portfinder": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", - "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", - "dev": true, - "requires": { - "async": "1.5.2", - "debug": "2.6.8", - "mkdirp": "0.5.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 - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true - }, - "proxy-addr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", - "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", - "dev": true, - "requires": { - "forwarded": "0.1.0", - "ipaddr.js": "1.3.0" - } - }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", - "dev": true, - "requires": { - "bn.js": "4.11.6", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.5" - } - }, - "publish-latest": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/publish-latest/-/publish-latest-1.1.2.tgz", - "integrity": "sha1-RUp4SdNk9JdRCl8gvZnxdVCzqPc=", - "dev": true, - "requires": { - "commander": "2.9.0", - "parse-author": "0.2.0", - "path-here": "1.1.1", - "repo-path-parse": "1.0.1" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", - "dev": true - }, - "qjobs": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", - "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", - "dev": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", - "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", - "integrity": "sha512-aSLEDudu6OoRr/2rU609gRmnYboRLxgDG1z9o2Q0os7236FwvcqIOO8r8U5JUEwivZOhDaKlFO4SbPTJYyBEyQ==", - "dev": true - } - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", - "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", - "dev": true, - "requires": { - "bytes": "2.4.0", - "iconv-lite": "0.4.15", - "unpipe": "1.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.3.8", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "readable-stream": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", - "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", - "dev": 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.0.1", - "string_decoder": "1.0.2", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.2.11", - "set-immediate-shim": "1.0.1" - } - }, - "recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", - "dev": true, - "requires": { - "ast-types": "0.9.6", - "esprima": "3.1.3", - "private": "0.1.7", - "source-map": "0.5.6" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" - } - }, - "regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", - "dev": true - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - }, - "regenerator-transform": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", - "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "private": "0.1.7" - } - }, - "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "dev": true, - "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, - "requires": { - "regenerate": "1.3.2", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "repo-path-parse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/repo-path-parse/-/repo-path-parse-1.0.1.tgz", - "integrity": "sha1-xRD71c1H7qBNgcozzF1NUzyNpgo=", - "dev": true, - "requires": { - "dox": "0.6.1", - "doxme": "1.8.2" - } - }, - "request": { - "version": "2.79.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", - "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "2.0.6", - "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.15", - "oauth-sign": "0.8.2", - "qs": "6.3.2", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.4.3", - "uuid": "3.0.1" - }, - "dependencies": { - "qs": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", - "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", - "dev": true - } - } - }, - "request-progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", - "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", - "dev": true, - "requires": { - "throttleit": "1.0.0" - } - }, - "request-promise": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.1.tgz", - "integrity": "sha1-fuxWyJMXqCLL/qmbA5zlQ8LhX2c=", - "dev": true, - "requires": { - "bluebird": "3.5.0", - "request-promise-core": "1.1.1", - "stealthy-require": "1.1.1", - "tough-cookie": "2.3.2" - } - }, - "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", - "dev": true - }, - "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" - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "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 - }, - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", - "dev": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "0.1.4" - } - }, - "right-pad": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/right-pad/-/right-pad-1.0.1.tgz", - "integrity": "sha1-jKCMLLtbVedNr6lr9/0aJ9VoyNA=", - "dev": true - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", - "dev": true, - "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" - } - }, - "run-auto": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/run-auto/-/run-auto-2.0.0.tgz", - "integrity": "sha1-X0NT9Yrb1rdJJkibTyWeHa1qeNY=", - "dev": true, - "requires": { - "dezalgo": "1.0.3" - } - }, - "run-series": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.4.tgz", - "integrity": "sha1-iac93F51ye+KtjIMChYA1qQRebk=", - "dev": true - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "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": "3.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", - "dev": true - }, - "samsam": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.2.1.tgz", - "integrity": "sha1-7dOQk6MYQ3DLhZJDsr3yVefY6mc=", - "dev": true - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "semantic-release": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-7.0.1.tgz", - "integrity": "sha512-M0kDAYWqax/Euq4Z6kq4UUbgizaiYeNfNFJ4j7lstzP82mv5E6yUi6n8j1TxFSyTMQoMELpctW7jDz9+bvGqww==", - "dev": true, - "requires": { - "@semantic-release/commit-analyzer": "2.0.0", - "@semantic-release/condition-travis": "5.0.2", - "@semantic-release/error": "1.0.0", - "@semantic-release/last-release-npm": "1.2.1", - "@semantic-release/release-notes-generator": "3.0.1", - "git-head": "1.20.1", - "github": "8.2.1", - "lodash": "4.17.4", - "nerf-dart": "1.0.0", - "nopt": "4.0.1", - "normalize-package-data": "2.3.8", - "npmconf": "2.1.2", - "npmlog": "4.1.2", - "parse-github-repo-url": "1.4.0", - "require-relative": "0.8.7", - "run-auto": "2.0.0", - "run-series": "1.1.4", - "semver": "5.4.1" - }, - "dependencies": { - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, - "requires": { - "abbrev": "1.0.9", - "osenv": "0.1.4" - } - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - } - } - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - }, - "send": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", - "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", - "dev": true, - "requires": { - "debug": "2.6.7", - "depd": "1.1.0", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.0", - "fresh": "0.5.0", - "http-errors": "1.6.1", - "mime": "1.3.4", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - }, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", - "dev": true - } - } - }, - "serve-index": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.0.tgz", - "integrity": "sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc=", - "dev": true, - "requires": { - "accepts": "1.3.3", - "batch": "0.6.1", - "debug": "2.6.8", - "escape-html": "1.0.3", - "http-errors": "1.6.1", - "mime-types": "2.1.15", - "parseurl": "1.3.1" - } - }, - "serve-static": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", - "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", - "dev": true, - "requires": { - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "parseurl": "1.3.1", - "send": "0.15.3" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - }, - "sha.js": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", - "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "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=", - "dev": true - }, - "sinon": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-3.2.0.tgz", - "integrity": "sha512-Jg2Bcp+X5L0d5bMQqQzMPMh/oZ/TwwcgbVG5Z4xRPxKYqWYw75O6m4LrEhrQdOE10RsoaEQMwTFNn4rHjTyKew==", - "dev": true, - "requires": { - "diff": "3.2.0", - "formatio": "1.2.0", - "lolex": "2.1.2", - "native-promise-only": "0.8.1", - "nise": "1.0.1", - "path-to-regexp": "1.7.0", - "samsam": "1.2.1", - "text-encoding": "0.6.4", - "type-detect": "4.0.3" - }, - "dependencies": { - "lolex": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.1.2.tgz", - "integrity": "sha1-JpS5U8nqTQE+W4v7qJHJkQJbJik=", - "dev": true - } - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "socket.io": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", - "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", - "dev": true, - "requires": { - "debug": "2.3.3", - "engine.io": "1.8.3", - "has-binary": "0.1.7", - "object-assign": "4.1.0", - "socket.io-adapter": "0.5.0", - "socket.io-client": "1.7.3", - "socket.io-parser": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", - "dev": true - } - } - }, - "socket.io-adapter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", - "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", - "dev": true, - "requires": { - "debug": "2.3.3", - "socket.io-parser": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-client": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", - "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", - "dev": true, - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.3.3", - "engine.io-client": "1.8.3", - "has-binary": "0.1.7", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.5", - "socket.io-parser": "2.3.1", - "to-array": "0.1.4" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", - "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", - "dev": true, - "requires": { - "component-emitter": "1.1.2", - "debug": "2.2.0", - "isarray": "0.0.1", - "json3": "3.3.2" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } - } - }, - "sockjs": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", - "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", - "dev": true, - "requires": { - "faye-websocket": "0.10.0", - "uuid": "2.0.3" - }, - "dependencies": { - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, - "sockjs-client": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.2.tgz", - "integrity": "sha1-8CEqhVDkyUaMjM6u79LjSTwDOtU=", - "dev": true, - "requires": { - "debug": "2.6.8", - "eventsource": "0.1.6", - "faye-websocket": "0.11.1", - "inherits": "2.0.3", - "json3": "3.3.2", - "url-parse": "1.1.9" - }, - "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=", - "dev": true, - "requires": { - "websocket-driver": "0.6.5" - } - } - } - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", - "dev": true - }, - "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true, - "requires": { - "source-map": "0.5.6" - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true, - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true - }, - "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true, - "requires": { - "debug": "2.6.8", - "handle-thing": "1.2.5", - "http-deceiver": "1.2.7", - "safe-buffer": "5.0.1", - "select-hose": "2.0.0", - "spdy-transport": "2.0.20" - } - }, - "spdy-transport": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", - "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", - "dev": true, - "requires": { - "debug": "2.6.8", - "detect-node": "2.0.3", - "hpack.js": "2.1.6", - "obuf": "1.1.1", - "readable-stream": "2.2.11", - "safe-buffer": "5.0.1", - "wbuf": "1.7.2" - } - }, - "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true, - "requires": { - "through": "2.3.8" - } - }, - "split2": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.1.1.tgz", - "integrity": "sha1-eh9VHhdqkOzTNF9yRqDP4XXvT9A=", - "dev": true, - "requires": { - "through2": "2.0.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=", - "dev": 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", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.2.11" - } - }, - "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "dev": true, - "requires": { - "duplexer": "0.1.1" - } - }, - "stream-consume": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", - "dev": true - }, - "stream-http": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.1.tgz", - "integrity": "sha1-VGpRdBrVprB+njGwsQRBqRffUoo=", - "dev": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.2.11", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "4.0.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 - }, - "striptags": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/striptags/-/striptags-2.2.1.tgz", - "integrity": "sha1-TEULcI1BuL85zyTEn/I0/Gqr/TI=", - "dev": true - }, - "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 - }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "dev": true - }, - "text-extensions": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.5.0.tgz", - "integrity": "sha1-0cstFLXQvEW/3Kigikc/aMfrDLw=", - "dev": true - }, - "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 - }, - "throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.2.11", - "xtend": "4.0.1" - } - }, - "timers-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", - "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", - "dev": true, - "requires": { - "setimmediate": "1.0.5" - } - }, - "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true, - "requires": { - "punycode": "1.4.1" - } - }, - "travis-ci": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/travis-ci/-/travis-ci-2.1.1.tgz", - "integrity": "sha1-mGliZa+CeuNXbzGqBth250tLCC4=", - "dev": true, - "requires": { - "github": "0.1.16", - "lodash": "1.3.1", - "request": "2.74.0", - "underscore.string": "2.2.1" - }, - "dependencies": { - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true, - "requires": { - "lodash": "4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } - } - }, - "form-data": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", - "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", - "dev": true, - "requires": { - "async": "2.5.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "github": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/github/-/github-0.1.16.tgz", - "integrity": "sha1-iV0qhbD+t5gNiawM5PRNyqA/F7U=", - "dev": true - }, - "lodash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.3.1.tgz", - "integrity": "sha1-pGY7U2hriV/wdOK6UE37dqjit3A=", - "dev": true - }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", - "dev": true - }, - "qs": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", - "dev": true - }, - "request": { - "version": "2.74.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "integrity": "sha1-dpPKdou7DqXIzgjAhKRe+gW4kqs=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "bl": "1.1.2", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "1.0.1", - "har-validator": "2.0.6", - "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.15", - "node-uuid": "1.4.8", - "oauth-sign": "0.8.2", - "qs": "6.2.3", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.4.3" - } - } - } - }, - "travis-deploy-once": { - "version": "1.0.0-node-0.10-support", - "resolved": "https://registry.npmjs.org/travis-deploy-once/-/travis-deploy-once-1.0.0-node-0.10-support.tgz", - "integrity": "sha1-mOzOfZWy9Lpdze7r9Uud+HcT1eY=", - "dev": true, - "requires": { - "babel-polyfill": "6.23.0", - "bluebird": "3.5.0", - "request": "2.79.0", - "request-promise": "4.2.1", - "travis-ci": "2.1.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-off-newlines": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "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-detect": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", - "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", - "dev": true - }, - "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.15" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "uglify-js": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.15.tgz", - "integrity": "sha1-qssyOoRrI0YCJw3q2KMkQaiAb0I=", - "dev": true, - "requires": { - "commander": "2.9.0", - "source-map": "0.5.6" - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true, - "requires": { - "source-map": "0.5.6", - "uglify-js": "2.8.29", - "webpack-sources": "1.0.1" - }, - "dependencies": { - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } - }, - "webpack-sources": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", - "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", - "dev": true, - "requires": { - "source-list-map": "2.0.0", - "source-map": "0.5.6" - } - } - } - }, - "uid-number": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz", - "integrity": "sha1-Wj2yPvXb1VuB/ODsmirG/M3ruB4=", - "dev": true - }, - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", - "dev": true - }, - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - }, - "underscore.string": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", - "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-parse": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", - "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", - "dev": true, - "requires": { - "querystringify": "1.0.0", - "requires-port": "1.0.0" - }, - "dependencies": { - "querystringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", - "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", - "dev": true - } - } - }, - "useragent": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.1.13.tgz", - "integrity": "sha1-u6Q+iqJNXOuDwpN0c+EC4h33TBA=", - "dev": true, - "requires": { - "lru-cache": "2.2.4", - "tmp": "0.0.31" - } - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", - "dev": true - }, - "uuid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "vary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", - "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=", - "dev": true - }, - "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "walk": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz", - "integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins=", - "dev": true, - "requires": { - "foreachasync": "3.0.0" - } - }, - "wbuf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", - "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", - "dev": true, - "requires": { - "minimalistic-assert": "1.0.0" - } - }, - "webpack": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.5.4.tgz", - "integrity": "sha1-VYPrJj7Se3i1vRe/37DrGxzRv4E=", - "dev": true, - "requires": { - "acorn": "5.0.3", - "acorn-dynamic-import": "2.0.2", - "ajv": "5.2.2", - "ajv-keywords": "2.1.0", - "async": "2.5.0", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.0.3", - "json-loader": "0.5.4", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.0.0", - "source-map": "0.5.6", - "supports-color": "4.2.1", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", - "webpack-sources": "1.0.1", - "yargs": "8.0.2" - }, - "dependencies": { - "ajv": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", - "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" - } - }, - "ajv-keywords": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", - "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "2.3.0" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.3.8", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - } - }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "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" - }, - "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 - }, - "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" - } - } - } - }, - "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - }, - "tapable": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", - "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", - "dev": true - }, - "watchpack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", - "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", - "dev": true, - "requires": { - "async": "2.5.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" - } - }, - "webpack-sources": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", - "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", - "dev": true, - "requires": { - "source-list-map": "2.0.0", - "source-map": "0.5.6" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dev": true, - "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" - } - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true, - "requires": { - "camelcase": "4.1.0" - } - } - } - }, - "webpack-dev-middleware": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.10.2.tgz", - "integrity": "sha1-LiUs4d+wINvaHMs33ybzCrAU29E=", - "dev": true, - "requires": { - "memory-fs": "0.4.1", - "mime": "1.3.6", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0" - } - }, - "webpack-dev-server": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.4.5.tgz", - "integrity": "sha1-MThM6BE2vhCAtLTN4OubkOVO5s8=", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "chokidar": "1.7.0", - "compression": "1.6.2", - "connect-history-api-fallback": "1.3.0", - "express": "4.15.3", - "html-entities": "1.2.1", - "http-proxy-middleware": "0.17.4", - "opn": "4.0.2", - "portfinder": "1.0.13", - "serve-index": "1.9.0", - "sockjs": "0.3.18", - "sockjs-client": "1.1.2", - "spdy": "3.4.7", - "strip-ansi": "3.0.1", - "supports-color": "3.2.3", - "webpack-dev-middleware": "1.10.2", - "yargs": "6.6.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, - "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "4.2.1" - } - } - } - }, - "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", - "dev": true, - "requires": { - "websocket-extensions": "0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz", - "integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec=", - "dev": true - }, - "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true, - "requires": { - "string-width": "1.0.2" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "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=", - "dev": true, - "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=", - "dev": true - }, - "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" - } - }, - "ws": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", - "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", - "dev": true, - "requires": { - "options": "0.0.6", - "ultron": "1.0.2" - } - }, - "wtf-8": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", - "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", - "dev": true - }, - "xml-char-classes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", - "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", - "dev": true - }, - "xmlhttprequest-ssl": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", - "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "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.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, - "requires": { - "camelcase": "3.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - } - } - }, - "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "dev": true, - "requires": { - "fd-slicer": "1.0.1" - } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true - } - } -} diff --git a/package.json b/package.json index af06b81..152a58c 100644 --- a/package.json +++ b/package.json @@ -20,12 +20,15 @@ ], "scripts": { "start": "webpack-dev-server --config webpack.server.config.js", - "tdd": "karma start", + "lint": "eslint src/**/*.js tests/**/*.js", "test": "karma start --single-run", + "test:sauce": "karma start karma.ci.conf.js", + "tdd": "karma start", + "build": "yarn run build:dev && yarn run build:prod", "build:dev": "webpack -d", "build:prod": "webpack -p", "publish-latest": "publish-latest --user-email aguirrel@xuar.com.ar --user-name aguirrel", - "semantic-release": "semantic-release pre && npm run build:prod && npm publish && npm run publish-latest && semantic-release post" + "semantic-release": "semantic-release pre && yarn run build && yarn publish && yarn run publish-latest && semantic-release post" }, "license": "MIT", "devDependencies": { @@ -43,12 +46,15 @@ "isparta-loader": "^2.0.0", "jasmine-core": "^2.4.1", "karma": "^1.1.2", + "karma-chrome-launcher": "^2.2.0", "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", "karma-jasmine": "^1.0.2", "karma-mocha-reporter": "^2.0.4", "karma-phantomjs-launcher": "^1.0.1", "karma-sinon": "^1.0.5", "karma-sourcemap-loader": "^0.3.7", + "karma-spec-reporter": "^0.0.31", "karma-webpack": "^2.0.0", "ng-select-all-on-focus": "^1.0.3", "phantomjs-prebuilt": "^2.1.8", diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..0ef3e7c --- /dev/null +++ b/yarn.lock @@ -0,0 +1,5749 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@semantic-release/commit-analyzer@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-2.0.0.tgz#924d1e2c30167c6a472bed9f66ee8f8e077489b2" + dependencies: + conventional-changelog "0.0.17" + +"@semantic-release/condition-travis@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@semantic-release/condition-travis/-/condition-travis-5.0.2.tgz#f4bb777a6c6db5565d70754a9b629233bd4a6597" + dependencies: + "@semantic-release/error" "^1.0.0" + semver "^5.0.3" + travis-deploy-once "1.0.0-node-0.10-support" + +"@semantic-release/error@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-1.0.0.tgz#bb8f8eeedd5c7f8c46f96b37ef39e1b8c376c1cc" + +"@semantic-release/last-release-npm@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@semantic-release/last-release-npm/-/last-release-npm-1.2.1.tgz#ff748142ecf15354b833a86ba18205f7fce594ee" + dependencies: + "@semantic-release/error" "^1.0.0" + npm-registry-client "^7.0.1" + npmlog "^1.2.1" + +"@semantic-release/release-notes-generator@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-3.0.1.tgz#cc912fb3bf3c5fc72740397ffc3f10b4c9177dbd" + dependencies: + conventional-changelog "1.1.4" + github-url-from-git "^1.4.0" + +JSONStream@^1.0.4: + version "1.3.1" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abbrev@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" + +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +accepts@1.3.3, 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-dynamic-import@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" + dependencies: + acorn "^4.0.3" + +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@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^4.0.3: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + +acorn@^5.0.0, acorn@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + +agent-base@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" + dependencies: + extend "~3.0.0" + semver "~5.0.1" + +ajv-keywords@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" + +ajv-keywords@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" + +ajv@^4.7.0, ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ajv@^5.1.5, ajv@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + json-schema-traverse "^0.3.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-mocks@^1.6.0: + version "1.6.6" + resolved "https://registry.yarnpkg.com/angular-mocks/-/angular-mocks-1.6.6.tgz#c93018e7838c6dc5ceaf1a6bcf9be13c830ea515" + +angular@^1.6.0: + version "1.6.6" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.6.tgz#fd5a3cfb437ce382d854ee01120797978527cb64" + +ansi-escapes@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +ansi-styles@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + +ansi@^0.3.0, ansi@~0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +aproba@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" + +are-we-there-yet@~1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz#a2d28c93102aa6cc96245a26cb954de06ec53f0c" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.0 || ^1.1.13" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + 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.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +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-flatten@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + +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: + 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.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +asn1.js@^4.0.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +ast-types@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" + +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.x, async@^1.4.0, async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.0.1, async@^2.1.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" + dependencies: + lodash "^4.14.0" + +async@~0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +author-regex@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/author-regex/-/author-regex-0.2.1.tgz#8bdefaac6065a931799bec07eeef51b940e08f3c" + +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.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.1.4, babel-core@^6.11.4, babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-generator@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.6" + trim-right "^1.0.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-loader@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.1.tgz#b87134c8b12e3e4c2a94e0546085bc680a2b8488" + dependencies: + find-cache-dir "^1.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-regenerator@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@^6.16.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-es2015@^6.9.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + +base64-js@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +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" + +big.js@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" + +binary-extensions@^1.0.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" + +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@^3.3.0, bluebird@^3.4.6, bluebird@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +body-parser@^1.16.1: + version "1.17.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.2.tgz#f8892abc8f9e627d42aedafbca66bf5ab99104ee" + dependencies: + bytes "2.4.0" + content-type "~1.0.2" + debug "2.6.7" + depd "~1.1.0" + http-errors "~1.6.1" + iconv-lite "0.4.15" + on-finished "~2.3.0" + qs "6.4.0" + raw-body "~2.2.0" + type-is "~1.6.15" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +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" + +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + 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.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +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.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + 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.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +buffer-indexof@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.0.tgz#f54f647c4f4e25228baa656a2e57e43d5f270982" + +buffer-xor@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +bytes@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" + +bytes@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a" + +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: + 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.x: + 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: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +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" + +chalk@1.1.3, chalk@^1.1.1, chalk@^1.1.3: + 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@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +chalk@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + dependencies: + ansi-styles "~1.0.0" + has-color "~0.1.0" + strip-ansi "~0.1.0" + +chokidar@^1.4.1, chokidar@^1.6.0, chokidar@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + 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, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +clean-css@4.1.x: + version "4.1.7" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.7.tgz#b9aea4f85679889cf3eae8b40349ec4ebdfdd032" + dependencies: + source-map "0.5.x" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +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.2.0: + 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" + +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" + +color-convert@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +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" + +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" + +commander@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" + +commander@2.11.x, commander@^2.9.0, commander@~2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + +commander@2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +compare-func@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" + dependencies: + array-ify "^1.0.0" + dot-prop "^3.0.0" + +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.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + +compressible@~2.0.10: + version "2.0.11" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a" + dependencies: + mime-db ">= 1.29.0 < 2" + +compression@^1.5.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.0.tgz#030c9f198f1643a057d776a738e922da4373012d" + dependencies: + accepts "~1.3.3" + bytes "2.5.0" + compressible "~2.0.10" + debug "2.6.8" + on-headers "~1.0.1" + safe-buffer "5.1.1" + vary "~1.1.1" + +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.6.0, concat-stream@^1.4.7, concat-stream@^1.5.2, concat-stream@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +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" + +connect-history-api-fallback@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" + +connect@^3.6.0: + version "3.6.3" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.3.tgz#f7320d46a25b4be7b483a2236517f24b1e27e301" + dependencies: + debug "2.6.8" + finalhandler "1.0.4" + 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" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" + +conventional-changelog-angular@^1.3.4: + version "1.4.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.4.0.tgz#118b9f7d41a3d99500bfb6bea1f3525e055e8b9b" + dependencies: + compare-func "^1.3.1" + github-url-from-git "^1.4.0" + q "^1.4.1" + read-pkg-up "^2.0.0" + +conventional-changelog-atom@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.1.1.tgz#d40a9b297961b53c745e5d1718fd1a3379f6a92f" + dependencies: + q "^1.4.1" + +conventional-changelog-codemirror@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.1.0.tgz#7577a591dbf9b538e7a150a7ee62f65a2872b334" + dependencies: + q "^1.4.1" + +conventional-changelog-core@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-1.9.0.tgz#de5dfbc091847656508d4a389e35c9a1bc49e7f4" + dependencies: + conventional-changelog-writer "^1.1.0" + conventional-commits-parser "^1.0.0" + dateformat "^1.0.12" + get-pkg-repo "^1.0.0" + git-raw-commits "^1.2.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^1.2.0" + lodash "^4.0.0" + normalize-package-data "^2.3.5" + q "^1.4.1" + read-pkg "^1.1.0" + read-pkg-up "^1.0.1" + through2 "^2.0.0" + +conventional-changelog-ember@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.2.6.tgz#8b7355419f5127493c4c562473ab2fc792f1c2b6" + dependencies: + q "^1.4.1" + +conventional-changelog-eslint@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-0.1.0.tgz#a52411e999e0501ce500b856b0a643d0330907e2" + dependencies: + q "^1.4.1" + +conventional-changelog-express@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.1.0.tgz#55c6c841c811962036c037bdbd964a54ae310fce" + dependencies: + q "^1.4.1" + +conventional-changelog-jquery@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510" + dependencies: + q "^1.4.1" + +conventional-changelog-jscs@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c" + dependencies: + q "^1.4.1" + +conventional-changelog-jshint@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.1.0.tgz#00cab8e9a3317487abd94c4d84671342918d2a07" + dependencies: + compare-func "^1.3.1" + q "^1.4.1" + +conventional-changelog-writer@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-1.4.1.tgz#3f4cb4d003ebb56989d30d345893b52a43639c8e" + dependencies: + compare-func "^1.3.1" + conventional-commits-filter "^1.0.0" + dateformat "^1.0.11" + handlebars "^4.0.2" + json-stringify-safe "^5.0.1" + lodash "^4.0.0" + meow "^3.3.0" + semver "^5.0.1" + split "^1.0.0" + through2 "^2.0.0" + +conventional-changelog@0.0.17: + version "0.0.17" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-0.0.17.tgz#5e0216600f4686190f0c82efbb0b3dd11b49ce34" + dependencies: + dateformat "^1.0.11" + event-stream "^3.3.0" + github-url-from-git "^1.4.0" + lodash "^3.6.0" + normalize-package-data "^1.0.3" + +conventional-changelog@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.4.tgz#108bc750c2a317e200e2f9b413caaa1f8c7efa3b" + dependencies: + conventional-changelog-angular "^1.3.4" + conventional-changelog-atom "^0.1.0" + conventional-changelog-codemirror "^0.1.0" + conventional-changelog-core "^1.9.0" + conventional-changelog-ember "^0.2.6" + conventional-changelog-eslint "^0.1.0" + conventional-changelog-express "^0.1.0" + conventional-changelog-jquery "^0.1.0" + conventional-changelog-jscs "^0.1.0" + conventional-changelog-jshint "^0.1.0" + +conventional-commit-types@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.2.0.tgz#5db95739d6c212acbe7b6f656a11b940baa68946" + +conventional-commits-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.0.0.tgz#6fc2a659372bc3f2339cf9ffff7e1b0344b93039" + dependencies: + is-subset "^0.1.1" + modify-values "^1.0.0" + +conventional-commits-parser@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-1.3.0.tgz#e327b53194e1a7ad5dc63479ee9099a52b024865" + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.0" + lodash "^4.2.1" + meow "^3.3.0" + split2 "^2.0.0" + through2 "^2.0.0" + trim-off-newlines "^1.0.0" + +convert-source-map@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +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, core-js@^2.4.0, core-js@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086" + +core-util-is@1.0.2, core-util-is@^1.0.1, 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" + +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, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +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.11.0: + version "3.11.1" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" + 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" + +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" + +cz-conventional-changelog@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-2.0.0.tgz#55a979afdfe95e7024879d2a0f5924630170b533" + 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@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +dargs@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + dependencies: + number-is-nan "^1.0.0" + +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.12, dateformat@^1.0.6: + 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" + +debug@2, debug@2.6.8, debug@^2.2.0, debug@^2.6.6, debug@^2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + +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" + +debug@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + +debug@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" + dependencies: + ms "2.0.0" + +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" + +deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +del@^2.0.2: + 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" + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +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.1, depd@~1.1.0, depd@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + +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-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-node@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" + +dezalgo@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + dependencies: + asap "^2.0.0" + wrappy "1" + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + +diff@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.0.tgz#056695150d7aa93237ca7e378ac3b1682b7963b9" + +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" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + +dns-packet@^1.0.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.2.2.tgz#a8a26bec7646438963fc86e06f8f8b16d6c8bf7a" + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + dependencies: + buffer-indexof "^1.0.0" + +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + 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" + +domain-browser@^1.1.1: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + dependencies: + is-obj "^1.0.0" + +dox@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/dox/-/dox-0.6.1.tgz#8247075ad4b275fe88fbbae02fe12f3c5480a7fd" + dependencies: + commander "0.6.1" + jsdoctypeparser "^1.1.1" + marked ">=0.3.1" + +doxme@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/doxme/-/doxme-1.8.2.tgz#8dc3c4a38682a4e96a72e0029eaad5c1a3546442" + dependencies: + concat-stream "^1.4.7" + markdown-table "^0.3.1" + minimist "^1.1.0" + repo-path-parse "^1.0.1" + striptags "^2.0.0" + +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.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +encodeurl@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" + +engine.io-client@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "2.3.3" + engine.io-parser "1.3.2" + has-cors "1.1.0" + indexof "0.0.1" + parsejson "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + ws "1.1.2" + xmlhttprequest-ssl "1.5.3" + yeast "0.1.2" + +engine.io-parser@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" + dependencies: + after "0.8.2" + arraybuffer.slice "0.0.6" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary "0.1.7" + wtf-8 "1.0.0" + +engine.io@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" + dependencies: + accepts "1.3.3" + base64id "1.0.0" + cookie "0.3.1" + debug "2.3.3" + engine.io-parser "1.3.2" + ws "1.1.2" + +enhanced-resolve@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.7" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + +errno@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.29" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.29.tgz#768eb2dfc4957bcf35fa0568f193ab71ede53fd8" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-promise@~4.0.3: + version "4.0.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-templates@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" + dependencies: + recast "~0.11.12" + through "~2.3.6" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.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, 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" + +escodegen@1.8.x, escodegen@^1.6.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +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-config-google@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.8.1.tgz#a97eab3a5f794e9d5bb35cfdca08059e79c936aa" + +eslint-loader@^1.4.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.9.0.tgz#7e1be9feddca328d3dcfaef1ad49d5beffe83a13" + dependencies: + loader-fs-cache "^1.0.0" + loader-utils "^1.0.2" + object-assign "^4.0.1" + object-hash "^1.1.4" + rimraf "^2.6.1" + +eslint-plugin-jasmine@^2.0.0: + version "2.8.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.8.4.tgz#67a5551e3d1d5e0b8c6b54aaebab95370f5d37de" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint@^4.1.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.4.1.tgz#99cd7eafcffca2ff99a5c8f5f2a474d6364b4bd3" + dependencies: + ajv "^5.2.0" + babel-code-frame "^6.22.0" + chalk "^1.1.3" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^2.6.8" + doctrine "^2.0.0" + eslint-scope "^3.7.1" + espree "^3.5.0" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^9.17.0" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^4.0.0" + progress "^2.0.0" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-json-comments "~2.0.1" + table "^4.0.1" + text-table "~0.2.0" + +espree@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.0.tgz#98358625bdd055861ea27e2867ea729faf463d8d" + dependencies: + acorn "^5.1.1" + acorn-jsx "^3.0.0" + +esprima@2.7.x, esprima@^2.1.0, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esprima@~3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" + dependencies: + estraverse "^4.1.0" + object-assign "^4.0.1" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + +estraverse@^4.0.0, 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" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" + +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + +event-stream@^3.3.0: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +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.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + +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" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +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" + +express@^4.13.3: + version "4.15.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.15.4.tgz#032e2253489cf8fce02666beca3d11ed7a2daed1" + dependencies: + accepts "~1.3.3" + array-flatten "1.1.1" + content-disposition "0.5.2" + content-type "~1.0.2" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.8" + depd "~1.1.1" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.0" + finalhandler "~1.0.4" + fresh "0.5.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.5" + qs "6.5.0" + range-parser "~1.2.0" + send "0.15.4" + serve-static "1.12.4" + setprototypeof "1.0.3" + statuses "~1.3.1" + type-is "~1.6.15" + utils-merge "1.0.0" + vary "~1.1.1" + +extend@3, extend@^3.0.0, extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +external-editor@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972" + dependencies: + iconv-lite "^0.4.17" + jschardet "^1.4.2" + tmp "^0.0.31" + +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" + +extract-zip@~1.6.5: + version "1.6.5" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.5.tgz#99a06735b6ea20ea9b705d779acffcc87cff0440" + dependencies: + concat-stream "1.6.0" + debug "2.2.0" + mkdirp "0.5.0" + yauzl "2.4.1" + +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + dependencies: + websocket-driver ">=0.5.1" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +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" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +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@1.0.4, finalhandler@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.4.tgz#18574f2e7c4b98b8ae3b230c21f201f31bdb3fb7" + dependencies: + debug "2.6.8" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.1" + statuses "~1.3.1" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +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" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +follow-redirects@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-0.0.7.tgz#34b90bab2a911aa347571da90f22bd36ecd8a919" + dependencies: + debug "^2.2.0" + stream-consume "^0.1.0" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +foreachasync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/foreachasync/-/foreachasync-3.0.0.tgz#5502987dc8714be3392097f32e0071c9dee07cf6" + +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@~1.0.0-rc4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c" + dependencies: + async "^2.0.1" + combined-stream "^1.0.5" + mime-types "^2.1.11" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +formatio@1.2.0, formatio@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" + dependencies: + samsam "1.x" + +forwarded@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" + +fresh@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" + +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + +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-extra@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +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.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.36" + +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@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + +gauge@~1.2.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" + dependencies: + ansi "^0.3.0" + has-unicode "^2.0.0" + lodash.pad "^4.1.0" + lodash.padend "^4.1.0" + lodash.padstart "^4.1.0" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + 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" + +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-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-pkg-repo@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + dependencies: + hosted-git-info "^2.1.4" + meow "^3.3.0" + normalize-package-data "^2.3.0" + parse-github-repo-url "^1.3.0" + through2 "^2.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" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +git-head@^1.2.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/git-head/-/git-head-1.20.1.tgz#036d16a4b374949e4e3daf15827903686d3ccd52" + dependencies: + git-refs "^1.1.3" + +git-raw-commits@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.2.0.tgz#0f3a8bfd99ae0f2d8b9224d58892975e9a52d03c" + dependencies: + dargs "^4.0.1" + lodash.template "^4.0.2" + meow "^3.3.0" + split2 "^2.0.0" + through2 "^2.0.0" + +git-refs@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/git-refs/-/git-refs-1.1.3.tgz#83097cb3a92585c4a4926ec54e2182df9e20e89d" + dependencies: + path-object "^2.3.0" + slash "^1.0.0" + walk "^2.3.9" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.2.1.tgz#6ccd2a52e735b736748dc762444fcd9588e27490" + dependencies: + meow "^3.3.0" + semver "^5.0.1" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + dependencies: + ini "^1.3.2" + +github-url-from-git@^1.3.0, github-url-from-git@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/github-url-from-git/-/github-url-from-git-1.5.0.tgz#f985fedcc0a9aa579dc88d7aff068d55cc6251a0" + +github-url-from-username-repo@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/github-url-from-username-repo/-/github-url-from-username-repo-1.0.2.tgz#7dd79330d2abe69c10c2cef79714c97215791dfa" + +github@^8.0.0: + version "8.2.1" + resolved "https://registry.yarnpkg.com/github/-/github-8.2.1.tgz#616b2211fbcd1cc8631669aed67653e62eb53816" + dependencies: + follow-redirects "0.0.7" + https-proxy-agent "^1.0.0" + mime "^1.2.11" + netrc "^0.1.4" + +github@~0.1.10: + version "0.1.16" + resolved "https://registry.yarnpkg.com/github/-/github-0.1.16.tgz#895d2a85b0feb7980d89ac0ce4f44dcaa03f17b5" + +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@^5.0.15: + 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@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.17.0, globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +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" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +handle-thing@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + +handlebars@^4.0.1, handlebars@^4.0.2: + version "4.0.10" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +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" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +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.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.0: + 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-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hasha@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" + dependencies: + is-stream "^1.0.1" + pinkie-promise "^2.0.0" + +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" + +he@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +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" + +hosted-git-info@^2.1.4, hosted-git-info@^2.1.5: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + +html-loader@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.1.tgz#4f1e8396a1ea6ab42bedc987dfac058070861ebe" + dependencies: + es6-templates "^0.2.2" + fastparse "^1.1.1" + html-minifier "^3.0.1" + loader-utils "^1.0.2" + object-assign "^4.1.0" + +html-minifier@^3.0.1: + version "3.5.3" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.3.tgz#4a275e3b1a16639abb79b4c11191ff0d0fcf1ab9" + dependencies: + camel-case "3.0.x" + clean-css "4.1.x" + commander "2.11.x" + he "1.1.x" + ncname "1.0.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.0.x" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + +http-errors@~1.6.1, http-errors@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-proxy-middleware@~0.17.4: + version "0.17.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" + dependencies: + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" + +http-proxy@^1.13.0, http-proxy@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + +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" + +https-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" + +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.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" + +iconv-lite@^0.4.17: + version "0.4.18" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" + +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +ignore@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" + +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@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + 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.2, ini@^1.3.4, ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +inquirer@^3.0.6: + version "3.2.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.2.tgz#c2aaede1507cc54d826818737742d621bef2e823" + dependencies: + ansi-escapes "^2.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +internal-ip@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" + dependencies: + meow "^3.3.0" + +interpret@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" + +invariant@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + +ipaddr.js@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0" + +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.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + +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.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +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-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +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-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-my-json-valid@^2.12.4: + version "2.16.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" + 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.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-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +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-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-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + +is-text-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + dependencies: + text-extensions "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +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.2" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +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" + +isparta-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isparta-loader/-/isparta-loader-2.0.0.tgz#4425f496c93f765bbceb4dd938576da307566ed1" + dependencies: + isparta "4.x.x" + +isparta@4.x.x: + version "4.0.0" + resolved "https://registry.yarnpkg.com/isparta/-/isparta-4.0.0.tgz#1de91996f480b22dcb1aca8510255bae1574446e" + dependencies: + babel-core "^6.1.4" + escodegen "^1.6.1" + esprima "^2.1.0" + istanbul "^0.4.0" + mkdirp "^0.5.0" + nomnomnomnom "^2.0.0" + object-assign "^4.0.1" + source-map "^0.5.0" + which "^1.0.9" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istanbul@^0.4.0: + version "0.4.5" + resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +jasmine-core@^2.4.1: + version "2.7.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.7.0.tgz#50ff8c4f92d8ef5c0b2c1b846dd263ed85152091" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@3.x, js-yaml@^3.9.1: + version "3.9.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jschardet@^1.4.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" + +jsdoctypeparser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz#e7dedc153a11849ffc5141144ae86a7ef0c25392" + dependencies: + lodash "^3.7.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-loader@^0.5.4: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +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.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-stringify-safe@^5.0.1, 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.3.2, json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +just-extend@^1.1.22: + version "1.1.22" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.22.tgz#3330af756cab6a542700c64b2e4e4aa062d52fff" + +karma-chrome-launcher@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + dependencies: + fs-access "^1.0.0" + which "^1.2.1" + +karma-coverage@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.1.tgz#5aff8b39cf6994dc22de4c84362c76001b637cf6" + dependencies: + dateformat "^1.0.6" + istanbul "^0.4.0" + lodash "^3.8.0" + minimatch "^3.0.0" + source-map "^0.5.1" + +karma-firefox-launcher@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.0.1.tgz#ce58f47c2013a88156d55a5d61337c099cf5bb51" + +karma-jasmine@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf" + +karma-mocha-reporter@^2.0.4: + version "2.2.3" + resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz#04fdda45a1d9697a73871c7472223c581701ab20" + dependencies: + chalk "1.1.3" + +karma-phantomjs-launcher@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2" + dependencies: + lodash "^4.0.1" + phantomjs-prebuilt "^2.1.7" + +karma-sinon@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/karma-sinon/-/karma-sinon-1.0.5.tgz#4e3443f2830fdecff624d3747163f1217daa2a9a" + +karma-sourcemap-loader@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" + dependencies: + graceful-fs "^4.1.2" + +karma-spec-reporter@^0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/karma-spec-reporter/-/karma-spec-reporter-0.0.31.tgz#4830dc7148a155c7d7a186e632339a0d80fadec3" + dependencies: + colors "^1.1.2" + +karma-webpack@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-2.0.4.tgz#3e2d4f48ba94a878e1c66bb8e1ae6128987a175b" + dependencies: + async "~0.9.0" + loader-utils "^0.2.5" + lodash "^3.8.0" + source-map "^0.1.41" + webpack-dev-middleware "^1.0.11" + +karma@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.0.tgz#6f7a1a406446fa2e187ec95398698f4cee476269" + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^1.4.1" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + glob "^7.1.1" + 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.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "1.7.3" + source-map "^0.5.3" + tmp "0.0.31" + useragent "^2.1.12" + +kew@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +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" + +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" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + +loader-utils@^0.2.5: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._bindcallback@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + +lodash._createassigner@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" + dependencies: + lodash._bindcallback "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash.restparam "^3.0.0" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._reinterpolate@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash.assign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" + dependencies: + lodash._baseassign "^3.0.0" + lodash._createassigner "^3.0.0" + lodash.keys "^3.0.0" + +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.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.map@^4.5.1: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + +lodash.pad@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" + +lodash.padend@^4.1.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" + +lodash.padstart@^4.1.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" + +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@^4.0.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + dependencies: + lodash._reinterpolate "~3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + dependencies: + lodash._reinterpolate "~3.0.0" + +lodash@^3.6.0, lodash@^3.7.0, lodash@^3.8.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +lodash@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.3.1.tgz#a4663b53686b895ff074e2ba504dfb76a8e2b770" + +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" + +loglevel@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.4.1.tgz#95b383f91a3c2756fd4ab093667e4309161f2bcd" + +lolex@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" + +lolex@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.1.2.tgz#2694b953c9ea4d013e5b8bfba891c991025b2629" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +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@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + +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.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" + dependencies: + pify "^2.3.0" + +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" + +markdown-table@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-0.3.2.tgz#ab0501425117218c498754d57e244dcd4a80232e" + +marked@>=0.3.1: + version "0.3.6" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.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" + +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.11: + 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.29.0 < 2", mime-db@~1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" + +mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: + version "2.1.16" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" + dependencies: + mime-db "~1.29.0" + +mime@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + +mime@^1.2.11, mime@^1.3.4: + version "1.3.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" + +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +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.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +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.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +modify-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" + +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" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + +multicast-dns@^6.0.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.1.1.tgz#6e7de86a570872ab17058adea7160bbeca814dde" + dependencies: + dns-packet "^1.0.1" + thunky "^0.1.0" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@^2.3.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" + +native-promise-only@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +ncname@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" + dependencies: + xml-char-classes "^1.0.0" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +nerf-dart@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/nerf-dart/-/nerf-dart-1.0.0.tgz#e6dab7febf5ad816ea81cf5c629c5a0ebde72c1a" + +netrc@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/netrc/-/netrc-0.1.4.tgz#6be94fcaca8d77ade0a9670dc460914c94472444" + +ng-select-all-on-focus@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ng-select-all-on-focus/-/ng-select-all-on-focus-1.0.3.tgz#2fac4a0b21823a0791a30f5e035c0620336ea9d0" + +nise@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nise/-/nise-1.0.1.tgz#0da92b10a854e97c0f496f6c2845a301280b3eef" + dependencies: + formatio "^1.2.0" + just-extend "^1.1.22" + lolex "^1.6.0" + path-to-regexp "^1.7.0" + +no-case@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" + dependencies: + lower-case "^1.1.1" + +node-forge@0.6.33: + version "0.6.33" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc" + +node-libs-browser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.1.4" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "0.0.1" + os-browserify "^0.2.0" + path-browserify "0.0.0" + process "^0.11.0" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.0.5" + stream-browserify "^2.0.1" + stream-http "^2.3.1" + string_decoder "^0.10.25" + timers-browserify "^2.0.2" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.6.36: + version "0.6.36" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" + dependencies: + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "^2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +node-uuid@~1.4.7: + version "1.4.8" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" + +nomnomnomnom@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz#b2239f031c8d04da67e32836e1e3199e12f7a8e2" + dependencies: + chalk "~0.4.0" + underscore "~1.6.0" + +nopt@3.x, nopt@~3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +nopt@^4.0.0, nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-1.0.3.tgz#8be955b8907af975f1a4584ea8bb9b41492312f5" + dependencies: + github-url-from-git "^1.3.0" + github-url-from-username-repo "^1.0.0" + semver "2 || 3 || 4" + +normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, "normalize-package-data@~1.0.1 || ^2.0.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + 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.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +"npm-package-arg@^3.0.0 || ^4.0.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-4.2.1.tgz#593303fdea85f7c422775f17f9eb7670f680e3ec" + dependencies: + hosted-git-info "^2.1.5" + semver "^5.1.0" + +npm-registry-client@^7.0.1: + version "7.5.0" + resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-7.5.0.tgz#0f6dd6e5d11424cfa99fce5b930feaf09b4f7f04" + dependencies: + concat-stream "^1.5.2" + graceful-fs "^4.1.6" + normalize-package-data "~1.0.1 || ^2.0.0" + npm-package-arg "^3.0.0 || ^4.0.0" + once "^1.3.3" + request "^2.74.0" + retry "^0.10.0" + semver "2 >=2.2.1 || 3.x || 4 || 5" + slide "^1.1.3" + optionalDependencies: + npmlog "2 || ^3.1.0 || ^4.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npmconf@^2.1.2: + 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@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +npmlog@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-1.2.1.tgz#28e7be619609b53f7ad1dd300a10d64d716268b6" + dependencies: + ansi "~0.3.0" + are-we-there-yet "~1.0.0" + gauge "~1.2.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" + +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: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + +object-hash@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.1.8.tgz#28a659cf987d96a4dabe7860289f3b5326c4a03c" + +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" + +obuf@^1.0.0, obuf@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" + +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.x, once@^1.3.0, once@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +once@~1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +opn@4.0.2: + 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" + +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" + +optionator@^0.8.1, 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" + +original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + dependencies: + url-parse "1.0.x" + +os-browserify@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" + +os-homedir@^1.0.0: + 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-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.0, osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-map@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a" + +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.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + 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-author@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-0.2.0.tgz#de4274e5e702c18831c501a7cf66fcdf319fb1f9" + dependencies: + author-regex "^0.2.1" + +parse-github-repo-url@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.0.tgz#286c53e2c9962e0641649ee3ac9508fca4dd959c" + +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.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" + dependencies: + better-assert "~1.0.0" + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + 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" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +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-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-here@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-here/-/path-here-1.1.0.tgz#7d24a9ccab8ae19f667b90415f7e75006f8caf70" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + 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, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-object@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/path-object/-/path-object-2.3.0.tgz#03e46653e5c375c60af1cabdd94bc6448a5d9110" + dependencies: + core-util-is "^1.0.1" + lodash.assign "^3.0.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-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + +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-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +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.13" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.13.tgz#c37d295531e786b1da3e3eadc840426accb0ae25" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +phantomjs-prebuilt@^2.1.7, phantomjs-prebuilt@^2.1.8: + version "2.1.15" + resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.15.tgz#20f86e82d3349c505917527745b7a411e08b3903" + dependencies: + es6-promise "~4.0.3" + extract-zip "~1.6.5" + fs-extra "~1.0.0" + hasha "~2.2.0" + kew "~0.7.0" + progress "~1.1.8" + request "~2.81.0" + request-progress "~2.0.1" + which "~1.2.10" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +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-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + +pluralize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762" + +portfinder@^1.0.9: + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +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" + +private@^0.1.6, private@^0.1.7, private@~0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" + +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.0: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +progress@~1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + +proxy-addr@~1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918" + dependencies: + forwarded "~0.1.0" + ipaddr.js "1.4.0" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + +pseudomap@^1.0.2: + 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" + +publish-latest@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/publish-latest/-/publish-latest-1.1.3.tgz#17cf5f8afef9f1eb24cf25891aa0a839f8bb834c" + dependencies: + commander "2.8.1" + parse-author "0.2.0" + path-here "1.1.0" + repo-path-parse "1.0.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.4.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + +qjobs@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" + +qs@6.4.0, qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +qs@6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" + +qs@~6.2.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" + +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" + +querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + +querystringify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +randombytes@^2.0.0, randombytes@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.0.3, 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.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" + dependencies: + bytes "2.4.0" + iconv-lite "0.4.15" + unpipe "1.0.0" + +rc@^1.1.7: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +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-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0, read-pkg@^1.1.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-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readable-stream@~1.0.2: + 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.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" + +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" + +recast@~0.11.12: + version "0.11.23" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" + dependencies: + ast-types "0.9.6" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + +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" + +regenerate@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +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" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +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" + +repo-path-parse@1.0.1, repo-path-parse@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/repo-path-parse/-/repo-path-parse-1.0.1.tgz#c510fbd5cd47eea04d81ca33cc5d4d533c8da60a" + dependencies: + dox "^0.6.1" + doxme "^1.8.1" + +request-progress@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" + dependencies: + throttleit "^1.0.0" + +request-promise-core@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" + dependencies: + lodash "^4.13.1" + +request-promise@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.1.tgz#7eec56c89317a822cbfea99b039ce543c2e15f67" + dependencies: + bluebird "^3.5.0" + request-promise-core "1.1.1" + stealthy-require "^1.1.0" + tough-cookie ">=2.3.0" + +request@^2.74.0, request@^2.78.0, request@^2.81.0, request@~2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + 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" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +request@~2.74.0: + version "2.74.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab" + 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 "~1.0.0-rc4" + 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" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-relative@^0.8.7: + version "0.8.7" + resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" + +require-uncached@^1.0.3: + 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.0.x, requires-port@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + +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.5.1, rimraf@^2.6.0, rimraf@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + dependencies: + glob "^7.0.5" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +run-auto@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/run-auto/-/run-auto-2.0.0.tgz#5f4353f58adbd6b74926489b4f259e1dad6a78d6" + dependencies: + dezalgo "^1.0.1" + +run-series@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.4.tgz#89a73ddc5e75c9ef8ab6320c0a1600d6a41179b9" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +samsam@1.x, samsam@^1.1.3: + version "1.2.1" + resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + +selfsigned@^1.9.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52" + dependencies: + node-forge "0.6.33" + +semantic-release@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-7.0.2.tgz#3d418df4070b1fbd4ff2b7b75676322330c2b049" + dependencies: + "@semantic-release/commit-analyzer" "^2.0.0" + "@semantic-release/condition-travis" "^5.0.2" + "@semantic-release/error" "^1.0.0" + "@semantic-release/last-release-npm" "^1.2.1" + "@semantic-release/release-notes-generator" "^3.0.1" + git-head "^1.2.1" + github "^8.0.0" + lodash "^4.0.0" + nerf-dart "^1.0.0" + nopt "^4.0.0" + normalize-package-data "^2.3.4" + npmconf "^2.1.2" + npmlog "^4.0.0" + parse-github-repo-url "^1.3.0" + require-relative "^0.8.7" + run-auto "^2.0.0" + run-series "^1.1.3" + semver "^5.2.0" + +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.2.0, semver@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +"semver@2 || 3 || 4", semver@~4.3.3: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +semver@~5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" + +send@0.15.4: + version "0.15.4" + resolved "https://registry.yarnpkg.com/send/-/send-0.15.4.tgz#985faa3e284b0273c793364a35c6737bd93905b9" + dependencies: + debug "2.6.8" + depd "~1.1.1" + destroy "~1.0.4" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.0" + fresh "0.5.0" + http-errors "~1.6.2" + mime "1.3.4" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.3.1" + +serve-index@^1.7.2: + version "1.9.0" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.0.tgz#d2b280fc560d616ee81b48bf0fa82abed2485ce7" + dependencies: + accepts "~1.3.3" + batch "0.6.1" + debug "2.6.8" + escape-html "~1.0.3" + http-errors "~1.6.1" + mime-types "~2.1.15" + parseurl "~1.3.1" + +serve-static@1.12.4: + version "1.12.4" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.4.tgz#9b6aa98eeb7253c4eedc4c1f6fdbca609901a961" + dependencies: + encodeurl "~1.0.1" + escape-html "~1.0.3" + parseurl "~1.3.1" + send "0.15.4" + +set-blocking@^2.0.0, 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.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.8" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" + dependencies: + inherits "^2.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +sinon@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-3.2.1.tgz#d8adabd900730fd497788a027049c64b08be91c2" + dependencies: + diff "^3.1.0" + formatio "1.2.0" + lolex "^2.1.2" + native-promise-only "^0.8.1" + nise "^1.0.1" + path-to-regexp "^1.7.0" + samsam "^1.1.3" + text-encoding "0.6.4" + type-detect "^4.0.0" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slide@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +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.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" + dependencies: + debug "2.3.3" + socket.io-parser "2.3.1" + +socket.io-client@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" + dependencies: + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "2.3.3" + engine.io-client "1.8.3" + has-binary "0.1.7" + indexof "0.0.1" + object-component "0.0.3" + parseuri "0.0.5" + socket.io-parser "2.3.1" + to-array "0.1.4" + +socket.io-parser@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" + dependencies: + component-emitter "1.1.2" + debug "2.2.0" + isarray "0.0.1" + json3 "3.3.2" + +socket.io@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" + dependencies: + debug "2.3.3" + engine.io "1.8.3" + has-binary "0.1.7" + object-assign "4.1.0" + socket.io-adapter "0.5.0" + socket.io-client "1.7.3" + socket.io-parser "2.3.1" + +sockjs-client@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs@0.3.18: + version "0.3.18" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" + dependencies: + faye-websocket "^0.10.0" + uuid "^2.0.2" + +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + +source-map-support@^0.4.15: + version "0.4.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.16.tgz#16fecf98212467d017d586a2af68d628b9421cd8" + dependencies: + source-map "^0.5.6" + +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +source-map@^0.1.41: + 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.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + +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" + +spdy-transport@^2.0.18: + version "2.0.20" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d" + dependencies: + debug "^2.6.8" + detect-node "^2.0.3" + hpack.js "^2.1.6" + obuf "^1.1.1" + readable-stream "^2.2.9" + safe-buffer "^5.0.1" + wbuf "^1.7.2" + +spdy@^3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + dependencies: + debug "^2.6.8" + handle-thing "^1.2.5" + http-deceiver "^1.2.7" + safe-buffer "^5.0.1" + select-hose "^2.0.0" + spdy-transport "^2.0.18" + +split2@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/split2/-/split2-2.1.1.tgz#7a1f551e176a90ecd3345f7246a0cfe175ef4fd0" + dependencies: + through2 "^2.0.2" + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + dependencies: + through "2" + +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + dependencies: + through "2" + +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.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + 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" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +"statuses@>= 1.3.1 < 2", statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +stealthy-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +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-http@^2.3.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.2.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +string-width@^1.0.1, string-width@^1.0.2: + 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, string-width@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^0.10.25, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +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-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + +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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +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" + +striptags@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/striptags/-/striptags-2.2.1.tgz#4c450b708d41b8bf39cf24c49ff234fc6aabfd32" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.0, supports-color@^3.1.1: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^4.0.0, supports-color@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" + dependencies: + has-flag "^2.0.0" + +table@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" + 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" + +tapable@^0.2.7: + version "0.2.8" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" + +tar-pack@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" + 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@^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-encoding@0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" + +text-extensions@^1.0.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.5.0.tgz#d1cb2d14b5d0bc45bfdca8a08a473f68c7eb0cbc" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + +through2@^2.0.0, through2@^2.0.2: + 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" + +through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +thunky@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e" + +time-stamp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" + +timers-browserify@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" + dependencies: + setimmediate "^1.0.4" + +tmp@0.0.31, tmp@^0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + dependencies: + os-tmpdir "~1.0.1" + +tmp@0.0.x: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +tough-cookie@>=2.3.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" + +travis-ci@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/travis-ci/-/travis-ci-2.1.1.tgz#98696265af827ae3576f31aa06d876e74b4b082e" + dependencies: + github "~0.1.10" + lodash "~1.3.1" + request "~2.74.0" + underscore.string "~2.2.0rc" + +travis-deploy-once@1.0.0-node-0.10-support: + version "1.0.0-node-0.10-support" + resolved "https://registry.yarnpkg.com/travis-deploy-once/-/travis-deploy-once-1.0.0-node-0.10-support.tgz#98ecce7d95b2f4ba5dcdeeebf54b9df87713d5e6" + dependencies: + babel-polyfill "^6.16.0" + bluebird "^3.4.6" + request "^2.78.0" + request-promise "^4.1.1" + travis-ci "^2.1.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-off-newlines@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +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.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +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.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +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-detect@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" + +type-is@~1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.15" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-js@3.0.x: + version "3.0.27" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.27.tgz#a97db8c8ba6b9dba4e2f88d86aa9548fa6320034" + dependencies: + commander "~2.11.0" + source-map "~0.5.1" + +uglify-js@^2.6, uglify-js@^2.8.29: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +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" + +uglifyjs-webpack-plugin@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" + dependencies: + source-map "^0.5.6" + uglify-js "^2.8.29" + webpack-sources "^1.0.1" + +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" + +underscore.string@~2.2.0rc: + version "2.2.1" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19" + +underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url-parse@^1.1.8: + version "1.1.9" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.9.tgz#c67f1d775d51f0a18911dd7b3ffad27bb9e5bd19" + dependencies: + querystringify "~1.0.0" + requires-port "1.0.x" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +useragent@^2.1.12: + version "2.2.1" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" + dependencies: + lru-cache "2.2.x" + tmp "0.0.x" + +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: + 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.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + +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" + +vary@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@0.0.4: + 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" + +walk@^2.3.9: + version "2.3.9" + resolved "https://registry.yarnpkg.com/walk/-/walk-2.3.9.tgz#31b4db6678f2ae01c39ea9fb8725a9031e558a7b" + dependencies: + foreachasync "^3.0.0" + +watchpack@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" + dependencies: + async "^2.1.2" + chokidar "^1.7.0" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" + dependencies: + minimalistic-assert "^1.0.0" + +webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.11.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" + dependencies: + memory-fs "~0.4.1" + mime "^1.3.4" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + time-stamp "^2.0.0" + +webpack-dev-server@^2.4.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.7.1.tgz#21580f5a08cd065c71144cf6f61c345bca59a8b8" + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^1.6.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + del "^3.0.0" + express "^4.13.3" + html-entities "^1.2.0" + http-proxy-middleware "~0.17.4" + internal-ip "^1.2.0" + ip "^1.1.5" + loglevel "^1.4.1" + opn "4.0.2" + portfinder "^1.0.9" + selfsigned "^1.9.1" + serve-index "^1.7.2" + sockjs "0.3.18" + sockjs-client "1.1.4" + spdy "^3.4.1" + strip-ansi "^3.0.0" + supports-color "^3.1.1" + webpack-dev-middleware "^1.11.0" + yargs "^6.0.0" + +webpack-sources@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf" + dependencies: + source-list-map "^2.0.0" + source-map "~0.5.3" + +webpack@^3.0.0: + version "3.5.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.5.5.tgz#3226f09fc8b3e435ff781e7af34f82b68b26996c" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^5.1.5" + ajv-keywords "^2.0.0" + async "^2.1.2" + enhanced-resolve "^3.4.0" + escope "^3.6.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^4.2.1" + tapable "^0.2.7" + uglifyjs-webpack-plugin "^0.4.6" + watchpack "^1.4.0" + webpack-sources "^1.0.1" + yargs "^8.0.2" + +websocket-driver@>=0.5.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + dependencies: + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.0.9, which@^1.1.1, which@^1.2.1, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +which@~1.2.10: + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +word-wrap@^1.0.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@^1.0.0, wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.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.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +wtf-8@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + +xml-char-classes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" + +xmlhttprequest-ssl@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@^6.0.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.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" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + dependencies: + fd-slicer "~1.0.1" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From d10167bfa7c34703a75c8b477e74930b27eb8aae Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Fri, 18 Aug 2017 14:51:03 -0500 Subject: [PATCH 059/159] fix: no longer fall back to period decimal interpretation (#151) - ng-currency will no longer fall back to period decimal interpretation when it doesn't find the locales decimal separator. - Added unit tests to catch this scenario --- src/ng-currency.directive.js | 18 +++------ .../ng-currency/ng-currency.directive.spec.js | 38 +++++++++++++------ 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/src/ng-currency.directive.js b/src/ng-currency.directive.js index 74c0696..dae6dba 100644 --- a/src/ng-currency.directive.js +++ b/src/ng-currency.directive.js @@ -170,18 +170,12 @@ export default function ngCurrency($filter, $locale, $timeout, ngCurrencySetting function clearValue(value, replaceSeparator = true) { value = String(value); - let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; + const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; let cleared = null; - if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && - value.indexOf('.') !== -1 && - fraction > 0) { - dSeparator = '.'; - } - // Replace negative pattern to minus sign (-) const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction); - const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); + const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); const value_dummy_txt = value.replace(neg_regexp.exec(value), ''); @@ -194,12 +188,12 @@ export default function ngCurrency($filter, $locale, $timeout, ngCurrencySetting value = '-0'; } - if (decimalRex(dSeparator).test(value)) { - cleared = value.match(decimalRex(dSeparator)) - .join('').match(clearRex(dSeparator)) || ['']; + if (decimalRex(decimalSeparator).test(value)) { + cleared = value.match(decimalRex(decimalSeparator)) + .join('').match(clearRex(decimalSeparator)) || ['']; cleared = cleared[0]; - cleared = replaceSeparator ? cleared.replace(dSeparator, '.') : cleared; + cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared; } return cleared || null; diff --git a/test/ng-currency/ng-currency.directive.spec.js b/test/ng-currency/ng-currency.directive.spec.js index b31e827..c207b13 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/test/ng-currency/ng-currency.directive.spec.js @@ -131,17 +131,33 @@ describe('ngCurrency directive tests', () => { expect(element.val()).toEqual('($0.50)'); }); - it('should support locales with "," as the decimal separator and "." as the group separator', () => { - $locale.NUMBER_FORMATS.DECIMAL_SEP = ','; - $locale.NUMBER_FORMATS.GROUP_SEP = '.'; - element.val('$1.000,50'); - element.triggerHandler('input'); - element.triggerHandler('blur'); - expect(scope.value).toEqual(1000.5); - expect(element.val()).toEqual('$1.000,50'); - element.triggerHandler('focus'); - expect(scope.value).toEqual(1000.5); - expect(element.val()).toEqual('1000,50'); + describe('Decimal: "," : Group: "."', () => { + beforeEach(() => { + $locale.NUMBER_FORMATS.DECIMAL_SEP = ','; + $locale.NUMBER_FORMATS.GROUP_SEP = '.'; + }); + + it('should support usage with the decimal separator', () => { + element.val('$1.000,50'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(scope.value).toEqual(1000.5); + expect(element.val()).toEqual('$1.000,50'); + element.triggerHandler('focus'); + expect(scope.value).toEqual(1000.5); + expect(element.val()).toEqual('1000,50'); + }); + + it('should support usage without the decimal separator', () => { + element.val('$100.000'); + element.triggerHandler('input'); + element.triggerHandler('blur'); + expect(scope.value).toEqual(100000); + expect(element.val()).toEqual('$100.000,00'); + element.triggerHandler('focus'); + expect(scope.value).toEqual(100000); + expect(element.val()).toEqual('100000,00'); + }); }); }); From b8c490667865a2c2f996fb3b5cb022722fc5532d Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Fri, 18 Aug 2017 14:58:26 -0500 Subject: [PATCH 060/159] chore: publish using npm (#152) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 152a58c..c1c5fe5 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "build:dev": "webpack -d", "build:prod": "webpack -p", "publish-latest": "publish-latest --user-email aguirrel@xuar.com.ar --user-name aguirrel", - "semantic-release": "semantic-release pre && yarn run build && yarn publish && yarn run publish-latest && semantic-release post" + "semantic-release": "semantic-release pre && yarn run build && npm publish && npm run publish-latest && semantic-release post" }, "license": "MIT", "devDependencies": { From a5c532a914aa6c3f719fbb9ea5223b85ff3a8764 Mon Sep 17 00:00:00 2001 From: aguirrel Date: Fri, 18 Aug 2017 20:01:47 +0000 Subject: [PATCH 061/159] v1.2.3 --- dist/ng-currency.js | 2 ++ dist/ng-currency.js.map | 1 + package.json | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 dist/ng-currency.js create mode 100644 dist/ng-currency.js.map diff --git a/dist/ng-currency.js b/dist/ng-currency.js new file mode 100644 index 0000000..4af351f --- /dev/null +++ b/dist/ng-currency.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={i:t,l:!1,exports:{}};return e[t].call(u.exports,u,u.exports,n),u.l=!0,u.exports}var r={};return n.m=e,n.c=r,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(1),o=t(u),i=r(2),a=t(i),c=r(3),f=t(c),l=o.default.module("ng-currency",[]);l.provider("ngCurrencySettings",a.default),l.directive("ngCurrency",f.default),n.default=l.name},function(n,r){n.exports=e},function(e,n,r){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var u=function(){function e(e,n){for(var r=0;r=0;t--)e=a.$parsers[t](e)}else e=a.$$rawModelValue;for(var u=a.$formatters.length-1;u>=0;u--)e=a.$formatters[u](e);a.$viewValue=e,a.$render()}}function f(){if(a.$validate(),h){var e=l(a.$$rawModelValue);e!==a.$$rawModelValue&&(a.$setViewValue(e.toFixed(x)),a.$commitViewValue(),c())}}function l(e){return g&&(void 0!==y&&e>y?e=y:void 0!==b&&e1&&void 0!==arguments[1])||arguments[1];r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null,i=e("currency")("-1",p(),x),a=RegExp("[0-9."+u+n.NUMBER_FORMATS.GROUP_SEP+"]+");return i.replace(a.exec(i),"")===r.replace(a.exec(r),"")&&(r="-"+a.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),d(u).test(r)&&(o=r.match(d(u)).join("").match(s(u))||[""],o=o[0],o=t?o.replace(u,"."):o),o||null}function p(){return void 0===m?n.NUMBER_FORMATS.CURRENCY_SYM:m}var $=t.defaults,g=$.hardCap,b=$.min,y=$.max,m=$.currencySymbol,x=$.fraction,O=i.required,h=!0;i.$observe("ngCurrency",function(e){h="false"!==e,h?c():(a.$viewValue=a.$$rawModelValue,a.$render())}),i.$observe("hardCap",function(e){g="true"===e,f()}),i.$observe("min",function(e){b=e?Number(e):void 0,f()}),i.$observe("max",function(e){y=e?Number(e):void 0,f()}),i.$observe("currencySymbol",function(e){m=e,c()}),i.$observe("required",function(e){O=e,f()}),i.$observe("fraction",function(e){x=e||2,c(),f()}),r(function(){u.$emit("currencyRedraw")}),a.$parsers.push(function(e){return h&&-1===[void 0,null,""].indexOf(e)?(e=v(e),e=l(Number(e))):e}),a.$formatters.push(function(n){return h&&-1===[void 0,null,""].indexOf(n)?e("currency")(n,p(),x):n}),a.$validators.min=function(e){return!(O||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!h||-1!==[void 0,null].indexOf(b)||isNaN(b)||e>=b)},a.$validators.max=function(e){return!(O||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!h||-1!==[void 0,null].indexOf(y)||isNaN(y)||e<=y)},a.$validators.fraction=function(e){return!h||!e||!isNaN(e)},u.$on("currencyRedraw",function(){f(),c()}),o.bind("focus",function(){if(h){var e=v(a.$viewValue,!1);a.$viewValue!==e&&(a.$viewValue=e,a.$render(),o.triggerHandler("focus"))}}),o.bind("blur",c)}}}Object.defineProperty(n,"__esModule",{value:!0}),n.default=t,t.$inject=["$filter","$locale","$timeout","ngCurrencySettings"]}])}); +//# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map new file mode 100644 index 0000000..d3813ca --- /dev/null +++ b/dist/ng-currency.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap bc2ab2b9337bc1f3b7f7","webpack:///./ng-currency.module.js","webpack:///external \"angular\"","webpack:///./ng-currency-settings.provider.js","webpack:///./ng-currency.directive.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_interopRequireDefault","obj","default","value","_angular","_angular2","_ngCurrencySettingsProvider","_ngCurrencySettingsProvider2","_ngCurrencyDirective","_ngCurrencyDirective2","provider","directive","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","ngCurrencySettings","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","defaults","set","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","controller","reformat","active","updateOn","debounce","$options","getOption","$viewValue","$parsers","$$rawModelValue","$formatters","$render","revalidate","$validate","keepInRange","$setViewValue","toFixed","$commitViewValue","decimalRex","dChar","RegExp","clearRex","clearValue","replaceSeparator","arguments","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","replace","exec","test","match","join","CURRENCY_SYM","_ngCurrencySettings$d","ngRequired","required","$observe","Number","$emit","push","indexOf","$validators","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _angular = __webpack_require__(1);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\nvar _ngCurrencySettingsProvider = __webpack_require__(2);\n\nvar _ngCurrencySettingsProvider2 = _interopRequireDefault(_ngCurrencySettingsProvider);\n\nvar _ngCurrencyDirective = __webpack_require__(3);\n\nvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _module = _angular2.default.module('ng-currency', []);\n\n_module.provider('ngCurrencySettings', _ngCurrencySettingsProvider2.default);\n_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\nexports.default = _module.name;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ngCurrencySettings = function () {\n function ngCurrencySettings() {\n _classCallCheck(this, ngCurrencySettings);\n\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n\n\n _createClass(ngCurrencySettings, [{\n key: \"$get\",\n value: function $get() {\n var provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n }, {\n key: \"defaults\",\n get: function get() {\n return this._defaults;\n },\n set: function set(defaults) {\n this._defaults = defaults;\n }\n }]);\n\n return ngCurrencySettings;\n}();\n\nexports.default = ngCurrencySettings;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ngCurrency;\nfunction ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: function link(scope, element, attrs, controller) {\n var _ngCurrencySettings$d = ngCurrencySettings.defaults,\n hardCap = _ngCurrencySettings$d.hardCap,\n min = _ngCurrencySettings$d.min,\n max = _ngCurrencySettings$d.max,\n currencySymbol = _ngCurrencySettings$d.currencySymbol,\n fraction = _ngCurrencySettings$d.fraction;\n\n var ngRequired = attrs.required;\n var active = true;\n\n attrs.$observe('ngCurrency', function (value) {\n active = value !== 'false';\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', function (value) {\n hardCap = value === 'true';\n revalidate();\n });\n attrs.$observe('min', function (value) {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', function (value) {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', function (value) {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', function (value) {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', function (value) {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(function () {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push(function (value) {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push(function (value) {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = function (value) {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n };\n\n controller.$validators.max = function (value) {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n };\n\n controller.$validators.fraction = function (value) {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n var value = void 0;\n var updateOn = void 0,\n debounce = void 0;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (var i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (var _i = controller.$formatters.length - 1; _i >= 0; _i--) {\n value = controller.$formatters[_i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n var value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', function () {\n revalidate();\n reformat();\n });\n\n element.bind('focus', function () {\n if (active) {\n var value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n var replaceSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n value = String(value);\n var decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n var cleared = null;\n\n // Replace negative pattern to minus sign (-)\n var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n var neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator)).join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// ng-currency.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap bc2ab2b9337bc1f3b7f7","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n// WEBPACK FOOTER //\n// ./ng-currency.module.js","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"angular\"\n// module id = 1\n// module chunks = 0","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./ng-currency-settings.provider.js","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n\n\n\n// WEBPACK FOOTER //\n// ./ng-currency.directive.js"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index c1c5fe5..73be76e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.0.0-semantically-released.0", + "version": "1.2.3", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", @@ -69,4 +69,4 @@ "path": "./node_modules/cz-conventional-changelog" } } -} +} \ No newline at end of file From 3e46e1c042608fedb951d94e5bda8cd149463451 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Tue, 19 Sep 2017 09:28:20 -0500 Subject: [PATCH 062/159] =?UTF-8?q?chore(package):=20update=20semantic-rel?= =?UTF-8?q?ease=20to=20version=208.0.0=20=F0=9F=9A=80=20(#153)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- yarn.lock | 84 ++++++++++++++++++++-------------------------------- 2 files changed, 33 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index c1c5fe5..69fa548 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "ng-select-all-on-focus": "^1.0.3", "phantomjs-prebuilt": "^2.1.8", "publish-latest": "^1.1.2", - "semantic-release": "^7.0.1", + "semantic-release": "^8.0.0", "sinon": "^3.0.0", "webpack": "^3.0.0", "webpack-dev-server": "^2.4.5" diff --git a/yarn.lock b/yarn.lock index 0ef3e7c..1480ef0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,13 +8,13 @@ dependencies: conventional-changelog "0.0.17" -"@semantic-release/condition-travis@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@semantic-release/condition-travis/-/condition-travis-5.0.2.tgz#f4bb777a6c6db5565d70754a9b629233bd4a6597" +"@semantic-release/condition-travis@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@semantic-release/condition-travis/-/condition-travis-6.0.0.tgz#e4a592bd054720a258cec1477500dc5e494ecb83" dependencies: "@semantic-release/error" "^1.0.0" semver "^5.0.3" - travis-deploy-once "1.0.0-node-0.10-support" + travis-deploy-once "^2.0.1" "@semantic-release/error@^1.0.0": version "1.0.0" @@ -321,6 +321,13 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" +axios@^0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz#ba4f92f17167dfbab40983785454b9ac149c3c6d" + dependencies: + follow-redirects "^1.2.3" + is-buffer "^1.1.5" + babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -642,14 +649,6 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-polyfill@^6.16.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - babel-preset-es2015@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" @@ -795,7 +794,7 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.3.0, bluebird@^3.4.6, bluebird@^3.5.0: +bluebird@^3.3.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" @@ -1498,7 +1497,7 @@ dateformat@^1.0.11, dateformat@^1.0.12, dateformat@^1.0.6: get-stdin "^4.0.1" meow "^3.3.0" -debug@2, debug@2.6.8, debug@^2.2.0, debug@^2.6.6, debug@^2.6.8: +debug@2, debug@2.6.8, debug@^2.2.0, debug@^2.4.5, debug@^2.6.6, debug@^2.6.8: version "2.6.8" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" dependencies: @@ -2237,6 +2236,12 @@ follow-redirects@0.0.7: debug "^2.2.0" stream-consume "^0.1.0" +follow-redirects@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.4.tgz#355e8f4d16876b43f577b0d5ce2668b9723214ea" + dependencies: + debug "^2.4.5" + for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -3438,7 +3443,7 @@ lodash@^3.6.0, lodash@^3.7.0, lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.0.0, lodash@^4.0.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0: +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -4479,10 +4484,6 @@ regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - regenerator-runtime@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" @@ -4559,22 +4560,7 @@ request-progress@~2.0.1: dependencies: throttleit "^1.0.0" -request-promise-core@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" - dependencies: - lodash "^4.13.1" - -request-promise@^4.1.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.1.tgz#7eec56c89317a822cbfea99b039ce543c2e15f67" - dependencies: - bluebird "^3.5.0" - request-promise-core "1.1.1" - stealthy-require "^1.1.0" - tough-cookie ">=2.3.0" - -request@^2.74.0, request@^2.78.0, request@^2.81.0, request@~2.81.0: +request@^2.74.0, request@^2.81.0, request@~2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" dependencies: @@ -4736,12 +4722,12 @@ selfsigned@^1.9.1: dependencies: node-forge "0.6.33" -semantic-release@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-7.0.2.tgz#3d418df4070b1fbd4ff2b7b75676322330c2b049" +semantic-release@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-8.0.0.tgz#76eafbbfd3bb7e0f3463823e2cecc403b14c7bb1" dependencies: "@semantic-release/commit-analyzer" "^2.0.0" - "@semantic-release/condition-travis" "^5.0.2" + "@semantic-release/condition-travis" "^6.0.0" "@semantic-release/error" "^1.0.0" "@semantic-release/last-release-npm" "^1.2.1" "@semantic-release/release-notes-generator" "^3.0.1" @@ -4759,7 +4745,7 @@ semantic-release@^7.0.1: run-series "^1.1.3" semver "^5.2.0" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.2.0, semver@^5.3.0: +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.2.0, semver@^5.3.0, semver@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -5049,10 +5035,6 @@ sshpk@^1.7.0: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" -stealthy-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" @@ -5270,7 +5252,7 @@ to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" -tough-cookie@>=2.3.0, tough-cookie@~2.3.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: @@ -5285,14 +5267,12 @@ travis-ci@^2.1.1: request "~2.74.0" underscore.string "~2.2.0rc" -travis-deploy-once@1.0.0-node-0.10-support: - version "1.0.0-node-0.10-support" - resolved "https://registry.yarnpkg.com/travis-deploy-once/-/travis-deploy-once-1.0.0-node-0.10-support.tgz#98ecce7d95b2f4ba5dcdeeebf54b9df87713d5e6" +travis-deploy-once@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/travis-deploy-once/-/travis-deploy-once-2.0.1.tgz#6a60a3d15a6e19f00b979b4bc5e56990c8f2d593" dependencies: - babel-polyfill "^6.16.0" - bluebird "^3.4.6" - request "^2.78.0" - request-promise "^4.1.1" + axios "^0.16.2" + semver "^5.4.1" travis-ci "^2.1.1" trim-newlines@^1.0.0: From 090abdca2c6fea239423b3a283917901ce77cf7c Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Tue, 26 Sep 2017 13:30:43 -0500 Subject: [PATCH 063/159] =?UTF-8?q?chore(package):=20update=20sinon=20to?= =?UTF-8?q?=20version=204.0.0=20=F0=9F=9A=80=20(#154)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- yarn.lock | 331 +++++++++++++++++---------------------------------- 2 files changed, 112 insertions(+), 221 deletions(-) diff --git a/package.json b/package.json index 69fa548..6685079 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "phantomjs-prebuilt": "^2.1.8", "publish-latest": "^1.1.2", "semantic-release": "^8.0.0", - "sinon": "^3.0.0", + "sinon": "^4.0.0", "webpack": "^3.0.0", "webpack-dev-server": "^2.4.5" }, diff --git a/yarn.lock b/yarn.lock index 1480ef0..02c282d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,11 +2,16 @@ # yarn lockfile v1 -"@semantic-release/commit-analyzer@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-2.0.0.tgz#924d1e2c30167c6a472bed9f66ee8f8e077489b2" +"@semantic-release/commit-analyzer@^3.0.1": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-3.0.4.tgz#040bd2b99909f5671063be0c68fd782fd4543997" dependencies: - conventional-changelog "0.0.17" + "@semantic-release/error" "^2.0.0" + conventional-changelog-angular "^1.4.0" + conventional-commits-parser "^2.0.0" + import-cwd "^2.1.0" + lodash "^4.17.4" + pify "^3.0.0" "@semantic-release/condition-travis@^6.0.0": version "6.0.0" @@ -20,20 +25,28 @@ version "1.0.0" resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-1.0.0.tgz#bb8f8eeedd5c7f8c46f96b37ef39e1b8c376c1cc" -"@semantic-release/last-release-npm@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@semantic-release/last-release-npm/-/last-release-npm-1.2.1.tgz#ff748142ecf15354b833a86ba18205f7fce594ee" +"@semantic-release/error@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.0.0.tgz#f156ecd509f5288c48bc7425a8abe22f975d1f8b" + +"@semantic-release/last-release-npm@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@semantic-release/last-release-npm/-/last-release-npm-2.0.1.tgz#9d9e40b7dfa2778eb08dc995263da3e366542416" dependencies: - "@semantic-release/error" "^1.0.0" - npm-registry-client "^7.0.1" - npmlog "^1.2.1" + "@semantic-release/error" "^2.0.0" + npm-registry-client "^8.4.0" + npmlog "^4.0.0" -"@semantic-release/release-notes-generator@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-3.0.1.tgz#cc912fb3bf3c5fc72740397ffc3f10b4c9177dbd" +"@semantic-release/release-notes-generator@^4.0.0": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-4.0.4.tgz#bbb57ad7fe022fc9dfa305556de5910779188684" dependencies: - conventional-changelog "1.1.4" - github-url-from-git "^1.4.0" + "@semantic-release/error" "^2.0.0" + conventional-changelog-angular "^1.4.0" + conventional-changelog-core "^1.9.0" + import-cwd "^2.1.0" + lodash "^4.17.4" + pify "^3.0.0" JSONStream@^1.0.4: version "1.3.1" @@ -166,10 +179,6 @@ ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" -ansi@^0.3.0, ansi@~0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" - anymatch@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" @@ -181,13 +190,6 @@ aproba@^1.0.3: version "1.1.2" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" -are-we-there-yet@~1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz#a2d28c93102aa6cc96245a26cb954de06ec53f0c" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.0 || ^1.1.13" - are-we-there-yet@~1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" @@ -934,6 +936,10 @@ builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + bytes@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" @@ -1232,25 +1238,11 @@ content-type@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" -conventional-changelog-angular@^1.3.4: - version "1.4.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.4.0.tgz#118b9f7d41a3d99500bfb6bea1f3525e055e8b9b" +conventional-changelog-angular@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.5.0.tgz#50b2d45008448455fdf67e06ea01972fbd08182a" dependencies: compare-func "^1.3.1" - github-url-from-git "^1.4.0" - q "^1.4.1" - read-pkg-up "^2.0.0" - -conventional-changelog-atom@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.1.1.tgz#d40a9b297961b53c745e5d1718fd1a3379f6a92f" - dependencies: - q "^1.4.1" - -conventional-changelog-codemirror@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.1.0.tgz#7577a591dbf9b538e7a150a7ee62f65a2872b334" - dependencies: q "^1.4.1" conventional-changelog-core@^1.9.0: @@ -1271,43 +1263,6 @@ conventional-changelog-core@^1.9.0: read-pkg-up "^1.0.1" through2 "^2.0.0" -conventional-changelog-ember@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.2.6.tgz#8b7355419f5127493c4c562473ab2fc792f1c2b6" - dependencies: - q "^1.4.1" - -conventional-changelog-eslint@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-0.1.0.tgz#a52411e999e0501ce500b856b0a643d0330907e2" - dependencies: - q "^1.4.1" - -conventional-changelog-express@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.1.0.tgz#55c6c841c811962036c037bdbd964a54ae310fce" - dependencies: - q "^1.4.1" - -conventional-changelog-jquery@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510" - dependencies: - q "^1.4.1" - -conventional-changelog-jscs@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c" - dependencies: - q "^1.4.1" - -conventional-changelog-jshint@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.1.0.tgz#00cab8e9a3317487abd94c4d84671342918d2a07" - dependencies: - compare-func "^1.3.1" - q "^1.4.1" - conventional-changelog-writer@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-1.4.1.tgz#3f4cb4d003ebb56989d30d345893b52a43639c8e" @@ -1323,31 +1278,6 @@ conventional-changelog-writer@^1.1.0: split "^1.0.0" through2 "^2.0.0" -conventional-changelog@0.0.17: - version "0.0.17" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-0.0.17.tgz#5e0216600f4686190f0c82efbb0b3dd11b49ce34" - dependencies: - dateformat "^1.0.11" - event-stream "^3.3.0" - github-url-from-git "^1.4.0" - lodash "^3.6.0" - normalize-package-data "^1.0.3" - -conventional-changelog@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.4.tgz#108bc750c2a317e200e2f9b413caaa1f8c7efa3b" - dependencies: - conventional-changelog-angular "^1.3.4" - conventional-changelog-atom "^0.1.0" - conventional-changelog-codemirror "^0.1.0" - conventional-changelog-core "^1.9.0" - conventional-changelog-ember "^0.2.6" - conventional-changelog-eslint "^0.1.0" - conventional-changelog-express "^0.1.0" - conventional-changelog-jquery "^0.1.0" - conventional-changelog-jscs "^0.1.0" - conventional-changelog-jshint "^0.1.0" - conventional-commit-types@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.2.0.tgz#5db95739d6c212acbe7b6f656a11b940baa68946" @@ -1371,6 +1301,18 @@ conventional-commits-parser@^1.0.0: through2 "^2.0.0" trim-off-newlines "^1.0.0" +conventional-commits-parser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.0.0.tgz#71d01910cb0a99aeb20c144e50f81f4df3178447" + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.0" + lodash "^4.2.1" + meow "^3.3.0" + split2 "^2.0.0" + through2 "^2.0.0" + trim-off-newlines "^1.0.0" + convert-source-map@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" @@ -1677,10 +1619,6 @@ doxme@^1.8.1: repo-path-parse "^1.0.1" striptags "^2.0.0" -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" @@ -1987,18 +1925,6 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" -event-stream@^3.3.0: - version "3.3.4" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" - dependencies: - duplexer "~0.1.1" - from "~0" - map-stream "~0.1.0" - pause-stream "0.0.11" - split "0.3" - stream-combiner "~0.0.4" - through "~2.3.1" - eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" @@ -2290,10 +2216,6 @@ fresh@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" -from@~0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - fs-access@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" @@ -2340,16 +2262,6 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -gauge@~1.2.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" - dependencies: - ansi "^0.3.0" - has-unicode "^2.0.0" - lodash.pad "^4.1.0" - lodash.padend "^4.1.0" - lodash.padstart "^4.1.0" - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -2445,14 +2357,6 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" -github-url-from-git@^1.3.0, github-url-from-git@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/github-url-from-git/-/github-url-from-git-1.5.0.tgz#f985fedcc0a9aa579dc88d7aff068d55cc6251a0" - -github-url-from-username-repo@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/github-url-from-username-repo/-/github-url-from-username-repo-1.0.2.tgz#7dd79330d2abe69c10c2cef79714c97215791dfa" - github@^8.0.0: version "8.2.1" resolved "https://registry.yarnpkg.com/github/-/github-8.2.1.tgz#616b2211fbcd1cc8631669aed67653e62eb53816" @@ -2651,7 +2555,7 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -hosted-git-info@^2.1.4, hosted-git-info@^2.1.5: +hosted-git-info@^2.1.4, hosted-git-info@^2.4.2: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" @@ -2756,6 +2660,18 @@ ignore@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" +import-cwd@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + dependencies: + import-from "^2.1.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + dependencies: + resolve-from "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -3390,6 +3306,10 @@ lodash.assign@^3.0.0: lodash._createassigner "^3.0.0" lodash.keys "^3.0.0" +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -3410,18 +3330,6 @@ lodash.map@^4.5.1: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" -lodash.pad@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" - -lodash.padend@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - -lodash.padstart@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" @@ -3439,7 +3347,7 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "~3.0.0" -lodash@^3.6.0, lodash@^3.7.0, lodash@^3.8.0: +lodash@^3.7.0, lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -3512,10 +3420,6 @@ 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" - markdown-table@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-0.3.2.tgz#ab0501425117218c498754d57e244dcd4a80232e" @@ -3714,14 +3618,15 @@ ng-select-all-on-focus@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/ng-select-all-on-focus/-/ng-select-all-on-focus-1.0.3.tgz#2fac4a0b21823a0791a30f5e035c0620336ea9d0" -nise@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nise/-/nise-1.0.1.tgz#0da92b10a854e97c0f496f6c2845a301280b3eef" +nise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/nise/-/nise-1.1.0.tgz#37e41b9bf0041ccb83d1bf03e79440bbc0db10ad" dependencies: formatio "^1.2.0" just-extend "^1.1.22" lolex "^1.6.0" path-to-regexp "^1.7.0" + text-encoding "^0.6.4" no-case@^2.2.0: version "2.3.1" @@ -3799,14 +3704,6 @@ nopt@^4.0.0, nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-1.0.3.tgz#8be955b8907af975f1a4584ea8bb9b41492312f5" - dependencies: - github-url-from-git "^1.3.0" - github-url-from-username-repo "^1.0.0" - semver "2 || 3 || 4" - normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, "normalize-package-data@~1.0.1 || ^2.0.0": version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" @@ -3822,26 +3719,29 @@ normalize-path@^2.0.0, normalize-path@^2.0.1: dependencies: remove-trailing-separator "^1.0.1" -"npm-package-arg@^3.0.0 || ^4.0.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-4.2.1.tgz#593303fdea85f7c422775f17f9eb7670f680e3ec" +"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0": + version "5.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-5.1.2.tgz#fb18d17bb61e60900d6312619919bd753755ab37" dependencies: - hosted-git-info "^2.1.5" + hosted-git-info "^2.4.2" + osenv "^0.1.4" semver "^5.1.0" + validate-npm-package-name "^3.0.0" -npm-registry-client@^7.0.1: - version "7.5.0" - resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-7.5.0.tgz#0f6dd6e5d11424cfa99fce5b930feaf09b4f7f04" +npm-registry-client@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.4.0.tgz#d52b901685647fc62a4c03eafecb6ceaa5018d4c" dependencies: concat-stream "^1.5.2" graceful-fs "^4.1.6" normalize-package-data "~1.0.1 || ^2.0.0" - npm-package-arg "^3.0.0 || ^4.0.0" + npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0" once "^1.3.3" request "^2.74.0" retry "^0.10.0" semver "2 >=2.2.1 || 3.x || 4 || 5" slide "^1.1.3" + ssri "^4.1.2" optionalDependencies: npmlog "2 || ^3.1.0 || ^4.0.0" @@ -3874,14 +3774,6 @@ npmconf@^2.1.2: gauge "~2.7.3" set-blocking "~2.0.0" -npmlog@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-1.2.1.tgz#28e7be619609b53f7ad1dd300a10d64d716268b6" - dependencies: - ansi "~0.3.0" - are-we-there-yet "~1.0.0" - gauge "~1.2.0" - null-check@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" @@ -4169,12 +4061,6 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" -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.13" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.13.tgz#c37d295531e786b1da3e3eadc840426accb0ae25" @@ -4423,7 +4309,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9: +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -4640,6 +4526,10 @@ 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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -4722,15 +4612,15 @@ selfsigned@^1.9.1: dependencies: node-forge "0.6.33" -semantic-release@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-8.0.0.tgz#76eafbbfd3bb7e0f3463823e2cecc403b14c7bb1" +semantic-release@^8.0.0: + version "8.0.4" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-8.0.4.tgz#64d500c71d39b5f7cd414e70b9033f7fa6be4552" dependencies: - "@semantic-release/commit-analyzer" "^2.0.0" + "@semantic-release/commit-analyzer" "^3.0.1" "@semantic-release/condition-travis" "^6.0.0" - "@semantic-release/error" "^1.0.0" - "@semantic-release/last-release-npm" "^1.2.1" - "@semantic-release/release-notes-generator" "^3.0.1" + "@semantic-release/error" "^2.0.0" + "@semantic-release/last-release-npm" "^2.0.0" + "@semantic-release/release-notes-generator" "^4.0.0" git-head "^1.2.1" github "^8.0.0" lodash "^4.0.0" @@ -4832,15 +4722,16 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -sinon@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-3.2.1.tgz#d8adabd900730fd497788a027049c64b08be91c2" +sinon@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-4.0.0.tgz#a54a5f0237aa1dd2215e5e81c89b42b50c4fdb6b" dependencies: diff "^3.1.0" formatio "1.2.0" + lodash.get "^4.4.2" lolex "^2.1.2" native-promise-only "^0.8.1" - nise "^1.0.1" + nise "^1.1.0" path-to-regexp "^1.7.0" samsam "^1.1.3" text-encoding "0.6.4" @@ -5001,12 +4892,6 @@ split2@^2.0.0: dependencies: through2 "^2.0.2" -split@0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" - dependencies: - through "2" - split@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" @@ -5031,6 +4916,12 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" +ssri@^4.1.2: + version "4.1.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-4.1.6.tgz#0cb49b6ac84457e7bdd466cb730c3cb623e9a25b" + dependencies: + safe-buffer "^5.1.0" + "statuses@>= 1.3.1 < 2", statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -5042,12 +4933,6 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" -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" @@ -5187,7 +5072,7 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" -text-encoding@0.6.4: +text-encoding@0.6.4, text-encoding@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" @@ -5210,7 +5095,7 @@ through2@^2.0.0, through2@^2.0.2: readable-stream "^2.1.5" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.6: +through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -5443,6 +5328,12 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + dependencies: + builtins "^1.0.3" + vary@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" From 1da7dc329d93b575a940c2558d3ed85fe75ca883 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 15 Dec 2017 09:57:42 -0600 Subject: [PATCH 064/159] =?UTF-8?q?chore(package):=20update=20karma-spec-r?= =?UTF-8?q?eporter=20to=20version=200.0.32=20=F0=9F=9A=80=20(#155)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- yarn.lock | 63 ++++++++++++++++++++++++++-------------------------- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/package.json b/package.json index 6685079..f3001ac 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "karma-phantomjs-launcher": "^1.0.1", "karma-sinon": "^1.0.5", "karma-sourcemap-loader": "^0.3.7", - "karma-spec-reporter": "^0.0.31", + "karma-spec-reporter": "^0.0.32", "karma-webpack": "^2.0.0", "ng-select-all-on-focus": "^1.0.3", "phantomjs-prebuilt": "^2.1.8", diff --git a/yarn.lock b/yarn.lock index 02c282d..995976e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3070,9 +3070,9 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -just-extend@^1.1.22: - version "1.1.22" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.22.tgz#3330af756cab6a542700c64b2e4e4aa062d52fff" +just-extend@^1.1.26: + version "1.1.27" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.27.tgz#ec6e79410ff914e472652abfa0e603c03d60e905" karma-chrome-launcher@^2.2.0: version "2.2.0" @@ -3122,9 +3122,9 @@ karma-sourcemap-loader@^0.3.7: dependencies: graceful-fs "^4.1.2" -karma-spec-reporter@^0.0.31: - version "0.0.31" - resolved "https://registry.yarnpkg.com/karma-spec-reporter/-/karma-spec-reporter-0.0.31.tgz#4830dc7148a155c7d7a186e632339a0d80fadec3" +karma-spec-reporter@0.0.32: + version "0.0.32" + resolved "https://registry.yarnpkg.com/karma-spec-reporter/-/karma-spec-reporter-0.0.32.tgz#2e9c7207ea726771260259f82becb543209e440a" dependencies: colors "^1.1.2" @@ -3374,9 +3374,9 @@ lolex@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" -lolex@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.1.2.tgz#2694b953c9ea4d013e5b8bfba891c991025b2629" +lolex@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.3.1.tgz#3d2319894471ea0950ef64692ead2a5318cff362" longest@^1.0.1: version "1.0.1" @@ -3588,10 +3588,6 @@ nan@^2.3.0: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" -native-promise-only@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -3618,12 +3614,12 @@ ng-select-all-on-focus@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/ng-select-all-on-focus/-/ng-select-all-on-focus-1.0.3.tgz#2fac4a0b21823a0791a30f5e035c0620336ea9d0" -nise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/nise/-/nise-1.1.0.tgz#37e41b9bf0041ccb83d1bf03e79440bbc0db10ad" +nise@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/nise/-/nise-1.2.0.tgz#079d6cadbbcb12ba30e38f1c999f36ad4d6baa53" dependencies: formatio "^1.2.0" - just-extend "^1.1.22" + just-extend "^1.1.26" lolex "^1.6.0" path-to-regexp "^1.7.0" text-encoding "^0.6.4" @@ -4598,7 +4594,7 @@ safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, s version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -samsam@1.x, samsam@^1.1.3: +samsam@1.x: version "1.2.1" resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" @@ -4722,20 +4718,17 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -sinon@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-4.0.0.tgz#a54a5f0237aa1dd2215e5e81c89b42b50c4fdb6b" +sinon@^4.0.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-4.1.3.tgz#fc599eda47ed9f1a694ce774b94ab44260bd7ac5" dependencies: diff "^3.1.0" formatio "1.2.0" lodash.get "^4.4.2" - lolex "^2.1.2" - native-promise-only "^0.8.1" - nise "^1.1.0" - path-to-regexp "^1.7.0" - samsam "^1.1.3" - text-encoding "0.6.4" - type-detect "^4.0.0" + lolex "^2.2.0" + nise "^1.2.0" + supports-color "^4.4.0" + type-detect "^4.0.5" slash@^1.0.0: version "1.0.0" @@ -5036,6 +5029,12 @@ supports-color@^4.0.0, supports-color@^4.2.1: dependencies: has-flag "^2.0.0" +supports-color@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" + table@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" @@ -5072,7 +5071,7 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" -text-encoding@0.6.4, text-encoding@^0.6.4: +text-encoding@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" @@ -5200,9 +5199,9 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" +type-detect@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.5.tgz#d70e5bc81db6de2a381bcaca0c6e0cbdc7635de2" type-is@~1.6.15: version "1.6.15" From 1f635e9a566de9bc78e76c68e0b0311e70c36a51 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 21 Dec 2017 13:34:14 -0600 Subject: [PATCH 065/159] =?UTF-8?q?chore(package):=20update=20karma=20to?= =?UTF-8?q?=20version=202.0.0=20=F0=9F=9A=80=20(#157)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- yarn.lock | 1266 +++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 1103 insertions(+), 165 deletions(-) diff --git a/package.json b/package.json index f3001ac..9c484ac 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "html-loader": "^0.5.0", "isparta-loader": "^2.0.0", "jasmine-core": "^2.4.1", - "karma": "^1.1.2", + "karma": "^2.0.0", "karma-chrome-launcher": "^2.2.0", "karma-coverage": "^1.1.1", "karma-firefox-launcher": "^1.0.1", diff --git a/yarn.lock b/yarn.lock index 995976e..21b639b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -48,6 +48,13 @@ lodash "^4.17.4" pify "^3.0.0" +JSONStream@^1.0.3: + version "1.3.2" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + JSONStream@^1.0.4: version "1.3.1" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" @@ -94,6 +101,14 @@ acorn@^5.0.0, acorn@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" +acorn@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" + +addressparser@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" + after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" @@ -120,6 +135,15 @@ ajv@^4.7.0, ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" +ajv@^5.1.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + ajv@^5.1.5, ajv@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39" @@ -213,6 +237,10 @@ arr-flatten@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +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" @@ -229,6 +257,14 @@ array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" +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" @@ -279,7 +315,7 @@ assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" -assert@^1.1.1: +assert@^1.1.1, assert@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" dependencies: @@ -289,10 +325,24 @@ ast-types@0.9.6: version "0.9.6" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" +ast-types@0.x.x: + version "0.10.1" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" + +astw@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917" + dependencies: + acorn "^4.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-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + async@1.x, async@^1.4.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -307,6 +357,12 @@ async@~0.9.0: version "0.9.2" resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" +async@~2.1.2: + version "2.1.5" + resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" + dependencies: + lodash "^4.14.0" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -319,10 +375,20 @@ 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: +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.2.1, aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" +axios@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" + dependencies: + follow-redirects "1.0.0" + axios@^0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz#ba4f92f17167dfbab40983785454b9ac149c3c6d" @@ -836,6 +902,18 @@ boom@2.x.x: dependencies: hoek "2.x.x" +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + dependencies: + hoek "4.x.x" + brace-expansion@^1.1.7: version "1.1.8" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" @@ -861,6 +939,22 @@ brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" +browser-pack@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.2.tgz#f86cd6cef4f5300c8e63e07a4d512f65fbff4531" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.7.1" + defined "^1.0.0" + through2 "^2.0.0" + umd "^3.0.0" + +browser-resolve@^1.11.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" @@ -912,6 +1006,64 @@ browserify-zlib@^0.1.4: dependencies: pako "~0.2.0" +browserify-zlib@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + dependencies: + pako "~1.0.5" + +browserify@^14.5.0: + version "14.5.0" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-14.5.0.tgz#0bbbce521acd6e4d1d54d8e9365008efb85a9cc5" + dependencies: + JSONStream "^1.0.3" + assert "^1.4.0" + browser-pack "^6.0.1" + browser-resolve "^1.11.0" + browserify-zlib "~0.2.0" + buffer "^5.0.2" + cached-path-relative "^1.0.0" + concat-stream "~1.5.1" + console-browserify "^1.1.0" + constants-browserify "~1.0.0" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^2.0.0" + domain-browser "~1.1.0" + duplexer2 "~0.1.2" + events "~1.1.0" + glob "^7.1.0" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "^1.0.0" + inherits "~2.0.1" + insert-module-globals "^7.0.0" + labeled-stream-splicer "^2.0.0" + module-deps "^4.0.8" + os-browserify "~0.3.0" + parents "^1.0.1" + path-browserify "~0.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^2.0.0" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum "^1.0.0" + shell-quote "^1.6.1" + stream-browserify "^2.0.0" + stream-http "^2.0.0" + string_decoder "~1.0.0" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^2.0.0" + timers-browserify "^1.0.1" + tty-browserify "~0.0.0" + url "~0.11.0" + util "~0.10.1" + vm-browserify "~0.0.1" + xtend "^4.0.0" + buffer-indexof@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.0.tgz#f54f647c4f4e25228baa656a2e57e43d5f270982" @@ -928,6 +1080,25 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.0.2: + version "5.0.8" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.8.tgz#84daa52e7cf2fa8ce4195bc5cf0f7809e0930b24" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +buildmail@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" + dependencies: + addressparser "1.0.1" + libbase64 "0.1.0" + libmime "3.0.0" + libqp "1.1.0" + nodemailer-fetch "1.6.0" + nodemailer-shared "1.1.0" + punycode "1.4.1" + builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -948,6 +1119,14 @@ bytes@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a" +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + +cached-path-relative@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7" + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -1059,6 +1238,10 @@ circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" +circular-json@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.4.0.tgz#c448ea998b7fe31ecf472ec29c6b608e2e2a62fd" + clean-css@4.1.x: version "4.1.7" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.7.tgz#b9aea4f85679889cf3eae8b40349ec4ebdfdd032" @@ -1095,6 +1278,10 @@ co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" +co@~3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/co/-/co-3.0.6.tgz#1445f226c5eb956138e68c9ac30167ea7d2e6bda" + 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" @@ -1119,6 +1306,15 @@ combine-lists@^1.0.0: dependencies: lodash "^4.5.0" +combine-source-map@~0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e" + dependencies: + convert-source-map "~1.1.0" + inline-source-map "~0.6.0" + lodash.memoize "~3.0.3" + source-map "~0.5.3" + 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" @@ -1154,10 +1350,6 @@ 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.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -1196,6 +1388,14 @@ concat-stream@1.6.0, concat-stream@^1.4.7, concat-stream@^1.5.2, concat-stream@^ readable-stream "^2.2.2" typedarray "^0.0.6" +concat-stream@~1.5.0, concat-stream@~1.5.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + config-chain@~1.1.8: version "1.1.11" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" @@ -1226,7 +1426,7 @@ 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" -constants-browserify@^1.0.0: +constants-browserify@^1.0.0, constants-browserify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -1317,6 +1517,10 @@ convert-source-map@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" +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" @@ -1374,6 +1578,28 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + dependencies: + boom "5.x.x" + +crypto-browserify@^3.0.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + 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" + randomfill "^1.0.3" + crypto-browserify@^3.11.0: version "3.11.1" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" @@ -1428,6 +1654,14 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" + +date-format@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" + date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" @@ -1445,24 +1679,30 @@ debug@2, debug@2.6.8, debug@^2.2.0, debug@^2.4.5, debug@^2.6.6, debug@^2.6.8: dependencies: ms "2.0.0" -debug@2.2.0: +debug@2.2.0, 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" -debug@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" - dependencies: - ms "0.7.2" - debug@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" dependencies: ms "2.0.0" +debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +debug@~2.6.4, debug@~2.6.6, debug@~2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + 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" @@ -1479,6 +1719,18 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +degenerator@~1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" + dependencies: + ast-types "0.x.x" + escodegen "1.x.x" + esprima "3.x.x" + del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -1514,6 +1766,15 @@ depd@1.1.1, depd@~1.1.0, depd@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" +deps-sort@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" + dependencies: + JSONStream "^1.0.3" + shasum "^1.0.0" + subarg "^1.0.0" + through2 "^2.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" @@ -1535,6 +1796,13 @@ detect-node@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" +detective@^4.0.0: + version "4.7.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" + dependencies: + acorn "^5.2.1" + defined "^1.0.0" + dezalgo@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" @@ -1591,7 +1859,7 @@ dom-serialize@^2.2.0: extend "^3.0.0" void-elements "^2.0.0" -domain-browser@^1.1.1: +domain-browser@^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" @@ -1601,6 +1869,10 @@ dot-prop@^3.0.0: dependencies: is-obj "^1.0.0" +double-ended-queue@^2.1.0-0: + version "2.1.0-0" + resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" + dox@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/dox/-/dox-0.6.1.tgz#8247075ad4b275fe88fbbae02fe12f3c5480a7fd" @@ -1619,6 +1891,12 @@ doxme@^1.8.1: repo-path-parse "^1.0.1" striptags "^2.0.0" +duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -1649,44 +1927,44 @@ encodeurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" -engine.io-client@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" +engine.io-client@~3.1.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.4.tgz#4fcf1370b47163bd2ce9be2733972430350d4ea1" dependencies: component-emitter "1.2.1" component-inherit "0.0.3" - debug "2.3.3" - engine.io-parser "1.3.2" + debug "~2.6.9" + engine.io-parser "~2.1.1" has-cors "1.1.0" indexof "0.0.1" - parsejson "0.0.3" parseqs "0.0.5" parseuri "0.0.5" - ws "1.1.2" - xmlhttprequest-ssl "1.5.3" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" -engine.io-parser@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.1.tgz#e0fb3f0e0462f7f58bb77c1a52e9f5a7e26e4668" dependencies: after "0.8.2" arraybuffer.slice "0.0.6" base64-arraybuffer "0.1.5" blob "0.0.4" - has-binary "0.1.7" - wtf-8 "1.0.0" + has-binary2 "~1.0.2" -engine.io@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" +engine.io@~3.1.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.4.tgz#3d0211b70a552ce841ffc7da8627b301a9a4162e" dependencies: accepts "1.3.3" base64id "1.0.0" cookie "0.3.1" - debug "2.3.3" - engine.io-parser "1.3.2" - ws "1.1.2" + debug "~2.6.9" + engine.io-parser "~2.1.0" + ws "~3.3.1" + optionalDependencies: + uws "~0.14.4" enhanced-resolve@^3.4.0: version "3.4.1" @@ -1795,6 +2073,17 @@ escodegen@1.8.x, escodegen@^1.6.1: optionalDependencies: source-map "~0.2.0" +escodegen@1.x.x: + version "1.9.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.5.6" + escope@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" @@ -1881,14 +2170,14 @@ esprima@2.7.x, esprima@^2.1.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" +esprima@3.x.x, esprima@^3.1.3, esprima@~3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" -esprima@~3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - esquery@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" @@ -1929,7 +2218,7 @@ eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" -events@^1.0.0: +events@^1.0.0, events@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -2017,7 +2306,7 @@ express@^4.13.3: utils-merge "1.0.0" vary "~1.1.1" -extend@3, extend@^3.0.0, extend@~3.0.0: +extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -2052,6 +2341,10 @@ fast-deep-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" @@ -2091,6 +2384,10 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" +file-uri-to-path@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -2162,6 +2459,12 @@ follow-redirects@0.0.7: debug "^2.2.0" stream-consume "^0.1.0" +follow-redirects@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" + dependencies: + debug "^2.2.0" + follow-redirects@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.4.tgz#355e8f4d16876b43f577b0d5ce2668b9723214ea" @@ -2194,6 +2497,14 @@ form-data@~1.0.0-rc4: combined-stream "^1.0.5" mime-types "^2.1.11" +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.4" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" @@ -2202,6 +2513,14 @@ form-data@~2.1.1: combined-stream "^1.0.5" mime-types "^2.1.12" +form-data@~2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + formatio@1.2.0, formatio@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" @@ -2258,6 +2577,17 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" +ftp@~0.3.10: + version "0.3.10" + resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + dependencies: + readable-stream "1.1.x" + xregexp "2.0.0" + +function-bind@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -2307,6 +2637,17 @@ get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +get-uri@2: + version "2.0.1" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.1.tgz#dbdcacacd8c608a38316869368117697a1631c59" + dependencies: + data-uri-to-buffer "1" + debug "2" + extend "3" + file-uri-to-path "1" + ftp "~0.3.10" + readable-stream "2" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -2393,7 +2734,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -2455,6 +2796,10 @@ har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + har-validator@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" @@ -2471,17 +2816,24 @@ har-validator@~4.2.1: ajv "^4.9.1" har-schema "^1.0.5" +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.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.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" +has-binary2@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" dependencies: - isarray "0.0.1" + isarray "2.0.1" has-color@~0.1.0: version "0.1.7" @@ -2503,6 +2855,12 @@ has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" +has@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + hash-base@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" @@ -2532,10 +2890,26 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +hawk@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + he@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" +hipchat-notifier@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e" + dependencies: + lodash "^4.0.0" + request "^2.0.0" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -2548,6 +2922,10 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +hoek@4.x.x: + version "4.2.0" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" + 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" @@ -2595,11 +2973,15 @@ html-minifier@^3.0.1: relateurl "0.2.x" uglify-js "3.0.x" +htmlescape@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" -http-errors@~1.6.1, http-errors@~1.6.2: +http-errors@1.6.2, http-errors@~1.6.1, http-errors@~1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" dependencies: @@ -2608,6 +2990,14 @@ http-errors@~1.6.1, http-errors@~1.6.2: setprototypeof "1.0.3" statuses ">= 1.3.1 < 2" +http-proxy-agent@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz#cc1ce38e453bf984a0f7702d2dd59c73d081284a" + dependencies: + agent-base "2" + debug "2" + extend "3" + http-proxy-middleware@~0.17.4: version "0.17.4" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" @@ -2632,11 +3022,34 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +httpntlm@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/httpntlm/-/httpntlm-1.6.1.tgz#ad01527143a2e8773cfae6a96f58656bb52a34b2" + dependencies: + httpreq ">=0.4.22" + underscore "~1.7.0" + +httpreq@>=0.4.22: + version "0.4.24" + resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f" + https-browserify@0.0.1: 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-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + +https-proxy-agent@1, 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: @@ -2648,6 +3061,10 @@ iconv-lite@0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" +iconv-lite@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + iconv-lite@^0.4.17: version "0.4.18" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" @@ -2686,6 +3103,14 @@ indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" +inflection@~1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.10.0.tgz#5bffcb1197ad3e81050f8e17e21668087ee9eb2f" + +inflection@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.3.8.tgz#cbd160da9f75b14c3cc63578d4f396784bf3014e" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -2705,6 +3130,12 @@ ini@^1.2.0, ini@^1.3.2, 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.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" + dependencies: + source-map "~0.5.3" + inquirer@^3.0.6: version "3.2.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.2.tgz#c2aaede1507cc54d826818737742d621bef2e823" @@ -2724,6 +3155,19 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" +insert-module-globals@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.7.1" + concat-stream "~1.5.1" + is-buffer "^1.1.0" + lexical-scope "^1.2.0" + process "~0.11.0" + through2 "^2.0.0" + xtend "^4.0.0" + internal-ip@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" @@ -2744,7 +3188,11 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" -ip@^1.1.0, ip@^1.1.5: +ip@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.0.1.tgz#c7e356cdea225ae71b36d70f2e71a92ba4e42590" + +ip@^1.1.0, ip@^1.1.2, ip@^1.1.4, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -2762,6 +3210,10 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-buffer@^1.1.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + is-buffer@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" @@ -2911,7 +3363,7 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" -isarray@0.0.1: +isarray@0.0.1, isarray@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -2919,6 +3371,10 @@ 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" +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + isbinaryfile@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" @@ -3031,11 +3487,17 @@ json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: +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.x, json-stringify-safe@^5.0.1, 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.3.2, json3@^3.3.2: +json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" @@ -3122,7 +3584,7 @@ karma-sourcemap-loader@^0.3.7: dependencies: graceful-fs "^4.1.2" -karma-spec-reporter@0.0.32: +karma-spec-reporter@^0.0.32: version "0.0.32" resolved "https://registry.yarnpkg.com/karma-spec-reporter/-/karma-spec-reporter-0.0.32.tgz#2e9c7207ea726771260259f82becb543209e440a" dependencies: @@ -3138,12 +3600,13 @@ karma-webpack@^2.0.0: source-map "^0.1.41" webpack-dev-middleware "^1.0.11" -karma@^1.1.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.0.tgz#6f7a1a406446fa2e187ec95398698f4cee476269" +karma@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.0.tgz#a02698dd7f0f05ff5eb66ab8f65582490b512e58" dependencies: bluebird "^3.3.0" body-parser "^1.16.1" + browserify "^14.5.0" chokidar "^1.4.1" colors "^1.1.0" combine-lists "^1.0.0" @@ -3156,8 +3619,8 @@ karma@^1.1.2: graceful-fs "^4.1.2" http-proxy "^1.13.0" isbinaryfile "^3.0.0" - lodash "^3.8.0" - log4js "^0.6.31" + lodash "^4.17.4" + log4js "^2.3.9" mime "^1.3.4" minimatch "^3.0.2" optimist "^0.6.1" @@ -3165,9 +3628,9 @@ karma@^1.1.2: range-parser "^1.2.0" rimraf "^2.6.0" safe-buffer "^5.0.1" - socket.io "1.7.3" - source-map "^0.5.3" - tmp "0.0.31" + socket.io "2.0.4" + source-map "^0.6.1" + tmp "0.0.33" useragent "^2.1.12" kew@~0.7.0: @@ -3192,6 +3655,14 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" +labeled-stream-splicer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59" + dependencies: + inherits "^2.0.1" + isarray "~0.0.1" + stream-splicer "^2.0.0" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" @@ -3209,6 +3680,28 @@ levn@^0.3.0, levn@~0.3.0: 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" + +libbase64@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6" + +libmime@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/libmime/-/libmime-3.0.0.tgz#51a1a9e7448ecbd32cda54421675bb21bc093da6" + dependencies: + iconv-lite "0.4.15" + libbase64 "0.1.0" + libqp "1.1.0" + +libqp@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" + 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" @@ -3330,6 +3823,10 @@ lodash.map@^4.5.1: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" +lodash.memoize@~3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" + lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" @@ -3351,7 +3848,7 @@ lodash@^3.7.0, lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0: +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -3359,12 +3856,31 @@ lodash@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.3.1.tgz#a4663b53686b895ff074e2ba504dfb76a8e2b770" -log4js@^0.6.31: - version "0.6.38" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" +log4js@^2.3.9: + version "2.4.1" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.4.1.tgz#b0c4e88133e0e3056afdc6f91f7f377576158778" dependencies: - readable-stream "~1.0.2" - semver "~4.3.3" + circular-json "^0.4.0" + date-format "^1.2.0" + debug "^3.1.0" + semver "^5.3.0" + streamroller "^0.7.0" + optionalDependencies: + axios "^0.15.3" + hipchat-notifier "^1.1.0" + loggly "^1.1.0" + mailgun-js "^0.7.0" + nodemailer "^2.5.0" + redis "^2.7.1" + slack-node "~0.2.0" + +loggly@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/loggly/-/loggly-1.1.1.tgz#0a0fc1d3fa3a5ec44fdc7b897beba2a4695cebee" + dependencies: + json-stringify-safe "5.0.x" + request "2.75.x" + timespan "2.3.x" loglevel@^1.4.1: version "1.4.1" @@ -3410,6 +3926,31 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@~2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.6.5.tgz#e56d6354148ede8d7707b58d143220fd08df0fd5" + +mailcomposer@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4" + dependencies: + buildmail "4.0.1" + libmime "3.0.0" + +mailgun-js@^0.7.0: + version "0.7.15" + resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.7.15.tgz#ee366a20dac64c3c15c03d6c1b3e0ed795252abb" + dependencies: + async "~2.1.2" + debug "~2.2.0" + form-data "~2.1.1" + inflection "~1.10.0" + is-stream "^1.1.0" + path-proxy "~1.0.0" + proxy-agent "~2.0.0" + q "~1.4.0" + tsscmp "~1.0.0" + make-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" @@ -3497,12 +4038,22 @@ miller-rabin@^4.0.0: version "1.29.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" +mime-db@~1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" + mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: version "2.1.16" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" dependencies: mime-db "~1.29.0" +mime-types@~2.1.17: + version "2.1.17" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" + dependencies: + mime-db "~1.30.0" + mime@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" @@ -3557,14 +4108,30 @@ modify-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" +module-deps@^4.0.8: + version "4.1.1" + resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd" + dependencies: + JSONStream "^1.0.3" + browser-resolve "^1.7.0" + cached-path-relative "^1.0.0" + concat-stream "~1.5.0" + defined "^1.0.0" + detective "^4.0.0" + duplexer2 "^0.1.2" + inherits "^2.0.1" + parents "^1.0.0" + readable-stream "^2.0.2" + resolve "^1.1.3" + stream-combiner2 "^1.1.1" + subarg "^1.0.0" + through2 "^2.0.0" + xtend "^4.0.0" + 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" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3606,6 +4173,10 @@ nerf-dart@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/nerf-dart/-/nerf-dart-1.0.0.tgz#e6dab7febf5ad816ea81cf5c629c5a0ebde72c1a" +netmask@~1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" + netrc@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/netrc/-/netrc-0.1.4.tgz#6be94fcaca8d77ade0a9670dc460914c94472444" @@ -3680,6 +4251,55 @@ node-uuid@~1.4.7: version "1.4.8" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" +nodemailer-direct-transport@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz#e96fafb90358560947e569017d97e60738a50a86" + dependencies: + nodemailer-shared "1.1.0" + smtp-connection "2.12.0" + +nodemailer-fetch@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4" + +nodemailer-shared@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0" + dependencies: + nodemailer-fetch "1.6.0" + +nodemailer-smtp-pool@2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz#2eb94d6cf85780b1b4725ce853b9cbd5e8da8c72" + dependencies: + nodemailer-shared "1.1.0" + nodemailer-wellknown "0.1.10" + smtp-connection "2.12.0" + +nodemailer-smtp-transport@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz#03d71c76314f14ac7dbc7bf033a6a6d16d67fb77" + dependencies: + nodemailer-shared "1.1.0" + nodemailer-wellknown "0.1.10" + smtp-connection "2.12.0" + +nodemailer-wellknown@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz#586db8101db30cb4438eb546737a41aad0cf13d5" + +nodemailer@^2.5.0: + version "2.7.2" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-2.7.2.tgz#f242e649aeeae39b6c7ed740ef7b061c404d30f9" + dependencies: + libmime "3.0.0" + mailcomposer "4.0.1" + nodemailer-direct-transport "3.3.2" + nodemailer-shared "1.1.0" + nodemailer-smtp-pool "2.8.2" + nodemailer-smtp-transport "2.7.2" + socks "1.1.9" + nomnomnomnom@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz#b2239f031c8d04da67e32836e1e3199e12f7a8e2" @@ -3778,14 +4398,10 @@ 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" -oauth-sign@~0.8.1: +oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -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@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -3862,10 +4478,6 @@ optionator@^0.8.1, optionator@^0.8.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" - original@>=0.0.5: version "1.0.0" resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" @@ -3876,6 +4488,10 @@ os-browserify@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" +os-browserify@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -3923,6 +4539,30 @@ p-map@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a" +pac-proxy-agent@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-1.1.0.tgz#34a385dfdf61d2f0ecace08858c745d3e791fd4d" + dependencies: + agent-base "2" + debug "2" + extend "3" + get-uri "2" + http-proxy-agent "1" + https-proxy-agent "1" + pac-resolver "~2.0.0" + raw-body "2" + socks-proxy-agent "2" + +pac-resolver@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-2.0.0.tgz#99b88d2f193fbdeefc1c9a529c1f3260ab5277cd" + dependencies: + co "~3.0.6" + degenerator "~1.0.2" + ip "1.0.1" + netmask "~1.0.4" + thunkify "~2.1.1" + pad-right@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/pad-right/-/pad-right-0.2.2.tgz#6fbc924045d244f2a2a244503060d3bfc6009774" @@ -3933,12 +4573,22 @@ pako@~0.2.0: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" +pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + param-case@2.1.x: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" 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" + parse-asn1@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" @@ -3974,12 +4624,6 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parsejson@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" - dependencies: - better-assert "~1.0.0" - parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" @@ -3996,7 +4640,7 @@ parseurl@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" -path-browserify@0.0.0: +path-browserify@0.0.0, path-browserify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" @@ -4033,6 +4677,20 @@ path-object@^2.3.0: core-util-is "^1.0.1" lodash.assign "^3.0.0" +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-platform@~0.11.15: + version "0.11.15" + resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" + +path-proxy@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e" + dependencies: + inflection "~1.3.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" @@ -4075,6 +4733,10 @@ performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + phantomjs-prebuilt@^2.1.7, phantomjs-prebuilt@^2.1.8: version "2.1.15" resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.15.tgz#20f86e82d3349c505917527745b7a411e08b3903" @@ -4147,7 +4809,7 @@ 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.0: +process@^0.11.0, process@~0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -4170,6 +4832,19 @@ proxy-addr@~1.1.5: forwarded "~0.1.0" ipaddr.js "1.4.0" +proxy-agent@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-2.0.0.tgz#57eb5347aa805d74ec681cb25649dba39c933499" + dependencies: + agent-base "2" + debug "2" + extend "3" + http-proxy-agent "1" + https-proxy-agent "1" + lru-cache "~2.6.5" + pac-proxy-agent "1" + socks-proxy-agent "2" + prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" @@ -4201,7 +4876,7 @@ punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -punycode@^1.2.4, punycode@^1.4.1: +punycode@1.4.1, punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -4209,6 +4884,10 @@ q@^1.4.1: version "1.5.0" resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" +q@~1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + qjobs@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" @@ -4225,7 +4904,11 @@ qs@~6.2.0: version "6.2.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" -querystring-es3@^0.2.0: +qs@~6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + +querystring-es3@^0.2.0, querystring-es3@~0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -4248,16 +4931,32 @@ randomatic@^1.1.3: is-number "^3.0.0" kind-of "^4.0.0" -randombytes@^2.0.0, randombytes@^2.0.1: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" dependencies: safe-buffer "^5.1.0" +randomfill@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + range-parser@^1.0.3, 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: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + dependencies: + bytes "3.0.0" + http-errors "1.6.2" + iconv-lite "0.4.19" + unpipe "1.0.0" + raw-body@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" @@ -4275,6 +4974,12 @@ rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +read-only-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" + dependencies: + readable-stream "^2.0.2" + 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" @@ -4305,7 +5010,16 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9: +readable-stream@1.1.x: + 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@2, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9, readable-stream@^2.3.0: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -4317,16 +5031,7 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.0.3" util-deprecate "~1.0.1" -readable-stream@~1.0.2: - 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.5: +readable-stream@~2.0.0, readable-stream@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" dependencies: @@ -4362,6 +5067,22 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" +redis-commands@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.1.tgz#81d826f45fa9c8b2011f4cd7a0fe597d241d442b" + +redis-parser@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" + +redis@^2.7.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" + dependencies: + double-ended-queue "^2.1.0-0" + redis-commands "^1.2.0" + redis-parser "^2.6.0" + regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" @@ -4442,6 +5163,59 @@ request-progress@~2.0.1: dependencies: throttleit "^1.0.0" +request@2.75.x: + 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.0.0: + version "2.83.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" + dependencies: + 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.1.0" + request@^2.74.0, request@^2.81.0, request@~2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" @@ -4495,6 +5269,15 @@ request@~2.74.0: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" +requestretry@^1.2.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-1.12.2.tgz#13ce38a4ce4e809f3c9ec6d4ca3b7b9ba4acf26c" + dependencies: + extend "^3.0.0" + lodash "^4.15.0" + request "^2.74.0" + when "^3.7.7" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4526,10 +5309,16 @@ resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" -resolve@1.1.x: +resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +resolve@^1.1.3, resolve@^1.1.4: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -4590,7 +5379,7 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" -safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -4635,7 +5424,7 @@ semantic-release@^8.0.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" -"semver@2 || 3 || 4", semver@~4.3.3: +"semver@2 || 3 || 4": version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" @@ -4704,6 +5493,20 @@ sha.js@^2.4.0, sha.js@^2.4.8: dependencies: inherits "^2.0.1" +sha.js@~2.4.4: + version "2.4.9" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +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" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -4714,6 +5517,15 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -4730,6 +5542,12 @@ sinon@^4.0.0: supports-color "^4.4.0" type-detect "^4.0.5" +slack-node@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30" + dependencies: + requestretry "^1.2.2" + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -4742,55 +5560,69 @@ slide@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" +smart-buffer@^1.0.13, smart-buffer@^1.0.4: + version "1.1.15" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" + +smtp-connection@2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.12.0.tgz#d76ef9127cb23c2259edb1e8349c2e8d5e2d74c1" + dependencies: + httpntlm "1.6.1" + nodemailer-shared "1.1.0" + 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.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" +sntp@2.x.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" dependencies: - debug "2.3.3" - socket.io-parser "2.3.1" + hoek "4.x.x" + +socket.io-adapter@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" -socket.io-client@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" +socket.io-client@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" dependencies: backo2 "1.0.2" + base64-arraybuffer "0.1.5" component-bind "1.0.0" component-emitter "1.2.1" - debug "2.3.3" - engine.io-client "1.8.3" - has-binary "0.1.7" + debug "~2.6.4" + engine.io-client "~3.1.0" + has-cors "1.1.0" indexof "0.0.1" object-component "0.0.3" + parseqs "0.0.5" parseuri "0.0.5" - socket.io-parser "2.3.1" + socket.io-parser "~3.1.1" to-array "0.1.4" -socket.io-parser@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" +socket.io-parser@~3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.2.tgz#dbc2282151fc4faebbe40aeedc0772eba619f7f2" dependencies: - component-emitter "1.1.2" - debug "2.2.0" - isarray "0.0.1" - json3 "3.3.2" + component-emitter "1.2.1" + debug "~2.6.4" + has-binary2 "~1.0.2" + isarray "2.0.1" -socket.io@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" +socket.io@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" dependencies: - debug "2.3.3" - engine.io "1.8.3" - has-binary "0.1.7" - object-assign "4.1.0" - socket.io-adapter "0.5.0" - socket.io-client "1.7.3" - socket.io-parser "2.3.1" + debug "~2.6.6" + engine.io "~3.1.0" + socket.io-adapter "~1.1.0" + socket.io-client "2.0.4" + socket.io-parser "~3.1.1" sockjs-client@1.1.4: version "1.1.4" @@ -4810,6 +5642,28 @@ sockjs@0.3.18: faye-websocket "^0.10.0" uuid "^2.0.2" +socks-proxy-agent@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-2.1.1.tgz#86ebb07193258637870e13b7bd99f26c663df3d3" + dependencies: + agent-base "2" + extend "3" + socks "~1.1.5" + +socks@1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.9.tgz#628d7e4d04912435445ac0b6e459376cb3e6d691" + dependencies: + ip "^1.1.2" + smart-buffer "^1.0.4" + +socks@~1.1.5: + version "1.1.10" + resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" + dependencies: + ip "^1.1.4" + smart-buffer "^1.0.13" + source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" @@ -4836,12 +5690,20 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + source-map@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" dependencies: amdefine ">=0.0.4" +source-map@~0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + spdx-correct@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" @@ -4919,18 +5781,25 @@ ssri@^4.1.2: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" -stream-browserify@^2.0.1: +stream-browserify@^2.0.0, stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" dependencies: inherits "~2.0.1" readable-stream "^2.0.2" +stream-combiner2@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" + dependencies: + duplexer2 "~0.1.0" + readable-stream "^2.0.2" + stream-consume@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" -stream-http@^2.3.1: +stream-http@^2.0.0, stream-http@^2.3.1: version "2.7.2" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" dependencies: @@ -4940,6 +5809,22 @@ stream-http@^2.3.1: to-arraybuffer "^1.0.0" xtend "^4.0.0" +stream-splicer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.2" + +streamroller@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" + dependencies: + date-format "^1.2.0" + debug "^3.1.0" + mkdirp "^0.5.1" + readable-stream "^2.3.0" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -4959,13 +5844,13 @@ string_decoder@^0.10.25, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -string_decoder@~1.0.3: +string_decoder@~1.0.0, string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4: +stringstream@~0.0.4, stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -5013,6 +5898,12 @@ striptags@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/striptags/-/striptags-2.2.1.tgz#4c450b708d41b8bf39cf24c49ff234fc6aabfd32" +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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -5035,6 +5926,12 @@ supports-color@^4.4.0: dependencies: has-flag "^2.0.0" +syntax-error@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.3.0.tgz#1ed9266c4d40be75dc55bf9bb1cb77062bb96ca1" + dependencies: + acorn "^4.0.3" + table@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" @@ -5098,6 +5995,10 @@ through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +thunkify@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" + thunky@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e" @@ -5106,24 +6007,34 @@ time-stamp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" +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-browserify@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" dependencies: setimmediate "^1.0.4" -tmp@0.0.31, tmp@^0.0.31: - version "0.0.31" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" - dependencies: - os-tmpdir "~1.0.1" +timespan@2.3.x: + version "2.3.0" + resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929" -tmp@0.0.x: +tmp@0.0.33, tmp@0.0.x: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" dependencies: os-tmpdir "~1.0.2" +tmp@^0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + 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" @@ -5142,6 +6053,12 @@ tough-cookie@~2.3.0: dependencies: punycode "^1.4.1" +tough-cookie@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" + dependencies: + punycode "^1.4.1" + travis-ci@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/travis-ci/-/travis-ci-2.1.1.tgz#98696265af827ae3576f31aa06d876e74b4b082e" @@ -5175,7 +6092,11 @@ 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: +tsscmp@~1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97" + +tty-browserify@0.0.0, tty-browserify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -5210,7 +6131,7 @@ type-is@~1.6.15: media-typer "0.3.0" mime-types "~2.1.15" -typedarray@^0.0.6: +typedarray@^0.0.6, typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -5250,9 +6171,13 @@ 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" +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + +umd@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e" underscore.string@~2.2.0rc: version "2.2.1" @@ -5262,6 +6187,10 @@ underscore@~1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" +underscore@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -5284,7 +6213,7 @@ url-parse@^1.1.8: querystringify "~1.0.0" requires-port "1.0.x" -url@^0.11.0: +url@^0.11.0, url@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" dependencies: @@ -5302,7 +6231,7 @@ 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: +util@0.10.3, 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: @@ -5316,10 +6245,14 @@ uuid@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" -uuid@^3.0.0: +uuid@^3.0.0, uuid@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" +uws@~0.14.4: + version "0.14.5" + resolved "https://registry.yarnpkg.com/uws/-/uws-0.14.5.tgz#67aaf33c46b2a587a5f6666d00f7691328f149dc" + 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" @@ -5345,7 +6278,7 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vm-browserify@0.0.4: +vm-browserify@0.0.4, vm-browserify@~0.0.1: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" dependencies: @@ -5457,6 +6390,10 @@ websocket-extensions@>=0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" +when@^3.7.7: + version "3.7.8" + resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" @@ -5520,24 +6457,25 @@ write@^0.2.1: dependencies: mkdirp "^0.5.1" -ws@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" dependencies: - options ">=0.0.5" - ultron "1.0.x" - -wtf-8@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" xml-char-classes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" -xmlhttprequest-ssl@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" +xmlhttprequest-ssl@~1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.4.tgz#04f560915724b389088715cc0ed7813e9677bf57" + +xregexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" From 9bc8aee02f16ac20282e8f1954ccd0ec46d8dc30 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Tue, 26 Dec 2017 14:13:36 -0600 Subject: [PATCH 066/159] fix(package): update semantic-release to version 11.0.2 (#156) --- .travis.yml | 13 +- package-scripts.yml | 34 + package.json | 19 +- yarn.lock | 6557 ------------------------------------------- 4 files changed, 46 insertions(+), 6577 deletions(-) create mode 100644 package-scripts.yml delete mode 100644 yarn.lock diff --git a/.travis.yml b/.travis.yml index 7c97397..b18edf0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,6 @@ sudo: false language: node_js node_js: node cache: - yarn: true directories: - node_modules branches: @@ -16,15 +15,11 @@ addons: - google-chrome packages: - google-chrome-stable -before_install: - - yarn global add greenkeeper-lockfile@1 -before_script: greenkeeper-lockfile-update script: - - yarn run lint - - xvfb-run yarn run test:sauce - - yarn run test -after_script: greenkeeper-lockfile-upload + - npm start lint + - xvfb-run npm start test.sauce + - npm start test after_success: - - yarn run semantic-release + - npm start semantic-release notifications: email: change diff --git a/package-scripts.yml b/package-scripts.yml new file mode 100644 index 0000000..eabf92e --- /dev/null +++ b/package-scripts.yml @@ -0,0 +1,34 @@ +scripts: + lint: + script: eslint src/**/*.js tests/**/*.js + description: Checks for any formatting errors + test: + default: + script: karma start --single-run + description: Executes the Test Suite + tdd: + script: karma start + description: Watches for changes and executes the Test Suite accordingly + sauce: + script: karma start karma.ci.conf.js + description: Executes the Test Suite on Sauce Labs + serve: + default: + script: webpack-dev-server -d --config webpack.server.config.js + description: Starts a server at http://localhost:8080 + https: + script: webpack-dev-server -d --https --port 443 --config webpack.server.config.js + description: Starts a server at https://localhost + build: + default: + script: nps build.dev && nps build.prod + description: Builds both a minified and unminified artifact + dev: + script: webpack --progress --colors -d + description: Builds an unminified artifact + prod: + script: webpack --progress --colors -p + description: Builds a minified artifact + semantic-release: + script: semantic-release + description: Publishes the artifact to NPM and GitHub diff --git a/package.json b/package.json index 9c484ac..c37da69 100644 --- a/package.json +++ b/package.json @@ -19,16 +19,10 @@ "filter" ], "scripts": { - "start": "webpack-dev-server --config webpack.server.config.js", - "lint": "eslint src/**/*.js tests/**/*.js", - "test": "karma start --single-run", - "test:sauce": "karma start karma.ci.conf.js", - "tdd": "karma start", - "build": "yarn run build:dev && yarn run build:prod", - "build:dev": "webpack -d", - "build:prod": "webpack -p", - "publish-latest": "publish-latest --user-email aguirrel@xuar.com.ar --user-name aguirrel", - "semantic-release": "semantic-release pre && yarn run build && npm publish && npm run publish-latest && semantic-release post" + "start": "nps", + "prepublishOnly": "yarn start build", + "postpublish": "publish-latest --user-email aguirrel@xuar.com.ar --user-name aguirrel", + "precommit": "remove-lockfiles" }, "license": "MIT", "devDependencies": { @@ -43,6 +37,7 @@ "eslint-loader": "^1.4.1", "eslint-plugin-jasmine": "^2.0.0", "html-loader": "^0.5.0", + "husky": "^0.14.3", "isparta-loader": "^2.0.0", "jasmine-core": "^2.4.1", "karma": "^2.0.0", @@ -57,9 +52,11 @@ "karma-spec-reporter": "^0.0.32", "karma-webpack": "^2.0.0", "ng-select-all-on-focus": "^1.0.3", + "nps": "^5.7.1", "phantomjs-prebuilt": "^2.1.8", "publish-latest": "^1.1.2", - "semantic-release": "^8.0.0", + "remove-lockfiles": "^1.4.2", + "semantic-release": "^11.0.0", "sinon": "^4.0.0", "webpack": "^3.0.0", "webpack-dev-server": "^2.4.5" diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 21b639b..0000000 --- a/yarn.lock +++ /dev/null @@ -1,6557 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@semantic-release/commit-analyzer@^3.0.1": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-3.0.4.tgz#040bd2b99909f5671063be0c68fd782fd4543997" - dependencies: - "@semantic-release/error" "^2.0.0" - conventional-changelog-angular "^1.4.0" - conventional-commits-parser "^2.0.0" - import-cwd "^2.1.0" - lodash "^4.17.4" - pify "^3.0.0" - -"@semantic-release/condition-travis@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@semantic-release/condition-travis/-/condition-travis-6.0.0.tgz#e4a592bd054720a258cec1477500dc5e494ecb83" - dependencies: - "@semantic-release/error" "^1.0.0" - semver "^5.0.3" - travis-deploy-once "^2.0.1" - -"@semantic-release/error@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-1.0.0.tgz#bb8f8eeedd5c7f8c46f96b37ef39e1b8c376c1cc" - -"@semantic-release/error@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.0.0.tgz#f156ecd509f5288c48bc7425a8abe22f975d1f8b" - -"@semantic-release/last-release-npm@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@semantic-release/last-release-npm/-/last-release-npm-2.0.1.tgz#9d9e40b7dfa2778eb08dc995263da3e366542416" - dependencies: - "@semantic-release/error" "^2.0.0" - npm-registry-client "^8.4.0" - npmlog "^4.0.0" - -"@semantic-release/release-notes-generator@^4.0.0": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-4.0.4.tgz#bbb57ad7fe022fc9dfa305556de5910779188684" - dependencies: - "@semantic-release/error" "^2.0.0" - conventional-changelog-angular "^1.4.0" - conventional-changelog-core "^1.9.0" - import-cwd "^2.1.0" - lodash "^4.17.4" - pify "^3.0.0" - -JSONStream@^1.0.3: - version "1.3.2" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -JSONStream@^1.0.4: - version "1.3.1" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abbrev@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" - -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - -accepts@1.3.3, 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-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" - dependencies: - acorn "^4.0.3" - -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@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - -acorn@^4.0.3: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - -acorn@^5.0.0, acorn@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" - -acorn@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" - -addressparser@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - -agent-base@2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" - dependencies: - extend "~3.0.0" - semver "~5.0.1" - -ajv-keywords@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" - -ajv-keywords@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" - -ajv@^4.7.0, ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -ajv@^5.1.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -ajv@^5.1.5, ajv@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39" - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - json-schema-traverse "^0.3.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-mocks@^1.6.0: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular-mocks/-/angular-mocks-1.6.6.tgz#c93018e7838c6dc5ceaf1a6bcf9be13c830ea515" - -angular@^1.6.0: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.6.tgz#fd5a3cfb437ce382d854ee01120797978527cb64" - -ansi-escapes@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - dependencies: - color-convert "^1.9.0" - -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -aproba@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" - -are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - 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.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - -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-flatten@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" - -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - -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: - 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.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - -asn1.js@^4.0.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -assert@^1.1.1, assert@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - dependencies: - util "0.10.3" - -ast-types@0.9.6: - version "0.9.6" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" - -ast-types@0.x.x: - version "0.10.1" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" - -astw@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917" - dependencies: - acorn "^4.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-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - -async@1.x, async@^1.4.0, async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.0.1, async@^2.1.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" - dependencies: - lodash "^4.14.0" - -async@~0.9.0: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - -async@~2.1.2: - version "2.1.5" - resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" - dependencies: - lodash "^4.14.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -author-regex@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/author-regex/-/author-regex-0.2.1.tgz#8bdefaac6065a931799bec07eeef51b940e08f3c" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - -aws4@^1.2.1, aws4@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - -axios@^0.15.3: - version "0.15.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" - dependencies: - follow-redirects "1.0.0" - -axios@^0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz#ba4f92f17167dfbab40983785454b9ac149c3c6d" - dependencies: - follow-redirects "^1.2.3" - is-buffer "^1.1.5" - -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.1.4, babel-core@^6.11.4, babel-core@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.0" - debug "^2.6.8" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.7" - slash "^1.0.0" - source-map "^0.5.6" - -babel-generator@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.6" - trim-right "^1.0.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-loader@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.1.tgz#b87134c8b12e3e4c2a94e0546085bc680a2b8488" - dependencies: - find-cache-dir "^1.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-regenerator@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-es2015@^6.9.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.24.1" - babel-plugin-transform-es2015-classes "^6.24.1" - babel-plugin-transform-es2015-computed-properties "^6.24.1" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.24.1" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.24.1" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-plugin-transform-es2015-modules-systemjs "^6.24.1" - babel-plugin-transform-es2015-modules-umd "^6.24.1" - babel-plugin-transform-es2015-object-super "^6.24.1" - babel-plugin-transform-es2015-parameters "^6.24.1" - babel-plugin-transform-es2015-shorthand-properties "^6.24.1" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.24.1" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.24.1" - babel-plugin-transform-regenerator "^6.24.1" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - -base64-js@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" - -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - dependencies: - tweetnacl "^0.14.3" - -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" - -big.js@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" - -binary-extensions@^1.0.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" - -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@^3.3.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - -body-parser@^1.16.1: - version "1.17.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.2.tgz#f8892abc8f9e627d42aedafbca66bf5ab99104ee" - dependencies: - bytes "2.4.0" - content-type "~1.0.2" - debug "2.6.7" - depd "~1.1.0" - http-errors "~1.6.1" - iconv-lite "0.4.15" - on-finished "~2.3.0" - qs "6.4.0" - raw-body "~2.2.0" - type-is "~1.6.15" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -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" - -boom@4.x.x: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - dependencies: - hoek "4.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - dependencies: - hoek "4.x.x" - -brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" - dependencies: - balanced-match "^1.0.0" - 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.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - -browser-pack@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.2.tgz#f86cd6cef4f5300c8e63e07a4d512f65fbff4531" - dependencies: - JSONStream "^1.0.3" - combine-source-map "~0.7.1" - defined "^1.0.0" - through2 "^2.0.0" - umd "^3.0.0" - -browser-resolve@^1.11.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.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - 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.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - dependencies: - pako "~0.2.0" - -browserify-zlib@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - dependencies: - pako "~1.0.5" - -browserify@^14.5.0: - version "14.5.0" - resolved "https://registry.yarnpkg.com/browserify/-/browserify-14.5.0.tgz#0bbbce521acd6e4d1d54d8e9365008efb85a9cc5" - dependencies: - JSONStream "^1.0.3" - assert "^1.4.0" - browser-pack "^6.0.1" - browser-resolve "^1.11.0" - browserify-zlib "~0.2.0" - buffer "^5.0.2" - cached-path-relative "^1.0.0" - concat-stream "~1.5.1" - console-browserify "^1.1.0" - constants-browserify "~1.0.0" - crypto-browserify "^3.0.0" - defined "^1.0.0" - deps-sort "^2.0.0" - domain-browser "~1.1.0" - duplexer2 "~0.1.2" - events "~1.1.0" - glob "^7.1.0" - has "^1.0.0" - htmlescape "^1.1.0" - https-browserify "^1.0.0" - inherits "~2.0.1" - insert-module-globals "^7.0.0" - labeled-stream-splicer "^2.0.0" - module-deps "^4.0.8" - os-browserify "~0.3.0" - parents "^1.0.1" - path-browserify "~0.0.0" - process "~0.11.0" - punycode "^1.3.2" - querystring-es3 "~0.2.0" - read-only-stream "^2.0.0" - readable-stream "^2.0.2" - resolve "^1.1.4" - shasum "^1.0.0" - shell-quote "^1.6.1" - stream-browserify "^2.0.0" - stream-http "^2.0.0" - string_decoder "~1.0.0" - subarg "^1.0.0" - syntax-error "^1.1.1" - through2 "^2.0.0" - timers-browserify "^1.0.1" - tty-browserify "~0.0.0" - url "~0.11.0" - util "~0.10.1" - vm-browserify "~0.0.1" - xtend "^4.0.0" - -buffer-indexof@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.0.tgz#f54f647c4f4e25228baa656a2e57e43d5f270982" - -buffer-xor@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.0.2: - version "5.0.8" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.8.tgz#84daa52e7cf2fa8ce4195bc5cf0f7809e0930b24" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -buildmail@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" - dependencies: - addressparser "1.0.1" - libbase64 "0.1.0" - libmime "3.0.0" - libqp "1.1.0" - nodemailer-fetch "1.6.0" - nodemailer-shared "1.1.0" - punycode "1.4.1" - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - -bytes@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" - -bytes@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - -cached-path-relative@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7" - -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: - 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.x: - 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: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -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" - -chalk@1.1.3, chalk@^1.1.1, chalk@^1.1.3: - 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@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -chalk@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" - -chokidar@^1.4.1, chokidar@^1.6.0, chokidar@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - 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, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - -circular-json@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.4.0.tgz#c448ea998b7fe31ecf472ec29c6b608e2e2a62fd" - -clean-css@4.1.x: - version "4.1.7" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.7.tgz#b9aea4f85679889cf3eae8b40349ec4ebdfdd032" - dependencies: - source-map "0.5.x" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -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.2.0: - 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" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -co@~3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/co/-/co-3.0.6.tgz#1445f226c5eb956138e68c9ac30167ea7d2e6bda" - -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" - -color-convert@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" - dependencies: - color-name "^1.1.1" - -color-name@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - -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.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e" - dependencies: - convert-source-map "~1.1.0" - inline-source-map "~0.6.0" - lodash.memoize "~3.0.3" - source-map "~0.5.3" - -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" - -commander@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" - -commander@2.11.x, commander@^2.9.0, commander@~2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" - -commander@2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - dependencies: - graceful-readlink ">= 1.0.0" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - -compare-func@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" - dependencies: - array-ify "^1.0.0" - dot-prop "^3.0.0" - -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.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - -compressible@~2.0.10: - version "2.0.11" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a" - dependencies: - mime-db ">= 1.29.0 < 2" - -compression@^1.5.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.0.tgz#030c9f198f1643a057d776a738e922da4373012d" - dependencies: - accepts "~1.3.3" - bytes "2.5.0" - compressible "~2.0.10" - debug "2.6.8" - on-headers "~1.0.1" - safe-buffer "5.1.1" - vary "~1.1.1" - -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.6.0, concat-stream@^1.4.7, concat-stream@^1.5.2, concat-stream@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concat-stream@~1.5.0, concat-stream@~1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" - dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" - -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" - -connect-history-api-fallback@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" - -connect@^3.6.0: - version "3.6.3" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.3.tgz#f7320d46a25b4be7b483a2236517f24b1e27e301" - dependencies: - debug "2.6.8" - finalhandler "1.0.4" - 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" - -constants-browserify@^1.0.0, constants-browserify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - -content-type@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" - -conventional-changelog-angular@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.5.0.tgz#50b2d45008448455fdf67e06ea01972fbd08182a" - dependencies: - compare-func "^1.3.1" - q "^1.4.1" - -conventional-changelog-core@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-1.9.0.tgz#de5dfbc091847656508d4a389e35c9a1bc49e7f4" - dependencies: - conventional-changelog-writer "^1.1.0" - conventional-commits-parser "^1.0.0" - dateformat "^1.0.12" - get-pkg-repo "^1.0.0" - git-raw-commits "^1.2.0" - git-remote-origin-url "^2.0.0" - git-semver-tags "^1.2.0" - lodash "^4.0.0" - normalize-package-data "^2.3.5" - q "^1.4.1" - read-pkg "^1.1.0" - read-pkg-up "^1.0.1" - through2 "^2.0.0" - -conventional-changelog-writer@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-1.4.1.tgz#3f4cb4d003ebb56989d30d345893b52a43639c8e" - dependencies: - compare-func "^1.3.1" - conventional-commits-filter "^1.0.0" - dateformat "^1.0.11" - handlebars "^4.0.2" - json-stringify-safe "^5.0.1" - lodash "^4.0.0" - meow "^3.3.0" - semver "^5.0.1" - split "^1.0.0" - through2 "^2.0.0" - -conventional-commit-types@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.2.0.tgz#5db95739d6c212acbe7b6f656a11b940baa68946" - -conventional-commits-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.0.0.tgz#6fc2a659372bc3f2339cf9ffff7e1b0344b93039" - dependencies: - is-subset "^0.1.1" - modify-values "^1.0.0" - -conventional-commits-parser@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-1.3.0.tgz#e327b53194e1a7ad5dc63479ee9099a52b024865" - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.0" - lodash "^4.2.1" - meow "^3.3.0" - split2 "^2.0.0" - through2 "^2.0.0" - trim-off-newlines "^1.0.0" - -conventional-commits-parser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.0.0.tgz#71d01910cb0a99aeb20c144e50f81f4df3178447" - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.0" - lodash "^4.2.1" - meow "^3.3.0" - split2 "^2.0.0" - through2 "^2.0.0" - trim-off-newlines "^1.0.0" - -convert-source-map@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - -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, core-js@^2.4.0, core-js@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086" - -core-util-is@1.0.2, core-util-is@^1.0.1, 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" - -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, create-hash@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - ripemd160 "^2.0.0" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.6" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@^5.0.1, cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -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" - -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - dependencies: - boom "5.x.x" - -crypto-browserify@^3.0.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - 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" - randomfill "^1.0.3" - -crypto-browserify@^3.11.0: - version "3.11.1" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" - 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" - -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" - -cz-conventional-changelog@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-2.0.0.tgz#55a979afdfe95e7024879d2a0f5924630170b533" - 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@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - -dargs@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" - dependencies: - number-is-nan "^1.0.0" - -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" - -data-uri-to-buffer@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" - -date-format@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" - -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.12, dateformat@^1.0.6: - 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" - -debug@2, debug@2.6.8, debug@^2.2.0, debug@^2.4.5, debug@^2.6.6, debug@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - -debug@2.2.0, 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" - -debug@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - dependencies: - ms "2.0.0" - -debug@~2.6.4, debug@~2.6.6, debug@~2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - -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" - -deep-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - -degenerator@~1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" - dependencies: - ast-types "0.x.x" - escodegen "1.x.x" - esprima "3.x.x" - -del@^2.0.2: - 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" - -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - dependencies: - globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" - -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.1, depd@~1.1.0, depd@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - -deps-sort@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" - dependencies: - JSONStream "^1.0.3" - shasum "^1.0.0" - subarg "^1.0.0" - through2 "^2.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-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-node@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" - -detective@^4.0.0: - version "4.7.1" - resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" - dependencies: - acorn "^5.2.1" - defined "^1.0.0" - -dezalgo@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - dependencies: - asap "^2.0.0" - wrappy "1" - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - -diff@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.0.tgz#056695150d7aa93237ca7e378ac3b1682b7963b9" - -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" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - -dns-packet@^1.0.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.2.2.tgz#a8a26bec7646438963fc86e06f8f8b16d6c8bf7a" - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - dependencies: - buffer-indexof "^1.0.0" - -doctrine@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" - 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" - -domain-browser@^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" - -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - dependencies: - is-obj "^1.0.0" - -double-ended-queue@^2.1.0-0: - version "2.1.0-0" - resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" - -dox@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/dox/-/dox-0.6.1.tgz#8247075ad4b275fe88fbbae02fe12f3c5480a7fd" - dependencies: - commander "0.6.1" - jsdoctypeparser "^1.1.1" - marked ">=0.3.1" - -doxme@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/doxme/-/doxme-1.8.2.tgz#8dc3c4a38682a4e96a72e0029eaad5c1a3546442" - dependencies: - concat-stream "^1.4.7" - markdown-table "^0.3.1" - minimist "^1.1.0" - repo-path-parse "^1.0.1" - striptags "^2.0.0" - -duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - dependencies: - readable-stream "^2.0.2" - -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.4.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - -encodeurl@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" - -engine.io-client@~3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.4.tgz#4fcf1370b47163bd2ce9be2733972430350d4ea1" - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~2.6.9" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.1.tgz#e0fb3f0e0462f7f58bb77c1a52e9f5a7e26e4668" - dependencies: - after "0.8.2" - arraybuffer.slice "0.0.6" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary2 "~1.0.2" - -engine.io@~3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.4.tgz#3d0211b70a552ce841ffc7da8627b301a9a4162e" - dependencies: - accepts "1.3.3" - base64id "1.0.0" - cookie "0.3.1" - debug "~2.6.9" - engine.io-parser "~2.1.0" - ws "~3.3.1" - optionalDependencies: - uws "~0.14.4" - -enhanced-resolve@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.7" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - -errno@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" - dependencies: - prr "~0.0.0" - -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" - dependencies: - is-arrayish "^0.2.1" - -es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.29" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.29.tgz#768eb2dfc4957bcf35fa0568f193ab71ede53fd8" - dependencies: - es6-iterator "2" - es6-symbol "~3.1" - -es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-symbol "^3.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-promise@~4.0.3: - version "4.0.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-templates@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" - dependencies: - recast "~0.11.12" - through "~2.3.6" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.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, 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" - -escodegen@1.8.x, escodegen@^1.6.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -escodegen@1.x.x: - version "1.9.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.5.6" - -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-config-google@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.8.1.tgz#a97eab3a5f794e9d5bb35cfdca08059e79c936aa" - -eslint-loader@^1.4.1: - version "1.9.0" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.9.0.tgz#7e1be9feddca328d3dcfaef1ad49d5beffe83a13" - dependencies: - loader-fs-cache "^1.0.0" - loader-utils "^1.0.2" - object-assign "^4.0.1" - object-hash "^1.1.4" - rimraf "^2.6.1" - -eslint-plugin-jasmine@^2.0.0: - version "2.8.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.8.4.tgz#67a5551e3d1d5e0b8c6b54aaebab95370f5d37de" - -eslint-scope@^3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint@^4.1.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.4.1.tgz#99cd7eafcffca2ff99a5c8f5f2a474d6364b4bd3" - dependencies: - ajv "^5.2.0" - babel-code-frame "^6.22.0" - chalk "^1.1.3" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" - debug "^2.6.8" - doctrine "^2.0.0" - eslint-scope "^3.7.1" - espree "^3.5.0" - esquery "^1.0.0" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^9.17.0" - ignore "^3.3.3" - imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" - json-stable-stringify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^4.0.0" - progress "^2.0.0" - require-uncached "^1.0.3" - semver "^5.3.0" - strip-json-comments "~2.0.1" - table "^4.0.1" - text-table "~0.2.0" - -espree@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.0.tgz#98358625bdd055861ea27e2867ea729faf463d8d" - dependencies: - acorn "^5.1.1" - acorn-jsx "^3.0.0" - -esprima@2.7.x, esprima@^2.1.0, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - -esprima@3.x.x, esprima@^3.1.3, esprima@~3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" - -esquery@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" - dependencies: - estraverse "^4.0.0" - -esrecurse@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" - dependencies: - estraverse "^4.1.0" - object-assign "^4.0.1" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - -estraverse@^4.0.0, 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" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -etag@~1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" - -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" - -events@^1.0.0, events@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - -eventsource@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" - dependencies: - original ">=0.0.5" - -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" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -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" - -express@^4.13.3: - version "4.15.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.15.4.tgz#032e2253489cf8fce02666beca3d11ed7a2daed1" - dependencies: - accepts "~1.3.3" - array-flatten "1.1.1" - content-disposition "0.5.2" - content-type "~1.0.2" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.8" - depd "~1.1.1" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - finalhandler "~1.0.4" - fresh "0.5.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.5" - qs "6.5.0" - range-parser "~1.2.0" - send "0.15.4" - serve-static "1.12.4" - setprototypeof "1.0.3" - statuses "~1.3.1" - type-is "~1.6.15" - utils-merge "1.0.0" - vary "~1.1.1" - -extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -external-editor@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972" - dependencies: - iconv-lite "^0.4.17" - jschardet "^1.4.2" - tmp "^0.0.31" - -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" - -extract-zip@~1.6.5: - version "1.6.5" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.5.tgz#99a06735b6ea20ea9b705d779acffcc87cff0440" - dependencies: - concat-stream "1.6.0" - debug "2.2.0" - mkdirp "0.5.0" - yauzl "2.4.1" - -extsprintf@1.3.0, extsprintf@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -fast-deep-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -fastparse@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - dependencies: - websocket-driver ">=0.5.1" - -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - dependencies: - pend "~1.2.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - -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-uri-to-path@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -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@1.0.4, finalhandler@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.4.tgz#18574f2e7c4b98b8ae3b230c21f201f31bdb3fb7" - dependencies: - debug "2.6.8" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.1" - statuses "~1.3.1" - unpipe "~1.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -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" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -flat-cache@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" - dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" - -follow-redirects@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-0.0.7.tgz#34b90bab2a911aa347571da90f22bd36ecd8a919" - dependencies: - debug "^2.2.0" - stream-consume "^0.1.0" - -follow-redirects@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" - dependencies: - debug "^2.2.0" - -follow-redirects@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.4.tgz#355e8f4d16876b43f577b0d5ce2668b9723214ea" - dependencies: - debug "^2.4.5" - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -foreachasync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/foreachasync/-/foreachasync-3.0.0.tgz#5502987dc8714be3392097f32e0071c9dee07cf6" - -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@~1.0.0-rc4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c" - dependencies: - async "^2.0.1" - combined-stream "^1.0.5" - mime-types "^2.1.11" - -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.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -form-data@~2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -formatio@1.2.0, formatio@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" - dependencies: - samsam "1.x" - -forwarded@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" - -fresh@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" - -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-extra@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - -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.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.36" - -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@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -ftp@~0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - -function-bind@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - 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" - -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-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - -get-pkg-repo@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" - dependencies: - hosted-git-info "^2.1.4" - meow "^3.3.0" - normalize-package-data "^2.3.0" - parse-github-repo-url "^1.3.0" - through2 "^2.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" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - -get-uri@2: - version "2.0.1" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.1.tgz#dbdcacacd8c608a38316869368117697a1631c59" - dependencies: - data-uri-to-buffer "1" - debug "2" - extend "3" - file-uri-to-path "1" - ftp "~0.3.10" - readable-stream "2" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -git-head@^1.2.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/git-head/-/git-head-1.20.1.tgz#036d16a4b374949e4e3daf15827903686d3ccd52" - dependencies: - git-refs "^1.1.3" - -git-raw-commits@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.2.0.tgz#0f3a8bfd99ae0f2d8b9224d58892975e9a52d03c" - dependencies: - dargs "^4.0.1" - lodash.template "^4.0.2" - meow "^3.3.0" - split2 "^2.0.0" - through2 "^2.0.0" - -git-refs@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/git-refs/-/git-refs-1.1.3.tgz#83097cb3a92585c4a4926ec54e2182df9e20e89d" - dependencies: - path-object "^2.3.0" - slash "^1.0.0" - walk "^2.3.9" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.2.1.tgz#6ccd2a52e735b736748dc762444fcd9588e27490" - dependencies: - meow "^3.3.0" - semver "^5.0.1" - -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - dependencies: - ini "^1.3.2" - -github@^8.0.0: - version "8.2.1" - resolved "https://registry.yarnpkg.com/github/-/github-8.2.1.tgz#616b2211fbcd1cc8631669aed67653e62eb53816" - dependencies: - follow-redirects "0.0.7" - https-proxy-agent "^1.0.0" - mime "^1.2.11" - netrc "^0.1.4" - -github@~0.1.10: - version "0.1.16" - resolved "https://registry.yarnpkg.com/github/-/github-0.1.16.tgz#895d2a85b0feb7980d89ac0ce4f44dcaa03f17b5" - -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@^5.0.15: - 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@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^9.17.0, globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -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" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -handle-thing@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" - -handlebars@^4.0.1, handlebars@^4.0.2: - version "4.0.10" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" - dependencies: - async "^1.4.0" - optimist "^0.6.1" - source-map "^0.4.4" - optionalDependencies: - uglify-js "^2.6" - -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - -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" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - dependencies: - ajv "^5.1.0" - har-schema "^2.0.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-binary2@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" - dependencies: - isarray "2.0.1" - -has-color@~0.1.0: - 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-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" - dependencies: - function-bind "^1.0.2" - -hash-base@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" - dependencies: - inherits "^2.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - -hasha@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" - dependencies: - is-stream "^1.0.1" - pinkie-promise "^2.0.0" - -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" - -hawk@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - sntp "2.x.x" - -he@1.1.x: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - -hipchat-notifier@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e" - dependencies: - lodash "^4.0.0" - request "^2.0.0" - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -hoek@4.x.x: - version "4.2.0" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" - -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" - -hosted-git-info@^2.1.4, hosted-git-info@^2.4.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-entities@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - -html-loader@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.1.tgz#4f1e8396a1ea6ab42bedc987dfac058070861ebe" - dependencies: - es6-templates "^0.2.2" - fastparse "^1.1.1" - html-minifier "^3.0.1" - loader-utils "^1.0.2" - object-assign "^4.1.0" - -html-minifier@^3.0.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.3.tgz#4a275e3b1a16639abb79b4c11191ff0d0fcf1ab9" - dependencies: - camel-case "3.0.x" - clean-css "4.1.x" - commander "2.11.x" - he "1.1.x" - ncname "1.0.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.0.x" - -htmlescape@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - -http-errors@1.6.2, http-errors@~1.6.1, http-errors@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-proxy-agent@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz#cc1ce38e453bf984a0f7702d2dd59c73d081284a" - dependencies: - agent-base "2" - debug "2" - extend "3" - -http-proxy-middleware@~0.17.4: - version "0.17.4" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" - dependencies: - http-proxy "^1.16.2" - is-glob "^3.1.0" - lodash "^4.17.2" - micromatch "^2.3.11" - -http-proxy@^1.13.0, http-proxy@^1.16.2: - version "1.16.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" - dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" - -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" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -httpntlm@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/httpntlm/-/httpntlm-1.6.1.tgz#ad01527143a2e8773cfae6a96f58656bb52a34b2" - dependencies: - httpreq ">=0.4.22" - underscore "~1.7.0" - -httpreq@>=0.4.22: - version "0.4.24" - resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f" - -https-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - -https-proxy-agent@1, 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.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" - -iconv-lite@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - -iconv-lite@^0.4.17: - version "0.4.18" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" - -ieee754@^1.1.4: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" - -ignore@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" - -import-cwd@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - dependencies: - import-from "^2.1.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - dependencies: - resolve-from "^3.0.0" - -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" - -inflection@~1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.10.0.tgz#5bffcb1197ad3e81050f8e17e21668087ee9eb2f" - -inflection@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.3.8.tgz#cbd160da9f75b14c3cc63578d4f396784bf3014e" - -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@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: - 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.2, 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.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" - dependencies: - source-map "~0.5.3" - -inquirer@^3.0.6: - version "3.2.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.2.tgz#c2aaede1507cc54d826818737742d621bef2e823" - dependencies: - ansi-escapes "^2.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -insert-module-globals@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3" - dependencies: - JSONStream "^1.0.3" - combine-source-map "~0.7.1" - concat-stream "~1.5.1" - is-buffer "^1.1.0" - lexical-scope "^1.2.0" - process "~0.11.0" - through2 "^2.0.0" - xtend "^4.0.0" - -internal-ip@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" - dependencies: - meow "^3.3.0" - -interpret@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" - -invariant@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -ip@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.0.1.tgz#c7e356cdea225ae71b36d70f2e71a92ba4e42590" - -ip@^1.1.0, ip@^1.1.2, ip@^1.1.4, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - -ipaddr.js@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0" - -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.1.0: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - -is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - -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.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -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-extglob@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -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-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - dependencies: - is-extglob "^2.1.0" - -is-my-json-valid@^2.12.4: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" - 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.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-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - -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-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-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-subset@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" - -is-text-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - dependencies: - text-extensions "^1.0.0" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -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" - -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - -isbinaryfile@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -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" - -isparta-loader@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isparta-loader/-/isparta-loader-2.0.0.tgz#4425f496c93f765bbceb4dd938576da307566ed1" - dependencies: - isparta "4.x.x" - -isparta@4.x.x: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isparta/-/isparta-4.0.0.tgz#1de91996f480b22dcb1aca8510255bae1574446e" - dependencies: - babel-core "^6.1.4" - escodegen "^1.6.1" - esprima "^2.1.0" - istanbul "^0.4.0" - mkdirp "^0.5.0" - nomnomnomnom "^2.0.0" - object-assign "^4.0.1" - source-map "^0.5.0" - which "^1.0.9" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -istanbul@^0.4.0: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -jasmine-core@^2.4.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.7.0.tgz#50ff8c4f92d8ef5c0b2c1b846dd263ed85152091" - -js-tokens@^3.0.0, js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -js-yaml@3.x, js-yaml@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jschardet@^1.4.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" - -jsdoctypeparser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz#e7dedc153a11849ffc5141144ae86a7ef0c25392" - dependencies: - lodash "^3.7.0" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-loader@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - -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.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.x, json-stringify-safe@^5.0.1, 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.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -json5@^0.5.0, json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -just-extend@^1.1.26: - version "1.1.27" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.27.tgz#ec6e79410ff914e472652abfa0e603c03d60e905" - -karma-chrome-launcher@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" - dependencies: - fs-access "^1.0.0" - which "^1.2.1" - -karma-coverage@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.1.tgz#5aff8b39cf6994dc22de4c84362c76001b637cf6" - dependencies: - dateformat "^1.0.6" - istanbul "^0.4.0" - lodash "^3.8.0" - minimatch "^3.0.0" - source-map "^0.5.1" - -karma-firefox-launcher@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.0.1.tgz#ce58f47c2013a88156d55a5d61337c099cf5bb51" - -karma-jasmine@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf" - -karma-mocha-reporter@^2.0.4: - version "2.2.3" - resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz#04fdda45a1d9697a73871c7472223c581701ab20" - dependencies: - chalk "1.1.3" - -karma-phantomjs-launcher@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2" - dependencies: - lodash "^4.0.1" - phantomjs-prebuilt "^2.1.7" - -karma-sinon@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/karma-sinon/-/karma-sinon-1.0.5.tgz#4e3443f2830fdecff624d3747163f1217daa2a9a" - -karma-sourcemap-loader@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" - dependencies: - graceful-fs "^4.1.2" - -karma-spec-reporter@^0.0.32: - version "0.0.32" - resolved "https://registry.yarnpkg.com/karma-spec-reporter/-/karma-spec-reporter-0.0.32.tgz#2e9c7207ea726771260259f82becb543209e440a" - dependencies: - colors "^1.1.2" - -karma-webpack@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-2.0.4.tgz#3e2d4f48ba94a878e1c66bb8e1ae6128987a175b" - dependencies: - async "~0.9.0" - loader-utils "^0.2.5" - lodash "^3.8.0" - source-map "^0.1.41" - webpack-dev-middleware "^1.0.11" - -karma@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.0.tgz#a02698dd7f0f05ff5eb66ab8f65582490b512e58" - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - browserify "^14.5.0" - chokidar "^1.4.1" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.4" - log4js "^2.3.9" - mime "^1.3.4" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.0.4" - source-map "^0.6.1" - tmp "0.0.33" - useragent "^2.1.12" - -kew@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - dependencies: - is-buffer "^1.1.5" - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - optionalDependencies: - graceful-fs "^4.1.9" - -labeled-stream-splicer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59" - dependencies: - inherits "^2.0.1" - isarray "~0.0.1" - stream-splicer "^2.0.0" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -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" - -libbase64@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6" - -libmime@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/libmime/-/libmime-3.0.0.tgz#51a1a9e7448ecbd32cda54421675bb21bc093da6" - dependencies: - iconv-lite "0.4.15" - libbase64 "0.1.0" - libqp "1.1.0" - -libqp@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" - -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" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -loader-fs-cache@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" - dependencies: - find-cache-dir "^0.1.1" - mkdirp "0.5.1" - -loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - -loader-utils@^0.2.5: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.2, loader-utils@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._bindcallback@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" - -lodash._createassigner@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" - dependencies: - lodash._bindcallback "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash.restparam "^3.0.0" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash._reinterpolate@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - -lodash.assign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" - dependencies: - lodash._baseassign "^3.0.0" - lodash._createassigner "^3.0.0" - lodash.keys "^3.0.0" - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - -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.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.map@^4.5.1: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - -lodash.memoize@~3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" - -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@^4.0.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" - dependencies: - lodash._reinterpolate "~3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" - dependencies: - lodash._reinterpolate "~3.0.0" - -lodash@^3.7.0, lodash@^3.8.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - -lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -lodash@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.3.1.tgz#a4663b53686b895ff074e2ba504dfb76a8e2b770" - -log4js@^2.3.9: - version "2.4.1" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.4.1.tgz#b0c4e88133e0e3056afdc6f91f7f377576158778" - dependencies: - circular-json "^0.4.0" - date-format "^1.2.0" - debug "^3.1.0" - semver "^5.3.0" - streamroller "^0.7.0" - optionalDependencies: - axios "^0.15.3" - hipchat-notifier "^1.1.0" - loggly "^1.1.0" - mailgun-js "^0.7.0" - nodemailer "^2.5.0" - redis "^2.7.1" - slack-node "~0.2.0" - -loggly@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/loggly/-/loggly-1.1.1.tgz#0a0fc1d3fa3a5ec44fdc7b897beba2a4695cebee" - dependencies: - json-stringify-safe "5.0.x" - request "2.75.x" - timespan "2.3.x" - -loglevel@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.4.1.tgz#95b383f91a3c2756fd4ab093667e4309161f2bcd" - -lolex@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" - -lolex@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.3.1.tgz#3d2319894471ea0950ef64692ead2a5318cff362" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loose-envify@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -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@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - -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.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@~2.6.5: - version "2.6.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.6.5.tgz#e56d6354148ede8d7707b58d143220fd08df0fd5" - -mailcomposer@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4" - dependencies: - buildmail "4.0.1" - libmime "3.0.0" - -mailgun-js@^0.7.0: - version "0.7.15" - resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.7.15.tgz#ee366a20dac64c3c15c03d6c1b3e0ed795252abb" - dependencies: - async "~2.1.2" - debug "~2.2.0" - form-data "~2.1.1" - inflection "~1.10.0" - is-stream "^1.1.0" - path-proxy "~1.0.0" - proxy-agent "~2.0.0" - q "~1.4.0" - tsscmp "~1.0.0" - -make-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" - dependencies: - pify "^2.3.0" - -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" - -markdown-table@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-0.3.2.tgz#ab0501425117218c498754d57e244dcd4a80232e" - -marked@>=0.3.1: - version "0.3.6" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -memory-fs@^0.4.0, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - dependencies: - errno "^0.1.3" - readable-stream "^2.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" - -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.11: - 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.29.0 < 2", mime-db@~1.29.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" - -mime-db@~1.30.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" - -mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: - version "2.1.16" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" - dependencies: - mime-db "~1.29.0" - -mime-types@~2.1.17: - version "2.1.17" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" - dependencies: - mime-db "~1.30.0" - -mime@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" - -mime@^1.2.11, mime@^1.3.4: - version "1.3.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" - -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - -minimalistic-assert@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -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.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - -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.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -modify-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" - -module-deps@^4.0.8: - version "4.1.1" - resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd" - dependencies: - JSONStream "^1.0.3" - browser-resolve "^1.7.0" - cached-path-relative "^1.0.0" - concat-stream "~1.5.0" - defined "^1.0.0" - detective "^4.0.0" - duplexer2 "^0.1.2" - inherits "^2.0.1" - parents "^1.0.0" - readable-stream "^2.0.2" - resolve "^1.1.3" - stream-combiner2 "^1.1.1" - subarg "^1.0.0" - through2 "^2.0.0" - xtend "^4.0.0" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - -multicast-dns@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.1.1.tgz#6e7de86a570872ab17058adea7160bbeca814dde" - dependencies: - dns-packet "^1.0.1" - thunky "^0.1.0" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - -nan@^2.3.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - -ncname@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" - dependencies: - xml-char-classes "^1.0.0" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -nerf-dart@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/nerf-dart/-/nerf-dart-1.0.0.tgz#e6dab7febf5ad816ea81cf5c629c5a0ebde72c1a" - -netmask@~1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" - -netrc@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/netrc/-/netrc-0.1.4.tgz#6be94fcaca8d77ade0a9670dc460914c94472444" - -ng-select-all-on-focus@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ng-select-all-on-focus/-/ng-select-all-on-focus-1.0.3.tgz#2fac4a0b21823a0791a30f5e035c0620336ea9d0" - -nise@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/nise/-/nise-1.2.0.tgz#079d6cadbbcb12ba30e38f1c999f36ad4d6baa53" - dependencies: - formatio "^1.2.0" - just-extend "^1.1.26" - lolex "^1.6.0" - path-to-regexp "^1.7.0" - text-encoding "^0.6.4" - -no-case@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" - dependencies: - lower-case "^1.1.1" - -node-forge@0.6.33: - version "0.6.33" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc" - -node-libs-browser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" - dependencies: - assert "^1.1.1" - browserify-zlib "^0.1.4" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^1.0.0" - https-browserify "0.0.1" - os-browserify "^0.2.0" - path-browserify "0.0.0" - process "^0.11.0" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.0.5" - stream-browserify "^2.0.1" - stream-http "^2.3.1" - string_decoder "^0.10.25" - timers-browserify "^2.0.2" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -node-pre-gyp@^0.6.36: - version "0.6.36" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" - dependencies: - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "^2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-uuid@~1.4.7: - version "1.4.8" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" - -nodemailer-direct-transport@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz#e96fafb90358560947e569017d97e60738a50a86" - dependencies: - nodemailer-shared "1.1.0" - smtp-connection "2.12.0" - -nodemailer-fetch@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4" - -nodemailer-shared@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0" - dependencies: - nodemailer-fetch "1.6.0" - -nodemailer-smtp-pool@2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz#2eb94d6cf85780b1b4725ce853b9cbd5e8da8c72" - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-smtp-transport@2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz#03d71c76314f14ac7dbc7bf033a6a6d16d67fb77" - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-wellknown@0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz#586db8101db30cb4438eb546737a41aad0cf13d5" - -nodemailer@^2.5.0: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-2.7.2.tgz#f242e649aeeae39b6c7ed740ef7b061c404d30f9" - dependencies: - libmime "3.0.0" - mailcomposer "4.0.1" - nodemailer-direct-transport "3.3.2" - nodemailer-shared "1.1.0" - nodemailer-smtp-pool "2.8.2" - nodemailer-smtp-transport "2.7.2" - socks "1.1.9" - -nomnomnomnom@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz#b2239f031c8d04da67e32836e1e3199e12f7a8e2" - dependencies: - chalk "~0.4.0" - underscore "~1.6.0" - -nopt@3.x, nopt@~3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -nopt@^4.0.0, nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, "normalize-package-data@~1.0.1 || ^2.0.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - 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.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0": - version "5.1.2" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-5.1.2.tgz#fb18d17bb61e60900d6312619919bd753755ab37" - dependencies: - hosted-git-info "^2.4.2" - osenv "^0.1.4" - semver "^5.1.0" - validate-npm-package-name "^3.0.0" - -npm-registry-client@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.4.0.tgz#d52b901685647fc62a4c03eafecb6ceaa5018d4c" - dependencies: - concat-stream "^1.5.2" - graceful-fs "^4.1.6" - normalize-package-data "~1.0.1 || ^2.0.0" - npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0" - once "^1.3.3" - request "^2.74.0" - retry "^0.10.0" - semver "2 >=2.2.1 || 3.x || 4 || 5" - slide "^1.1.3" - ssri "^4.1.2" - optionalDependencies: - npmlog "2 || ^3.1.0 || ^4.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -npmconf@^2.1.2: - 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@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - 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" - -oauth-sign@~0.8.1, oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - -object-hash@^1.1.4: - version "1.1.8" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.1.8.tgz#28a659cf987d96a4dabe7860289f3b5326c4a03c" - -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" - -obuf@^1.0.0, obuf@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" - -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.x, once@^1.3.0, once@^1.3.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -once@~1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - -opn@4.0.2: - 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" - -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" - -optionator@^0.8.1, 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" - -original@>=0.0.5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" - dependencies: - url-parse "1.0.x" - -os-browserify@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" - -os-browserify@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - -os-homedir@^1.0.0: - 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-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@^0.1.0, osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -p-map@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a" - -pac-proxy-agent@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-1.1.0.tgz#34a385dfdf61d2f0ecace08858c745d3e791fd4d" - dependencies: - agent-base "2" - debug "2" - extend "3" - get-uri "2" - http-proxy-agent "1" - https-proxy-agent "1" - pac-resolver "~2.0.0" - raw-body "2" - socks-proxy-agent "2" - -pac-resolver@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-2.0.0.tgz#99b88d2f193fbdeefc1c9a529c1f3260ab5277cd" - dependencies: - co "~3.0.6" - degenerator "~1.0.2" - ip "1.0.1" - netmask "~1.0.4" - thunkify "~2.1.1" - -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" - -pako@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - 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" - -parse-asn1@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" - 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-author@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-0.2.0.tgz#de4274e5e702c18831c501a7cf66fcdf319fb1f9" - dependencies: - author-regex "^0.2.1" - -parse-github-repo-url@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.0.tgz#286c53e2c9962e0641649ee3ac9508fca4dd959c" - -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" - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - 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" - -path-browserify@0.0.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-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-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-here@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-here/-/path-here-1.1.0.tgz#7d24a9ccab8ae19f667b90415f7e75006f8caf70" - -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: - 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, path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - -path-object@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/path-object/-/path-object-2.3.0.tgz#03e46653e5c375c60af1cabdd94bc6448a5d9110" - dependencies: - core-util-is "^1.0.1" - lodash.assign "^3.0.0" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-platform@~0.11.15: - version "0.11.15" - resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" - -path-proxy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e" - dependencies: - inflection "~1.3.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-to-regexp@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" - dependencies: - isarray "0.0.1" - -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-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -pbkdf2@^3.0.3: - version "3.0.13" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.13.tgz#c37d295531e786b1da3e3eadc840426accb0ae25" - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - -phantomjs-prebuilt@^2.1.7, phantomjs-prebuilt@^2.1.8: - version "2.1.15" - resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.15.tgz#20f86e82d3349c505917527745b7a411e08b3903" - dependencies: - es6-promise "~4.0.3" - extract-zip "~1.6.5" - fs-extra "~1.0.0" - hasha "~2.2.0" - kew "~0.7.0" - progress "~1.1.8" - request "~2.81.0" - request-progress "~2.0.1" - which "~1.2.10" - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - -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-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - dependencies: - find-up "^1.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - dependencies: - find-up "^2.1.0" - -pluralize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762" - -portfinder@^1.0.9: - version "1.0.13" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" - dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" - -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" - -private@^0.1.6, private@^0.1.7, private@~0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" - -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.0, process@~0.11.0: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - -progress@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" - -progress@~1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - -proxy-addr@~1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918" - dependencies: - forwarded "~0.1.0" - ipaddr.js "1.4.0" - -proxy-agent@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-2.0.0.tgz#57eb5347aa805d74ec681cb25649dba39c933499" - dependencies: - agent-base "2" - debug "2" - extend "3" - http-proxy-agent "1" - https-proxy-agent "1" - lru-cache "~2.6.5" - pac-proxy-agent "1" - socks-proxy-agent "2" - -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - -pseudomap@^1.0.2: - 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" - -publish-latest@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/publish-latest/-/publish-latest-1.1.3.tgz#17cf5f8afef9f1eb24cf25891aa0a839f8bb834c" - dependencies: - commander "2.8.1" - parse-author "0.2.0" - path-here "1.1.0" - repo-path-parse "1.0.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - -punycode@1.4.1, punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -q@^1.4.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" - -q@~1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" - -qjobs@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" - -qs@6.4.0, qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -qs@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" - -qs@~6.2.0: - version "6.2.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" - -qs@~6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" - -querystring-es3@^0.2.0, 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" - -querystringify@0.0.x: - version "0.0.4" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" - -querystringify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" - -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62" - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.0.3, 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: - version "2.3.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" - dependencies: - bytes "3.0.0" - http-errors "1.6.2" - iconv-lite "0.4.19" - unpipe "1.0.0" - -raw-body@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" - dependencies: - bytes "2.4.0" - iconv-lite "0.4.15" - unpipe "1.0.0" - -rc@^1.1.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-only-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" - dependencies: - readable-stream "^2.0.2" - -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-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^1.0.0, read-pkg@^1.1.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-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -readable-stream@1.1.x: - 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@2, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9, readable-stream@^2.3.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - -readable-stream@~2.0.0, 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" - -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" - -recast@~0.11.12: - version "0.11.23" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" - dependencies: - ast-types "0.9.6" - esprima "~3.1.0" - private "~0.1.5" - source-map "~0.5.0" - -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" - -redis-commands@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.1.tgz#81d826f45fa9c8b2011f4cd7a0fe597d241d442b" - -redis-parser@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" - -redis@^2.7.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" - dependencies: - double-ended-queue "^2.1.0-0" - redis-commands "^1.2.0" - redis-parser "^2.6.0" - -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" - -regenerator-runtime@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -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" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - -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" - -repo-path-parse@1.0.1, repo-path-parse@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/repo-path-parse/-/repo-path-parse-1.0.1.tgz#c510fbd5cd47eea04d81ca33cc5d4d533c8da60a" - dependencies: - dox "^0.6.1" - doxme "^1.8.1" - -request-progress@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" - dependencies: - throttleit "^1.0.0" - -request@2.75.x: - 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.0.0: - version "2.83.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" - dependencies: - 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.1.0" - -request@^2.74.0, request@^2.81.0, request@~2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - 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" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -request@~2.74.0: - version "2.74.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab" - 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 "~1.0.0-rc4" - 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" - -requestretry@^1.2.2: - version "1.12.2" - resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-1.12.2.tgz#13ce38a4ce4e809f3c9ec6d4ca3b7b9ba4acf26c" - dependencies: - extend "^3.0.0" - lodash "^4.15.0" - request "^2.74.0" - when "^3.7.7" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -require-relative@^0.8.7: - version "0.8.7" - resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" - -require-uncached@^1.0.3: - 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.0.x, requires-port@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - -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@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - -resolve@1.1.7, resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - -resolve@^1.1.3, resolve@^1.1.4: - version "1.5.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" - dependencies: - path-parse "^1.0.5" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - -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.5.1, rimraf@^2.6.0, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" - dependencies: - glob "^7.0.5" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" - dependencies: - hash-base "^2.0.0" - inherits "^2.0.1" - -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - dependencies: - is-promise "^2.1.0" - -run-auto@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/run-auto/-/run-auto-2.0.0.tgz#5f4353f58adbd6b74926489b4f259e1dad6a78d6" - dependencies: - dezalgo "^1.0.1" - -run-series@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.4.tgz#89a73ddc5e75c9ef8ab6320c0a1600d6a41179b9" - -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - -safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - -samsam@1.x: - version "1.2.1" - resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - -selfsigned@^1.9.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52" - dependencies: - node-forge "0.6.33" - -semantic-release@^8.0.0: - version "8.0.4" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-8.0.4.tgz#64d500c71d39b5f7cd414e70b9033f7fa6be4552" - dependencies: - "@semantic-release/commit-analyzer" "^3.0.1" - "@semantic-release/condition-travis" "^6.0.0" - "@semantic-release/error" "^2.0.0" - "@semantic-release/last-release-npm" "^2.0.0" - "@semantic-release/release-notes-generator" "^4.0.0" - git-head "^1.2.1" - github "^8.0.0" - lodash "^4.0.0" - nerf-dart "^1.0.0" - nopt "^4.0.0" - normalize-package-data "^2.3.4" - npmconf "^2.1.2" - npmlog "^4.0.0" - parse-github-repo-url "^1.3.0" - require-relative "^0.8.7" - run-auto "^2.0.0" - run-series "^1.1.3" - semver "^5.2.0" - -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.2.0, semver@^5.3.0, semver@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - -"semver@2 || 3 || 4": - version "4.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" - -semver@~5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" - -send@0.15.4: - version "0.15.4" - resolved "https://registry.yarnpkg.com/send/-/send-0.15.4.tgz#985faa3e284b0273c793364a35c6737bd93905b9" - dependencies: - debug "2.6.8" - depd "~1.1.1" - destroy "~1.0.4" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - fresh "0.5.0" - http-errors "~1.6.2" - mime "1.3.4" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.3.1" - -serve-index@^1.7.2: - version "1.9.0" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.0.tgz#d2b280fc560d616ee81b48bf0fa82abed2485ce7" - dependencies: - accepts "~1.3.3" - batch "0.6.1" - debug "2.6.8" - escape-html "~1.0.3" - http-errors "~1.6.1" - mime-types "~2.1.15" - parseurl "~1.3.1" - -serve-static@1.12.4: - version "1.12.4" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.4.tgz#9b6aa98eeb7253c4eedc4c1f6fdbca609901a961" - dependencies: - encodeurl "~1.0.1" - escape-html "~1.0.3" - parseurl "~1.3.1" - send "0.15.4" - -set-blocking@^2.0.0, 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.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.8" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" - dependencies: - inherits "^2.0.1" - -sha.js@~2.4.4: - version "2.4.9" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -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" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -sinon@^4.0.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-4.1.3.tgz#fc599eda47ed9f1a694ce774b94ab44260bd7ac5" - dependencies: - diff "^3.1.0" - formatio "1.2.0" - lodash.get "^4.4.2" - lolex "^2.2.0" - nise "^1.2.0" - supports-color "^4.4.0" - type-detect "^4.0.5" - -slack-node@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30" - dependencies: - requestretry "^1.2.2" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - -slide@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - -smart-buffer@^1.0.13, smart-buffer@^1.0.4: - version "1.1.15" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" - -smtp-connection@2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.12.0.tgz#d76ef9127cb23c2259edb1e8349c2e8d5e2d74c1" - dependencies: - httpntlm "1.6.1" - nodemailer-shared "1.1.0" - -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" - -sntp@2.x.x: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" - dependencies: - hoek "4.x.x" - -socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" - -socket.io-client@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~2.6.4" - engine.io-client "~3.1.0" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.1.1" - to-array "0.1.4" - -socket.io-parser@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.2.tgz#dbc2282151fc4faebbe40aeedc0772eba619f7f2" - dependencies: - component-emitter "1.2.1" - debug "~2.6.4" - has-binary2 "~1.0.2" - isarray "2.0.1" - -socket.io@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" - dependencies: - debug "~2.6.6" - engine.io "~3.1.0" - socket.io-adapter "~1.1.0" - socket.io-client "2.0.4" - socket.io-parser "~3.1.1" - -sockjs-client@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" - dependencies: - debug "^2.6.6" - eventsource "0.1.6" - faye-websocket "~0.11.0" - inherits "^2.0.1" - json3 "^3.3.2" - url-parse "^1.1.8" - -sockjs@0.3.18: - version "0.3.18" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" - dependencies: - faye-websocket "^0.10.0" - uuid "^2.0.2" - -socks-proxy-agent@2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-2.1.1.tgz#86ebb07193258637870e13b7bd99f26c663df3d3" - dependencies: - agent-base "2" - extend "3" - socks "~1.1.5" - -socks@1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.9.tgz#628d7e4d04912435445ac0b6e459376cb3e6d691" - dependencies: - ip "^1.1.2" - smart-buffer "^1.0.4" - -socks@~1.1.5: - version "1.1.10" - resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" - dependencies: - ip "^1.1.4" - smart-buffer "^1.0.13" - -source-list-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" - -source-map-support@^0.4.15: - version "0.4.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.16.tgz#16fecf98212467d017d586a2af68d628b9421cd8" - dependencies: - source-map "^0.5.6" - -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -source-map@^0.1.41: - 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.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - -source-map@~0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -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" - -spdy-transport@^2.0.18: - version "2.0.20" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d" - dependencies: - debug "^2.6.8" - detect-node "^2.0.3" - hpack.js "^2.1.6" - obuf "^1.1.1" - readable-stream "^2.2.9" - safe-buffer "^5.0.1" - wbuf "^1.7.2" - -spdy@^3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" - dependencies: - debug "^2.6.8" - handle-thing "^1.2.5" - http-deceiver "^1.2.7" - safe-buffer "^5.0.1" - select-hose "^2.0.0" - spdy-transport "^2.0.18" - -split2@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/split2/-/split2-2.1.1.tgz#7a1f551e176a90ecd3345f7246a0cfe175ef4fd0" - dependencies: - through2 "^2.0.2" - -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - dependencies: - through "2" - -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.13.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" - 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" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -ssri@^4.1.2: - version "4.1.6" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-4.1.6.tgz#0cb49b6ac84457e7bdd466cb730c3cb623e9a25b" - dependencies: - safe-buffer "^5.1.0" - -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - -stream-browserify@^2.0.0, stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-combiner2@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" - dependencies: - duplexer2 "~0.1.0" - readable-stream "^2.0.2" - -stream-consume@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" - -stream-http@^2.0.0, stream-http@^2.3.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.2.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-splicer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.2" - -streamroller@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" - dependencies: - date-format "^1.2.0" - debug "^3.1.0" - mkdirp "^0.5.1" - readable-stream "^2.3.0" - -string-width@^1.0.1, string-width@^1.0.2: - 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, string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@^0.10.25, string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -string_decoder@~1.0.0, string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" - dependencies: - safe-buffer "~5.1.0" - -stringstream@~0.0.4, stringstream@~0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - -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-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - -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@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -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" - -striptags@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/striptags/-/striptags-2.2.1.tgz#4c450b708d41b8bf39cf24c49ff234fc6aabfd32" - -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@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^3.1.0, supports-color@^3.1.1: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -supports-color@^4.0.0, supports-color@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" - dependencies: - has-flag "^2.0.0" - -supports-color@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - dependencies: - has-flag "^2.0.0" - -syntax-error@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.3.0.tgz#1ed9266c4d40be75dc55bf9bb1cb77062bb96ca1" - dependencies: - acorn "^4.0.3" - -table@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" - 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" - -tapable@^0.2.7: - version "0.2.8" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" - -tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - 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@^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-encoding@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" - -text-extensions@^1.0.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.5.0.tgz#d1cb2d14b5d0bc45bfdca8a08a473f68c7eb0cbc" - -text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -throttleit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - -through2@^2.0.0, through2@^2.0.2: - 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" - -through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -thunkify@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" - -thunky@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e" - -time-stamp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" - -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-browserify@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" - dependencies: - setimmediate "^1.0.4" - -timespan@2.3.x: - version "2.3.0" - resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929" - -tmp@0.0.33, tmp@0.0.x: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - -tmp@^0.0.31: - version "0.0.31" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" - 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-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -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" - -tough-cookie@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" - dependencies: - punycode "^1.4.1" - -travis-ci@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/travis-ci/-/travis-ci-2.1.1.tgz#98696265af827ae3576f31aa06d876e74b4b082e" - dependencies: - github "~0.1.10" - lodash "~1.3.1" - request "~2.74.0" - underscore.string "~2.2.0rc" - -travis-deploy-once@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/travis-deploy-once/-/travis-deploy-once-2.0.1.tgz#6a60a3d15a6e19f00b979b4bc5e56990c8f2d593" - dependencies: - axios "^0.16.2" - semver "^5.4.1" - travis-ci "^2.1.1" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -trim-off-newlines@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -tryit@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" - -tsscmp@~1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97" - -tty-browserify@0.0.0, 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.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -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.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -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-detect@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.5.tgz#d70e5bc81db6de2a381bcaca0c6e0cbdc7635de2" - -type-is@~1.6.15: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.15" - -typedarray@^0.0.6, typedarray@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -uglify-js@3.0.x: - version "3.0.27" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.27.tgz#a97db8c8ba6b9dba4e2f88d86aa9548fa6320034" - dependencies: - commander "~2.11.0" - source-map "~0.5.1" - -uglify-js@^2.6, uglify-js@^2.8.29: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -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" - -uglifyjs-webpack-plugin@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" - dependencies: - source-map "^0.5.6" - uglify-js "^2.8.29" - webpack-sources "^1.0.1" - -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.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - -umd@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e" - -underscore.string@~2.2.0rc: - version "2.2.1" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19" - -underscore@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" - -underscore@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - -url-parse@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" - dependencies: - querystringify "0.0.x" - requires-port "1.0.x" - -url-parse@^1.1.8: - version "1.1.9" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.9.tgz#c67f1d775d51f0a18911dd7b3ffad27bb9e5bd19" - dependencies: - querystringify "~1.0.0" - requires-port "1.0.x" - -url@^0.11.0, url@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -useragent@^2.1.12: - version "2.2.1" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" - dependencies: - lru-cache "2.2.x" - tmp "0.0.x" - -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, 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.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - -uuid@^3.0.0, uuid@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" - -uws@~0.14.4: - version "0.14.5" - resolved "https://registry.yarnpkg.com/uws/-/uws-0.14.5.tgz#67aaf33c46b2a587a5f6666d00f7691328f149dc" - -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-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - dependencies: - builtins "^1.0.3" - -vary@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@0.0.4, 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" - -walk@^2.3.9: - version "2.3.9" - resolved "https://registry.yarnpkg.com/walk/-/walk-2.3.9.tgz#31b4db6678f2ae01c39ea9fb8725a9031e558a7b" - dependencies: - foreachasync "^3.0.0" - -watchpack@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" - dependencies: - async "^2.1.2" - chokidar "^1.7.0" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" - dependencies: - minimalistic-assert "^1.0.0" - -webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.11.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" - dependencies: - memory-fs "~0.4.1" - mime "^1.3.4" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - time-stamp "^2.0.0" - -webpack-dev-server@^2.4.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.7.1.tgz#21580f5a08cd065c71144cf6f61c345bca59a8b8" - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^1.6.0" - compression "^1.5.2" - connect-history-api-fallback "^1.3.0" - del "^3.0.0" - express "^4.13.3" - html-entities "^1.2.0" - http-proxy-middleware "~0.17.4" - internal-ip "^1.2.0" - ip "^1.1.5" - loglevel "^1.4.1" - opn "4.0.2" - portfinder "^1.0.9" - selfsigned "^1.9.1" - serve-index "^1.7.2" - sockjs "0.3.18" - sockjs-client "1.1.4" - spdy "^3.4.1" - strip-ansi "^3.0.0" - supports-color "^3.1.1" - webpack-dev-middleware "^1.11.0" - yargs "^6.0.0" - -webpack-sources@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf" - dependencies: - source-list-map "^2.0.0" - source-map "~0.5.3" - -webpack@^3.0.0: - version "3.5.5" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.5.5.tgz#3226f09fc8b3e435ff781e7af34f82b68b26996c" - dependencies: - acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^5.1.5" - ajv-keywords "^2.0.0" - async "^2.1.2" - enhanced-resolve "^3.4.0" - escope "^3.6.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - mkdirp "~0.5.0" - node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^4.2.1" - tapable "^0.2.7" - uglifyjs-webpack-plugin "^0.4.6" - watchpack "^1.4.0" - webpack-sources "^1.0.1" - yargs "^8.0.2" - -websocket-driver@>=0.5.1: - version "0.6.5" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" - dependencies: - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" - -when@^3.7.7: - version "3.7.8" - resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - -which@^1.0.9, which@^1.1.1, which@^1.2.1, which@^1.2.9: - version "1.3.0" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" - dependencies: - isexe "^2.0.0" - -which@~1.2.10: - version "1.2.14" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" - dependencies: - string-width "^1.0.2" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -word-wrap@^1.0.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wordwrap@^1.0.0, wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.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@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -xml-char-classes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" - -xmlhttprequest-ssl@~1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.4.tgz#04f560915724b389088715cc0ed7813e9677bf57" - -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" - dependencies: - camelcase "^3.0.0" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - dependencies: - camelcase "^4.1.0" - -yargs@^6.0.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" - -yargs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.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" - -yauzl@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" - dependencies: - fd-slicer "~1.0.1" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From 16e9b085f96f241eed8a44294f5dcf3f38a7cc2f Mon Sep 17 00:00:00 2001 From: aguirrel Date: Tue, 26 Dec 2017 20:16:59 +0000 Subject: [PATCH 067/159] v1.2.4 --- dist/ng-currency.js | 2 ++ dist/ng-currency.js.map | 1 + package.json | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 dist/ng-currency.js create mode 100644 dist/ng-currency.js.map diff --git a/dist/ng-currency.js b/dist/ng-currency.js new file mode 100644 index 0000000..bcd4f59 --- /dev/null +++ b/dist/ng-currency.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}("undefined"!=typeof self?self:this,function(e){return function(e){function n(t){if(r[t])return r[t].exports;var u=r[t]={i:t,l:!1,exports:{}};return e[t].call(u.exports,u,u.exports,n),u.l=!0,u.exports}var r={};return n.m=e,n.c=r,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=0)}([function(e,n,r){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(1),o=t(u),i=r(2),a=t(i),c=r(3),f=t(c),l=o.default.module("ng-currency",[]);l.provider("ngCurrencySettings",a.default),l.directive("ngCurrency",f.default),n.default=l.name},function(n,r){n.exports=e},function(e,n,r){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var u=function(){function e(e,n){for(var r=0;r=0;t--)e=a.$parsers[t](e)}else e=a.$$rawModelValue;for(var u=a.$formatters.length-1;u>=0;u--)e=a.$formatters[u](e);a.$viewValue=e,a.$render()}}function f(){if(a.$validate(),h){var e=l(a.$$rawModelValue);e!==a.$$rawModelValue&&(a.$setViewValue(e.toFixed(x)),a.$commitViewValue(),c())}}function l(e){return g&&(void 0!==y&&e>y?e=y:void 0!==b&&e1&&void 0!==arguments[1])||arguments[1];r=String(r);var u=n.NUMBER_FORMATS.DECIMAL_SEP,o=null,i=e("currency")("-1",p(),x),a=RegExp("[0-9."+u+n.NUMBER_FORMATS.GROUP_SEP+"]+");return i.replace(a.exec(i),"")===r.replace(a.exec(r),"")&&(r="-"+a.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),d(u).test(r)&&(o=r.match(d(u)).join("").match(s(u))||[""],o=o[0],o=t?o.replace(u,"."):o),o||null}function p(){return void 0===m?n.NUMBER_FORMATS.CURRENCY_SYM:m}var $=t.defaults,g=$.hardCap,b=$.min,y=$.max,m=$.currencySymbol,x=$.fraction,O=i.required,h=!0;i.$observe("ngCurrency",function(e){h="false"!==e,h?c():(a.$viewValue=a.$$rawModelValue,a.$render())}),i.$observe("hardCap",function(e){g="true"===e,f()}),i.$observe("min",function(e){b=e?Number(e):void 0,f()}),i.$observe("max",function(e){y=e?Number(e):void 0,f()}),i.$observe("currencySymbol",function(e){m=e,c()}),i.$observe("required",function(e){O=e,f()}),i.$observe("fraction",function(e){x=e||2,c(),f()}),r(function(){u.$emit("currencyRedraw")}),a.$parsers.push(function(e){return h&&-1===[void 0,null,""].indexOf(e)?(e=v(e),e=l(Number(e))):e}),a.$formatters.push(function(n){return h&&-1===[void 0,null,""].indexOf(n)?e("currency")(n,p(),x):n}),a.$validators.min=function(e){return!(O||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!h||-1!==[void 0,null].indexOf(b)||isNaN(b)||e>=b)},a.$validators.max=function(e){return!(O||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!h||-1!==[void 0,null].indexOf(y)||isNaN(y)||e<=y)},a.$validators.fraction=function(e){return!h||!e||!isNaN(e)},u.$on("currencyRedraw",function(){f(),c()}),o.bind("focus",function(){if(h){var e=v(a.$viewValue,!1);a.$viewValue!==e&&(a.$viewValue=e,a.$render(),o.triggerHandler("focus"))}}),o.bind("blur",c)}}}Object.defineProperty(n,"__esModule",{value:!0}),n.default=t,t.$inject=["$filter","$locale","$timeout","ngCurrencySettings"]}])}); +//# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map new file mode 100644 index 0000000..7a0b245 --- /dev/null +++ b/dist/ng-currency.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 434794960d4b386d8657","webpack:///./ng-currency.module.js","webpack:///external \"angular\"","webpack:///./ng-currency-settings.provider.js","webpack:///./ng-currency.directive.js"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_interopRequireDefault","obj","default","value","_angular","_angular2","_ngCurrencySettingsProvider","_ngCurrencySettingsProvider2","_ngCurrencyDirective","_ngCurrencyDirective2","provider","directive","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","ngCurrencySettings","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","defaults","set","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","controller","reformat","active","updateOn","debounce","$options","getOption","$viewValue","$parsers","$$rawModelValue","$formatters","$render","revalidate","$validate","keepInRange","$setViewValue","toFixed","$commitViewValue","decimalRex","dChar","RegExp","clearRex","clearValue","replaceSeparator","arguments","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","replace","exec","test","match","join","CURRENCY_SYM","_ngCurrencySettings$d","ngRequired","required","$observe","Number","$emit","push","indexOf","$validators","isNaN","$on","bind","triggerHandler","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _angular = __webpack_require__(1);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\nvar _ngCurrencySettingsProvider = __webpack_require__(2);\n\nvar _ngCurrencySettingsProvider2 = _interopRequireDefault(_ngCurrencySettingsProvider);\n\nvar _ngCurrencyDirective = __webpack_require__(3);\n\nvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _module = _angular2.default.module('ng-currency', []);\n\n_module.provider('ngCurrencySettings', _ngCurrencySettingsProvider2.default);\n_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\nexports.default = _module.name;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ngCurrencySettings = function () {\n function ngCurrencySettings() {\n _classCallCheck(this, ngCurrencySettings);\n\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n\n\n _createClass(ngCurrencySettings, [{\n key: \"$get\",\n value: function $get() {\n var provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n }, {\n key: \"defaults\",\n get: function get() {\n return this._defaults;\n },\n set: function set(defaults) {\n this._defaults = defaults;\n }\n }]);\n\n return ngCurrencySettings;\n}();\n\nexports.default = ngCurrencySettings;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ngCurrency;\nfunction ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: function link(scope, element, attrs, controller) {\n var _ngCurrencySettings$d = ngCurrencySettings.defaults,\n hardCap = _ngCurrencySettings$d.hardCap,\n min = _ngCurrencySettings$d.min,\n max = _ngCurrencySettings$d.max,\n currencySymbol = _ngCurrencySettings$d.currencySymbol,\n fraction = _ngCurrencySettings$d.fraction;\n\n var ngRequired = attrs.required;\n var active = true;\n\n attrs.$observe('ngCurrency', function (value) {\n active = value !== 'false';\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', function (value) {\n hardCap = value === 'true';\n revalidate();\n });\n attrs.$observe('min', function (value) {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', function (value) {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', function (value) {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', function (value) {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', function (value) {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(function () {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push(function (value) {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push(function (value) {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = function (value) {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n };\n\n controller.$validators.max = function (value) {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n };\n\n controller.$validators.fraction = function (value) {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n var value = void 0;\n var updateOn = void 0,\n debounce = void 0;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (var i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (var _i = controller.$formatters.length - 1; _i >= 0; _i--) {\n value = controller.$formatters[_i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n var value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', function () {\n revalidate();\n reformat();\n });\n\n element.bind('focus', function () {\n if (active) {\n var value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n var replaceSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n value = String(value);\n var decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n var cleared = null;\n\n // Replace negative pattern to minus sign (-)\n var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n var neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator)).join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// ng-currency.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 434794960d4b386d8657","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n// WEBPACK FOOTER //\n// ./ng-currency.module.js","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"angular\"\n// module id = 1\n// module chunks = 0","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./ng-currency-settings.provider.js","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n\n\n\n// WEBPACK FOOTER //\n// ./ng-currency.directive.js"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index c37da69..7e98348 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.0.0-semantically-released.0", + "version": "1.2.4", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", From bc0c8aaf225804875e0ab06b2dad47e09862db8a Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Thu, 11 Jan 2018 18:42:35 -0600 Subject: [PATCH 068/159] chore: temporary travis workaround (#162) --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b18edf0..2fa38f9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -sudo: false +sudo: required language: node_js node_js: node cache: From 41f4a1ff3366b629308df0caaec398ff77f049a8 Mon Sep 17 00:00:00 2001 From: Lufty Wiranda Date: Fri, 12 Jan 2018 07:48:03 +0700 Subject: [PATCH 069/159] chore: upgrade `remove-lockfiles` to v2.0.4 (#161) * remove `package-lock.json` from ignored list --- .gitignore | 1 - package.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 3cb8f68..ef669ae 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,3 @@ bower_components/ dist/ coverage/ npm-debug.log -package-lock.json diff --git a/package.json b/package.json index c37da69..a8653af 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "nps": "^5.7.1", "phantomjs-prebuilt": "^2.1.8", "publish-latest": "^1.1.2", - "remove-lockfiles": "^1.4.2", + "remove-lockfiles": "^2.0.4", "semantic-release": "^11.0.0", "sinon": "^4.0.0", "webpack": "^3.0.0", From e08f740d084d093ec79885fbff9e8334cfe41677 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 17 Jan 2018 10:40:08 -0600 Subject: [PATCH 070/159] chore(package): update semantic-release to version 12.2.2 (#163) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a8653af..9179488 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "phantomjs-prebuilt": "^2.1.8", "publish-latest": "^1.1.2", "remove-lockfiles": "^2.0.4", - "semantic-release": "^11.0.0", + "semantic-release": "^12.2.2", "sinon": "^4.0.0", "webpack": "^3.0.0", "webpack-dev-server": "^2.4.5" From 5d9f83f8700057b93538c4e12e6f8284f45297ef Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Tue, 6 Feb 2018 16:58:52 -0600 Subject: [PATCH 071/159] chore(package): update jasmine-core to version 3.0.0 (#165) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9179488..ff386e4 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "html-loader": "^0.5.0", "husky": "^0.14.3", "isparta-loader": "^2.0.0", - "jasmine-core": "^2.4.1", + "jasmine-core": "^3.0.0", "karma": "^2.0.0", "karma-chrome-launcher": "^2.2.0", "karma-coverage": "^1.1.1", From 8beb54a54de3674ee6c5f07e3acd7a7822651c1a Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Sun, 25 Feb 2018 20:41:49 -0600 Subject: [PATCH 072/159] fix: upgraded to webpack 4.0.0 (#170) --- karma.ci.conf.js | 3 ++- karma.conf.js | 14 ++++++++++++-- package-scripts.yml | 8 ++++---- package.json | 9 +++++---- webpack.config.js | 21 +++++++++++---------- webpack.test.config.js | 15 ++++----------- 6 files changed, 38 insertions(+), 32 deletions(-) diff --git a/karma.ci.conf.js b/karma.ci.conf.js index d1c96da..cefbb77 100644 --- a/karma.ci.conf.js +++ b/karma.ci.conf.js @@ -20,7 +20,8 @@ module.exports = function(config) { webpack: webpackConfig, webpackMiddleware: { - noInfo: true + noInfo: true, + stats: 'errors-only' }, reporters: ['spec'], diff --git a/karma.conf.js b/karma.conf.js index a340b37..0664691 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,4 +1,13 @@ const webpackConfig = require('./webpack.test.config.js'); +webpackConfig.module.rules.push({ + enforce: 'pre', + test: /\.js$/, + exclude: /tests|node_modules/, + use: { + loader: 'istanbul-instrumenter-loader', + options: { esModules: true } + } +}); module.exports = function(config) { config.set({ @@ -20,7 +29,8 @@ module.exports = function(config) { webpack: webpackConfig, webpackMiddleware: { - noInfo: true + noInfo: true, + stats: 'errors-only' }, reporters: ['mocha', 'coverage'], @@ -41,7 +51,7 @@ module.exports = function(config) { autoWatch: true, - browsers: ['PhantomJS'], + browsers: ['ChromeHeadless'], browserNoActivityTimeout: 120000, diff --git a/package-scripts.yml b/package-scripts.yml index eabf92e..4b0e4f3 100644 --- a/package-scripts.yml +++ b/package-scripts.yml @@ -14,20 +14,20 @@ scripts: description: Executes the Test Suite on Sauce Labs serve: default: - script: webpack-dev-server -d --config webpack.server.config.js + script: webpack-dev-server --mode development --config webpack.server.config.js description: Starts a server at http://localhost:8080 https: - script: webpack-dev-server -d --https --port 443 --config webpack.server.config.js + script: webpack-dev-server --mode development --https --port 443 --config webpack.server.config.js description: Starts a server at https://localhost build: default: script: nps build.dev && nps build.prod description: Builds both a minified and unminified artifact dev: - script: webpack --progress --colors -d + script: webpack --progress --colors --mode development description: Builds an unminified artifact prod: - script: webpack --progress --colors -p + script: webpack --progress --colors --mode production description: Builds a minified artifact semantic-release: script: semantic-release diff --git a/package.json b/package.json index ff386e4..9ae4b20 100644 --- a/package.json +++ b/package.json @@ -33,12 +33,12 @@ "babel-preset-es2015": "^6.9.0", "cz-conventional-changelog": "^2.0.0", "eslint": "^4.1.0", - "eslint-config-google": "^0.8.1", + "eslint-config-google": "^0.9.1", "eslint-loader": "^1.4.1", "eslint-plugin-jasmine": "^2.0.0", "html-loader": "^0.5.0", "husky": "^0.14.3", - "isparta-loader": "^2.0.0", + "istanbul-instrumenter-loader": "^3.0.0", "jasmine-core": "^3.0.0", "karma": "^2.0.0", "karma-chrome-launcher": "^2.2.0", @@ -58,8 +58,9 @@ "remove-lockfiles": "^2.0.4", "semantic-release": "^12.2.2", "sinon": "^4.0.0", - "webpack": "^3.0.0", - "webpack-dev-server": "^2.4.5" + "webpack": "^4.0.0", + "webpack-cli": "^2.0.9", + "webpack-dev-server": "^3.0.0" }, "config": { "commitizen": { diff --git a/webpack.config.js b/webpack.config.js index 25d8e2b..d862356 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,32 +1,33 @@ const path = require('path'); +const { argv: args } = require('yargs'); + +const isProd = args.mode === 'production'; module.exports = { context: path.join(__dirname, 'src'), entry: { - 'ng-currency': './ng-currency.module.js' + 'ng-currency': ['./ng-currency.module.js'] }, output: { path: path.join(__dirname, 'dist'), - filename: '[name].js', + filename: isProd ? '[name].min.js' : '[name].js', sourceMapFilename: '[file].map', library: 'ng-currency', libraryTarget: 'umd', umdNamedDefine: true }, - externals: [{ - angular: 'angular' - }], + externals: { + 'angular': 'angular' + }, devtool: 'source-map', module: { rules: [{ - enforce: 'pre', - test: /\.js$/, - exclude: /node_modules/, - loader: 'eslint-loader' - }, { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' }] + }, + optimization: { + minimize: isProd ? true : false } }; diff --git a/webpack.test.config.js b/webpack.test.config.js index 1226f75..4422a96 100644 --- a/webpack.test.config.js +++ b/webpack.test.config.js @@ -4,16 +4,6 @@ module.exports = { }, module: { rules: [{ - enforce: 'pre', - test: /\.js$/, - include: /test/, - loader: 'eslint-loader' - }, { - enforce: 'pre', - test: /\.js$/, - exclude: /test|node_modules/, - loader: 'isparta-loader' - }, { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' @@ -23,5 +13,8 @@ module.exports = { loader: 'html-loader' }] }, - devtool: 'inline-source-map' + devtool: 'inline-source-map', + optimization: { + minimize: false + } }; From 96fc3aeebad615493c3da5be5529a2e67a8935d5 Mon Sep 17 00:00:00 2001 From: aguirrel Date: Mon, 26 Feb 2018 02:51:57 +0000 Subject: [PATCH 073/159] v1.2.5 --- dist/ng-currency.js | 441 ++++++++++++++++++++++++++++++++++++ dist/ng-currency.js.map | 1 + dist/ng-currency.min.js | 2 + dist/ng-currency.min.js.map | 1 + package.json | 2 +- 5 files changed, 446 insertions(+), 1 deletion(-) create mode 100644 dist/ng-currency.js create mode 100644 dist/ng-currency.js.map create mode 100644 dist/ng-currency.min.js create mode 100644 dist/ng-currency.min.js.map diff --git a/dist/ng-currency.js b/dist/ng-currency.js new file mode 100644 index 0000000..fc762c6 --- /dev/null +++ b/dist/ng-currency.js @@ -0,0 +1,441 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("angular")); + else if(typeof define === 'function' && define.amd) + define("ng-currency", ["angular"], factory); + else if(typeof exports === 'object') + exports["ng-currency"] = factory(require("angular")); + else + root["ng-currency"] = factory(root["angular"]); +})(window, function(__WEBPACK_EXTERNAL_MODULE_angular__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./ng-currency-settings.provider.js": +/*!******************************************!*\ + !*** ./ng-currency-settings.provider.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var ngCurrencySettings = function () { + function ngCurrencySettings() { + _classCallCheck(this, ngCurrencySettings); + + this._defaults = { + fraction: 2, + hardCap: false, + min: undefined, + max: undefined, + currencySymbol: undefined + }; + } + + /** + * The default property values for 'ng-currency' + */ + + + _createClass(ngCurrencySettings, [{ + key: "$get", + value: function $get() { + var provider = this; + return { + /** + * The default property values for 'ng-currency' + */ + get defaults() { + return provider.defaults; + } + }; + } + }, { + key: "defaults", + get: function get() { + return this._defaults; + }, + set: function set(defaults) { + this._defaults = defaults; + } + }]); + + return ngCurrencySettings; +}(); + +exports.default = ngCurrencySettings; + +/***/ }), + +/***/ "./ng-currency.directive.js": +/*!**********************************!*\ + !*** ./ng-currency.directive.js ***! + \**********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = ngCurrency; +function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { + return { + require: 'ngModel', + link: function link(scope, element, attrs, controller) { + var _ngCurrencySettings$d = ngCurrencySettings.defaults, + hardCap = _ngCurrencySettings$d.hardCap, + min = _ngCurrencySettings$d.min, + max = _ngCurrencySettings$d.max, + currencySymbol = _ngCurrencySettings$d.currencySymbol, + fraction = _ngCurrencySettings$d.fraction; + + var ngRequired = attrs.required; + var active = true; + + attrs.$observe('ngCurrency', function (value) { + active = value !== 'false'; + if (active) { + reformat(); + } else { + controller.$viewValue = controller.$$rawModelValue; + controller.$render(); + } + }); + attrs.$observe('hardCap', function (value) { + hardCap = value === 'true'; + revalidate(); + }); + attrs.$observe('min', function (value) { + min = value ? Number(value) : undefined; + revalidate(); + }); + attrs.$observe('max', function (value) { + max = value ? Number(value) : undefined; + revalidate(); + }); + attrs.$observe('currencySymbol', function (value) { + currencySymbol = value; + reformat(); + }); + attrs.$observe('required', function (value) { + ngRequired = value; + revalidate(); + }); + attrs.$observe('fraction', function (value) { + fraction = value || 2; + reformat(); + revalidate(); + }); + + // HACK(nick-woodward): Seriously angular? + $timeout(function () { + scope.$emit('currencyRedraw'); + }); + + controller.$parsers.push(function (value) { + if (active && [undefined, null, ''].indexOf(value) === -1) { + value = clearValue(value); + value = keepInRange(Number(value)); + return value; + } + return value; + }); + + controller.$formatters.push(function (value) { + if (active && [undefined, null, ''].indexOf(value) === -1) { + return $filter('currency')(value, getCurrencySymbol(), fraction); + } + return value; + }); + + controller.$validators.min = function (value) { + if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { + return true; + } + return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min; + }; + + controller.$validators.max = function (value) { + if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { + return true; + } + return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max; + }; + + controller.$validators.fraction = function (value) { + return !active || !value || !isNaN(value); + }; + + function reformat() { + if (active) { + var value = void 0; + var updateOn = void 0, + debounce = void 0; + if (controller.$options) { + // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower. + // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release + // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa + if (controller.$options.getOption) { + updateOn = controller.$options.getOption('updateOn'); + debounce = controller.$options.getOption('debounce'); + } else { + updateOn = controller.$options.updateOn; + debounce = controller.$options.debounce; + } + } + if (updateOn === 'blur' || debounce) { + value = controller.$viewValue; + for (var i = controller.$parsers.length - 1; i >= 0; i--) { + value = controller.$parsers[i](value); + } + } else { + value = controller.$$rawModelValue; + } + for (var _i = controller.$formatters.length - 1; _i >= 0; _i--) { + value = controller.$formatters[_i](value); + } + controller.$viewValue = value; + controller.$render(); + } + } + + function revalidate() { + controller.$validate(); + if (active) { + var value = keepInRange(controller.$$rawModelValue); + if (value !== controller.$$rawModelValue) { + controller.$setViewValue(value.toFixed(fraction)); + controller.$commitViewValue(); + reformat(); + } + } + } + + function keepInRange(value) { + if (hardCap) { + if (max !== undefined && value > max) { + value = max; + } else if (min !== undefined && value < min) { + value = min; + } + } + return value; + } + + scope.$on('currencyRedraw', function () { + revalidate(); + reformat(); + }); + + element.bind('focus', function () { + if (active) { + var value = clearValue(controller.$viewValue, false); + + if (controller.$viewValue !== value) { + controller.$viewValue = value; + controller.$render(); + element.triggerHandler('focus'); + } + } + }); + + element.bind('blur', reformat); + + // TODO: Rewrite this parsing logic to more readable. + + function decimalRex(dChar) { + return RegExp('\\d|\\-|\\' + dChar, 'g'); + } + + function clearRex(dChar) { + return RegExp('\\-{0,1}((\\' + dChar + ')|([0-9]{1,}\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g'); + } + + function clearValue(value) { + var replaceSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + value = String(value); + var decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; + var cleared = null; + + // Replace negative pattern to minus sign (-) + var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction); + var neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); + var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); + var value_dummy_txt = value.replace(neg_regexp.exec(value), ''); + + // If is negative + if (neg_dummy_txt === value_dummy_txt) { + value = '-' + neg_regexp.exec(value); + } + + if (RegExp('^-[\\s]*$', 'g').test(value)) { + value = '-0'; + } + + if (decimalRex(decimalSeparator).test(value)) { + cleared = value.match(decimalRex(decimalSeparator)).join('').match(clearRex(decimalSeparator)) || ['']; + + cleared = cleared[0]; + cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared; + } + + return cleared || null; + } + + function getCurrencySymbol() { + return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol; + } + } + }; +} +ngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings']; + +/***/ }), + +/***/ "./ng-currency.module.js": +/*!*******************************!*\ + !*** ./ng-currency.module.js ***! + \*******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _angular = __webpack_require__(/*! angular */ "angular"); + +var _angular2 = _interopRequireDefault(_angular); + +var _ngCurrencySettingsProvider = __webpack_require__(/*! ./ng-currency-settings.provider.js */ "./ng-currency-settings.provider.js"); + +var _ngCurrencySettingsProvider2 = _interopRequireDefault(_ngCurrencySettingsProvider); + +var _ngCurrencyDirective = __webpack_require__(/*! ./ng-currency.directive.js */ "./ng-currency.directive.js"); + +var _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var _module = _angular2.default.module('ng-currency', []); + +_module.provider('ngCurrencySettings', _ngCurrencySettingsProvider2.default); +_module.directive('ngCurrency', _ngCurrencyDirective2.default); + +exports.default = _module.name; + +/***/ }), + +/***/ 0: +/*!*************************************!*\ + !*** multi ./ng-currency.module.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(/*! ./ng-currency.module.js */"./ng-currency.module.js"); + + +/***/ }), + +/***/ "angular": +/*!**************************!*\ + !*** external "angular" ***! + \**************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE_angular__; + +/***/ }) + +/******/ }); +}); +//# sourceMappingURL=ng-currency.js.map \ No newline at end of file diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map new file mode 100644 index 0000000..2972907 --- /dev/null +++ b/dist/ng-currency.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://ng-currency/webpack/universalModuleDefinition","webpack://ng-currency/webpack/bootstrap","webpack://ng-currency/./ng-currency-settings.provider.js","webpack://ng-currency/./ng-currency.directive.js","webpack://ng-currency/./ng-currency.module.js","webpack://ng-currency/external \"angular\""],"names":["ngCurrencySettings","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","provider","defaults","ngCurrency","$filter","$locale","$timeout","require","link","scope","element","attrs","controller","ngRequired","required","active","$observe","value","reformat","$viewValue","$$rawModelValue","$render","revalidate","Number","$emit","$parsers","push","indexOf","clearValue","keepInRange","$formatters","getCurrencySymbol","$validators","isNaN","updateOn","debounce","$options","getOption","i","length","$validate","$setViewValue","toFixed","$commitViewValue","$on","bind","triggerHandler","decimalRex","dChar","RegExp","clearRex","replaceSeparator","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","CURRENCY_SYM","$inject","module","directive","name"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE_angular__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n","module.exports = __WEBPACK_EXTERNAL_MODULE_angular__;"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/ng-currency.min.js b/dist/ng-currency.min.js new file mode 100644 index 0000000..790a8be --- /dev/null +++ b/dist/ng-currency.min.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(window,function(e){return function(e){var n={};function r(t){if(n[t])return n[t].exports;var u=n[t]={i:t,l:!1,exports:{}};return e[t].call(u.exports,u,u.exports,r),u.l=!0,u.exports}return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.p="",r(r.s=4)}([function(e,n,r){"use strict";function t(e,n,r,t){return{require:"ngModel",link:function(u,o,i,a){var c=t.defaults,f=c.hardCap,l=c.min,d=c.max,s=c.currencySymbol,v=c.fraction,p=i.required,$=!0;function g(){if($){var e=void 0,n=void 0,r=void 0;if(a.$options&&(a.$options.getOption?(n=a.$options.getOption("updateOn"),r=a.$options.getOption("debounce")):(n=a.$options.updateOn,r=a.$options.debounce)),"blur"===n||r){e=a.$viewValue;for(var t=a.$parsers.length-1;t>=0;t--)e=a.$parsers[t](e)}else e=a.$$rawModelValue;for(var u=a.$formatters.length-1;u>=0;u--)e=a.$formatters[u](e);a.$viewValue=e,a.$render()}}function b(){if(a.$validate(),$){var e=y(a.$$rawModelValue);e!==a.$$rawModelValue&&(a.$setViewValue(e.toFixed(v)),a.$commitViewValue(),g())}}function y(e){return f&&(void 0!==d&&e>d?e=d:void 0!==l&&e1&&void 0!==arguments[1])||arguments[1];r=String(r);var u,o=n.NUMBER_FORMATS.DECIMAL_SEP,i=null,a=e("currency")("-1",O(),v),c=RegExp("[0-9."+o+n.NUMBER_FORMATS.GROUP_SEP+"]+");return a.replace(c.exec(a),"")===r.replace(c.exec(r),"")&&(r="-"+c.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),m(o).test(r)&&(i=(i=r.match(m(o)).join("").match((u=o,RegExp("\\-{0,1}((\\"+u+")|([0-9]{1,}\\"+u+"?))&?[0-9]{0,"+v+"}","g")))||[""])[0],i=t?i.replace(o,"."):i),i||null}function O(){return void 0===s?n.NUMBER_FORMATS.CURRENCY_SYM:s}i.$observe("ngCurrency",function(e){($="false"!==e)?g():(a.$viewValue=a.$$rawModelValue,a.$render())}),i.$observe("hardCap",function(e){f="true"===e,b()}),i.$observe("min",function(e){l=e?Number(e):void 0,b()}),i.$observe("max",function(e){d=e?Number(e):void 0,b()}),i.$observe("currencySymbol",function(e){s=e,g()}),i.$observe("required",function(e){p=e,b()}),i.$observe("fraction",function(e){v=e||2,g(),b()}),r(function(){u.$emit("currencyRedraw")}),a.$parsers.push(function(e){return $&&-1===[void 0,null,""].indexOf(e)?(e=x(e),e=y(Number(e))):e}),a.$formatters.push(function(n){return $&&-1===[void 0,null,""].indexOf(n)?e("currency")(n,O(),v):n}),a.$validators.min=function(e){return!(p||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!$||-1!==[void 0,null].indexOf(l)||isNaN(l)||e>=l)},a.$validators.max=function(e){return!(p||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!$||-1!==[void 0,null].indexOf(d)||isNaN(d)||e<=d)},a.$validators.fraction=function(e){return!$||!e||!isNaN(e)},u.$on("currencyRedraw",function(){b(),g()}),o.bind("focus",function(){if($){var e=x(a.$viewValue,!1);a.$viewValue!==e&&(a.$viewValue=e,a.$render(),o.triggerHandler("focus"))}}),o.bind("blur",g)}}}Object.defineProperty(n,"__esModule",{value:!0}),n.default=t,t.$inject=["$filter","$locale","$timeout","ngCurrencySettings"]},function(e,n,r){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=function(){function e(e,n){for(var r=0;r {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 9ae4b20..77721a1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "0.0.0-semantically-released.0", + "version": "1.2.5", "main": "dist/ng-currency.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "http://alaguirre.com", From aa0ea66c0bf5a52c4737f99df39fb980e88f4a62 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Mon, 26 Feb 2018 13:23:23 -0600 Subject: [PATCH 074/159] chore: remove eslint-loader (#173) --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 9ae4b20..3d24c84 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "cz-conventional-changelog": "^2.0.0", "eslint": "^4.1.0", "eslint-config-google": "^0.9.1", - "eslint-loader": "^1.4.1", "eslint-plugin-jasmine": "^2.0.0", "html-loader": "^0.5.0", "husky": "^0.14.3", From 974488ca0cd88f9567427713ee18554d1e7a25e6 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 23 Mar 2018 08:18:16 -0500 Subject: [PATCH 075/159] chore(package): update sinon to version 5.0.0 (#177) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3d24c84..dd98a72 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "publish-latest": "^1.1.2", "remove-lockfiles": "^2.0.4", "semantic-release": "^12.2.2", - "sinon": "^4.0.0", + "sinon": "^5.0.0", "webpack": "^4.0.0", "webpack-cli": "^2.0.9", "webpack-dev-server": "^3.0.0" From e0ef48d69ca87a5fd837c2d7850e748cf011c696 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Tue, 5 Jun 2018 10:20:04 -0500 Subject: [PATCH 076/159] =?UTF-8?q?chore(package):=20update=20webpack-cli?= =?UTF-8?q?=20to=20version=203.0.0=20=F0=9F=9A=80=20(#189)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .travis.yml | 2 +- karma.ci.conf.js | 9 ++++++++- karma.conf.js | 11 ++++++++++- package.json | 2 +- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2fa38f9..b18edf0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -sudo: required +sudo: false language: node_js node_js: node cache: diff --git a/karma.ci.conf.js b/karma.ci.conf.js index cefbb77..d7a6003 100644 --- a/karma.ci.conf.js +++ b/karma.ci.conf.js @@ -33,10 +33,17 @@ module.exports = function(config) { logLevel: config.LOG_INFO, browsers: [ - 'Chrome', + 'ChromeHeadlessNoSandbox', 'Firefox' ], + customLaunchers: { + ChromeHeadlessNoSandbox: { + base: 'ChromeHeadless', + flags: ['--no-sandbox'] + } + }, + captureTimeout: 0, browserNoActivityTimeout: 120000, diff --git a/karma.conf.js b/karma.conf.js index 0664691..7d309db 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -51,7 +51,16 @@ module.exports = function(config) { autoWatch: true, - browsers: ['ChromeHeadless'], + browsers: [ + 'ChromeHeadlessNoSandbox' + ], + + customLaunchers: { + ChromeHeadlessNoSandbox: { + base: 'ChromeHeadless', + flags: ['--no-sandbox'] + } + }, browserNoActivityTimeout: 120000, diff --git a/package.json b/package.json index dd98a72..c1bc266 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "semantic-release": "^12.2.2", "sinon": "^5.0.0", "webpack": "^4.0.0", - "webpack-cli": "^2.0.9", + "webpack-cli": "^3.0.0", "webpack-dev-server": "^3.0.0" }, "config": { From 577b4307a821ec789d2cbbdcb8b7df2ac7a21f31 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Mon, 18 Jun 2018 10:09:42 -0500 Subject: [PATCH 077/159] chore(package): update sinon to version 6.0.0 (#191) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c1bc266..609e717 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "publish-latest": "^1.1.2", "remove-lockfiles": "^2.0.4", "semantic-release": "^12.2.2", - "sinon": "^5.0.0", + "sinon": "^6.0.0", "webpack": "^4.0.0", "webpack-cli": "^3.0.0", "webpack-dev-server": "^3.0.0" From 14fb54a1147140075ab5440a3e94232e9d8eda98 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Mon, 25 Jun 2018 10:07:56 -0500 Subject: [PATCH 078/159] =?UTF-8?q?chore(package):=20update=20eslint=20to?= =?UTF-8?q?=20version=205.0.0=20=F0=9F=9A=80=20(#192)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-scripts.yml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-scripts.yml b/package-scripts.yml index 4b0e4f3..def7ef7 100644 --- a/package-scripts.yml +++ b/package-scripts.yml @@ -1,6 +1,6 @@ scripts: lint: - script: eslint src/**/*.js tests/**/*.js + script: eslint src/**/*.js test/**/*.js description: Checks for any formatting errors test: default: diff --git a/package.json b/package.json index 609e717..ce710a3 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "babel-loader": "^7.0.0", "babel-preset-es2015": "^6.9.0", "cz-conventional-changelog": "^2.0.0", - "eslint": "^4.1.0", + "eslint": "^5.0.0", "eslint-config-google": "^0.9.1", "eslint-plugin-jasmine": "^2.0.0", "html-loader": "^0.5.0", From d886c405cbcfcd0a907a39856ccb8a12a3913ceb Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 15 Aug 2018 13:51:43 -0500 Subject: [PATCH 079/159] chore(package): update karma to version 3.0.0 (#193) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ce710a3..d3ff43d 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "husky": "^0.14.3", "istanbul-instrumenter-loader": "^3.0.0", "jasmine-core": "^3.0.0", - "karma": "^2.0.0", + "karma": "^3.0.0", "karma-chrome-launcher": "^2.2.0", "karma-coverage": "^1.1.1", "karma-firefox-launcher": "^1.0.1", From 900c889070a5863657e076544dc0fc714efcadea Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 30 Aug 2018 09:28:02 -0500 Subject: [PATCH 080/159] =?UTF-8?q?chore(package):=20update=20babel-loader?= =?UTF-8?q?=20to=20version=208.0.0=20=F0=9F=9A=80=20(#194)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .babelrc | 2 +- .browserslistrc | 5 +++++ package.json | 6 +++--- 3 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .browserslistrc diff --git a/.babelrc b/.babelrc index 8591b66..ce33b24 100644 --- a/.babelrc +++ b/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - "es2015" + "@babel/preset-env" ] } diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..48d3a67 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,5 @@ +last 2 chrome versions +last 2 firefox versions +last 2 edge versions +IE >= 10 +Safari >= 7 diff --git a/package.json b/package.json index d3ff43d..072b743 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ "devDependencies": { "angular": "^1.6.0", "angular-mocks": "^1.6.0", - "babel-core": "^6.11.4", - "babel-loader": "^7.0.0", - "babel-preset-es2015": "^6.9.0", + "@babel/core": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "babel-loader": "^8.0.0", "cz-conventional-changelog": "^2.0.0", "eslint": "^5.0.0", "eslint-config-google": "^0.9.1", From 4238756364e4760e063dbce2a6eaa4d221106cd3 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Tue, 25 Sep 2018 14:32:42 -0500 Subject: [PATCH 081/159] chore(package): update karma-webpack to version 3.0.1 (#195) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 072b743..41b7e51 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "karma-sinon": "^1.0.5", "karma-sourcemap-loader": "^0.3.7", "karma-spec-reporter": "^0.0.32", - "karma-webpack": "^2.0.0", + "karma-webpack": "^3.0.1", "ng-select-all-on-focus": "^1.0.3", "nps": "^5.7.1", "phantomjs-prebuilt": "^2.1.8", From 0db367767853cd52c948d758c07a40afddd339c3 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 26 Sep 2018 10:16:29 -0500 Subject: [PATCH 082/159] =?UTF-8?q?chore(package):=20update=20husky=20to?= =?UTF-8?q?=20version=201.0.0=20=F0=9F=9A=80=20(#197)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 41b7e51..15c4d25 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "start": "nps", "prepublishOnly": "yarn start build", "postpublish": "publish-latest --user-email aguirrel@xuar.com.ar --user-name aguirrel", - "precommit": "remove-lockfiles" + "pre-commit": "remove-lockfiles" }, "license": "MIT", "devDependencies": { @@ -36,7 +36,7 @@ "eslint-config-google": "^0.9.1", "eslint-plugin-jasmine": "^2.0.0", "html-loader": "^0.5.0", - "husky": "^0.14.3", + "husky": "^1.0.0", "istanbul-instrumenter-loader": "^3.0.0", "jasmine-core": "^3.0.0", "karma": "^3.0.0", From cc58f82de6f9771ac7a9886586e408b214402ba9 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 14 Nov 2018 19:36:41 -0600 Subject: [PATCH 083/159] chore(package): update karma-jasmine to version 2.0.0 (#198) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 15c4d25..3ecb28d 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "karma-chrome-launcher": "^2.2.0", "karma-coverage": "^1.1.1", "karma-firefox-launcher": "^1.0.1", - "karma-jasmine": "^1.0.2", + "karma-jasmine": "^2.0.0", "karma-mocha-reporter": "^2.0.4", "karma-phantomjs-launcher": "^1.0.1", "karma-sinon": "^1.0.5", From 2f7416a8c6c6071bba5233b9e3e3b5eb43b18c6c Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Fri, 8 Feb 2019 19:07:33 -0600 Subject: [PATCH 084/159] fix: updated semantic-release to the latest version (#202) (#203) * Added Sauce Labs * Added Coveralls * Switched tests to use the change event instead of input * updated dependencies --- .eslintrc.yml | 9 +- .github/ISSUE_TEMPLATE.md | 1 + .releaserc.yml | 13 + .travis.yml | 16 +- CHANGELOG.md | 48 +-- README.md | 72 +--- karma.ci.conf.js | 84 +++- karma.conf.js | 23 +- package-scripts.yml | 5 +- package.json | 62 +-- test/.eslintrc.yml | 14 - tests/.eslintrc.yml | 5 + {test => tests}/index.js | 0 .../directives/cents-to-dollars.directive.js | 0 .../directives/cents-to-dollars.module.js | 0 .../ng-currency-settings.provider.spec.js | 19 +- .../ng-currency/ng-currency.directive.spec.js | 403 +++++++++--------- .../templates/cents-to-dollars.html | 0 .../ng-currency/templates/defaults-ng-r | 0 .../ng-currency/templates/defaults.html | 0 .../templates/select-all-on-focus.html | 0 .../ng-currency/templates/variables.html | 0 webpack.test.config.js | 1 + 23 files changed, 376 insertions(+), 399 deletions(-) create mode 100644 .releaserc.yml delete mode 100644 test/.eslintrc.yml create mode 100644 tests/.eslintrc.yml rename {test => tests}/index.js (100%) rename {test => tests}/ng-currency/directives/cents-to-dollars.directive.js (100%) rename {test => tests}/ng-currency/directives/cents-to-dollars.module.js (100%) rename {test => tests}/ng-currency/ng-currency-settings.provider.spec.js (72%) rename {test => tests}/ng-currency/ng-currency.directive.spec.js (61%) rename {test => tests}/ng-currency/templates/cents-to-dollars.html (100%) rename {test => tests}/ng-currency/templates/defaults-ng-r (100%) rename {test => tests}/ng-currency/templates/defaults.html (100%) rename {test => tests}/ng-currency/templates/select-all-on-focus.html (100%) rename {test => tests}/ng-currency/templates/variables.html (100%) diff --git a/.eslintrc.yml b/.eslintrc.yml index 4bf5491..9be18f4 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,16 +1,9 @@ -extends: google +extends: eslint:recommended env: browser: true - serviceworker: true - worker: true -globals: - angular: true parserOptions: sourceType: module rules: - comma-dangle: - - error - - never max-nested-callbacks: 0 no-warning-comments: 0 require-jsdoc: 0 diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 69ab817..882c6f4 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -24,6 +24,7 @@ - [ ] Chrome - [ ] Firefox +- [ ] Safari 10 - [ ] Safari 9 - [ ] Safari 8 - [ ] Safari 7 diff --git a/.releaserc.yml b/.releaserc.yml new file mode 100644 index 0000000..caf0ec6 --- /dev/null +++ b/.releaserc.yml @@ -0,0 +1,13 @@ +branch: master +verifyConditions: + - '@semantic-release/npm' + - '@semantic-release/git' +prepare: + - '@semantic-release/npm' + - path: '@semantic-release/exec' + cmd: npm start build + - path: '@semantic-release/git' + assets: + - package.json + - dist + message: 'chore(release): ${nextRelease.version} [skip ci]' diff --git a/.travis.yml b/.travis.yml index b18edf0..ab8022f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,25 +1,17 @@ sudo: false language: node_js -node_js: node -cache: - directories: - - node_modules +node_js: stable +cache: npm branches: only: - master - /^greenkeeper/.*$/ -addons: - firefox: latest - apt: - sources: - - google-chrome - packages: - - google-chrome-stable script: - npm start lint - - xvfb-run npm start test.sauce + - if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then npm start test.sauce; fi - npm start test after_success: + - npm start report-coverage - npm start semantic-release notifications: email: change diff --git a/CHANGELOG.md b/CHANGELOG.md index e9ba507..ea76bfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,46 +1,4 @@ -## 1.1.0 +# CHANGELOG -* Displaying the real value on focus now displays the value with the locale decimal separator -* Fixed tests not getting kicked off with travis ci - -## 1.0.0 - -* Fixed an issue which caused $pristine to get set to false on focus and blur (#105) - -## 0.11.3 - -* Fixed a bug which fields becomes dirty instead of pristine - -## 0.11.2 - -* Fixed an issue which made it impossible to select content of the input field on focus - -## 0.11.1 - -* Fixed a bug that caused empty ngModel values to get marked as invalid when the min was set to anything above zero or the max was set to anything below zero - -## 0.11.0 - -* Added support for forcing the ngModel value to stay within the min/max range (hard-cap) -* Removed isolated scope -* Created a build process for Travis CI to catch linting and unit test errors -* Refactored the unit tests to reduce duplication - -## 0.10.x - -* Migrated scope bindings to use `attrs.$observe` - -**Migration from 0.9.x!** -Bindings should be updated to use the curly brace syntax - -## 0.9.x - -* Focusing on an input will show the model value rather then the formatted value - -## 0.8.x - -* Updated to Angular 1.3.x - -## 0.7.x - -* Supports Angular 1.2.x +The changelog is automatically updated using [semantic-release](https://github.com/semantic-release/semantic-release). +You can see it on the [releases page](https://github.com/salte-io/ng-currency/releases). diff --git a/README.md b/README.md index 6613de8..82b15d5 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ # ng-currency -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Travis][travis-ci-image]][travis-ci-url] +[![NPM Version](https://img.shields.io/npm/v/ng-currency.svg?style=flat)](https://npmjs.org/package/ng-currency) +[![NPM Downloads](https://img.shields.io/npm/dm/ng-currency.svg?style=flat)](https://npmjs.org/package/ng-currency) +[![Travis](https://img.shields.io/travis/com/salte-io/ng-currency/master.svg?style=flat)](https://travis-ci.com/salte-io/ng-currency) +[![Coveralls](https://img.shields.io/coveralls/salte-io/ng-currency/master.svg)](https://coveralls.io/github/salte-io/ng-currency?branch=master) -[![Greenkeeper badge][greenkeeper-image]][greenkeeper-url] -[![semantic-release][semantic-release-image]][semantic-release-url] -[![Commitizen friendly][commitizen-image]][commitizen-url] +[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](https://commitizen.github.io/cz-cli/) +[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) +[![Greenkeeper badge](https://badges.greenkeeper.io/salte-io/ng-currency.svg)](https://greenkeeper.io) ngCurrency is a directive that enables seamless use of currency inputs. @@ -54,7 +55,7 @@ Then add a ` - + ``` + Inject the `ngCurrency` module into your app: @@ -72,6 +73,7 @@ angular.module('myApp', ['ng-currency']); ## Bindings ### Min/Max + * Default: undefined * Description: Specifies the range the ngModel value can be within for validation and hard-cap @@ -86,6 +88,7 @@ angular.module('myApp', ['ng-currency']); ``` ### Currency Symbol + * Default: Locale Currency Symbol * Description: Prefixes the formatted currency value with the currency symbol @@ -94,6 +97,7 @@ angular.module('myApp', ['ng-currency']); ``` ### Active + * Default: true * Description: Dynamically disable/enable ng-currency @@ -102,6 +106,7 @@ angular.module('myApp', ['ng-currency']); ``` ### Fraction + * Default: 2 * Description: Determines the number of decimal places @@ -110,61 +115,10 @@ angular.module('myApp', ['ng-currency']); ``` ### Hard Cap + * Default: false * Description: Forces the ngModel value to stay within the min/max range ```html ``` - -## Authors - -**Luis Aguirre** - -+ http://alaguirre.com -+ http://github.com/aguirrel - -**Nick Woodward** - -+ http://salte.io -+ http://github.com/nick-woodward - -## Copyright and license - - The MIT License - - Copyright (c) 2012 - 2016 Luis Aguirre - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -[npm-version-image]: http://img.shields.io/npm/v/ng-currency.svg?style=flat -[npm-downloads-image]: http://img.shields.io/npm/dm/ng-currency.svg?style=flat -[npm-url]: https://npmjs.org/package/ng-currency - -[travis-ci-image]: https://img.shields.io/travis/aguirrel/ng-currency.svg?style=flat -[travis-ci-url]: https://travis-ci.org/aguirrel/ng-currency - -[greenkeeper-image]: https://badges.greenkeeper.io/aguirrel/ng-currency.svg -[greenkeeper-url]: https://greenkeeper.io/ - -[commitizen-image]: https://img.shields.io/badge/commitizen-friendly-brightgreen.svg -[commitizen-url]: http://commitizen.github.io/cz-cli/ - -[semantic-release-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg -[semantic-release-url]: https://github.com/semantic-release/semantic-release diff --git a/karma.ci.conf.js b/karma.ci.conf.js index d7a6003..8bb4f5b 100644 --- a/karma.ci.conf.js +++ b/karma.ci.conf.js @@ -1,20 +1,73 @@ const webpackConfig = require('./webpack.test.config.js'); module.exports = function(config) { + const customLaunchers = { + ChromeBeta: { + base: 'SauceLabs', + browserName: 'chrome', + version: 'beta' + }, + Chrome: { + base: 'SauceLabs', + browserName: 'chrome' + }, + Firefox: { + base: 'SauceLabs', + browserName: 'firefox' + }, + Edge: { + base: 'SauceLabs', + browserName: 'microsoftedge' + }, + InternetExplorer11: { + base: 'SauceLabs', + browserName: 'internet explorer', + version: '11' + }, + InternetExplorer10: { + base: 'SauceLabs', + browserName: 'internet explorer', + version: '10' + }, + // TODO: Enable this once https://github.com/karma-runner/karma/issues/3198 is resolved + // Safari10: { + // base: 'SauceLabs', + // browserName: 'safari', + // version: '10' + // }, + Safari9: { + base: 'SauceLabs', + browserName: 'safari', + version: '9' + }, + Safari8: { + base: 'SauceLabs', + browserName: 'safari', + version: '8' + } + }; + const karmaConfig = { basePath: '', frameworks: [ - 'jasmine', - 'sinon' + 'mocha', + 'sinon', + 'polyfill' + ], + + polyfill: [ + 'Promise', + 'fetch', + 'URL' ], files: [ - 'test/index.js' + 'tests/index.js' ], preprocessors: { - 'test/index.js': ['webpack', 'sourcemap'] + 'tests/index.js': ['webpack', 'sourcemap'] }, webpack: webpackConfig, @@ -24,7 +77,12 @@ module.exports = function(config) { stats: 'errors-only' }, - reporters: ['spec'], + reporters: ['mocha', 'saucelabs'], + + mochaReporter: { + output: 'minimal', + showDiff: true + }, port: 9876, @@ -32,18 +90,14 @@ module.exports = function(config) { logLevel: config.LOG_INFO, - browsers: [ - 'ChromeHeadlessNoSandbox', - 'Firefox' - ], - - customLaunchers: { - ChromeHeadlessNoSandbox: { - base: 'ChromeHeadless', - flags: ['--no-sandbox'] - } + sauceLabs: { + testName: 'salte-io/ng-currency', + tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER, + startConnect: true }, + customLaunchers: customLaunchers, + browsers: Object.keys(customLaunchers), captureTimeout: 0, browserNoActivityTimeout: 120000, diff --git a/karma.conf.js b/karma.conf.js index 7d309db..ec28802 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -14,16 +14,23 @@ module.exports = function(config) { basePath: '', frameworks: [ - 'jasmine', - 'sinon' + 'mocha', + 'sinon', + 'polyfill' + ], + + polyfills: [ + 'fetch', + 'Promise', + 'URL' ], files: [ - 'test/index.js' + 'tests/index.js' ], preprocessors: { - 'test/index.js': ['webpack', 'sourcemap'] + 'tests/index.js': ['webpack', 'sourcemap'] }, webpack: webpackConfig, @@ -43,6 +50,10 @@ module.exports = function(config) { ] }, + mochaReporter: { + showDiff: true + }, + port: 9876, colors: true, @@ -51,9 +62,7 @@ module.exports = function(config) { autoWatch: true, - browsers: [ - 'ChromeHeadlessNoSandbox' - ], + browsers: ['ChromeHeadlessNoSandbox'], customLaunchers: { ChromeHeadlessNoSandbox: { diff --git a/package-scripts.yml b/package-scripts.yml index def7ef7..612d3fb 100644 --- a/package-scripts.yml +++ b/package-scripts.yml @@ -1,6 +1,6 @@ scripts: lint: - script: eslint src/**/*.js test/**/*.js + script: eslint src/**/*.js tests/**/*.js description: Checks for any formatting errors test: default: @@ -29,6 +29,9 @@ scripts: prod: script: webpack --progress --colors --mode production description: Builds a minified artifact + report-coverage: + script: coveralls < coverage/lcov.info + description: Reports code coverage information to Coveralls semantic-release: script: semantic-release description: Publishes the artifact to NPM and GitHub diff --git a/package.json b/package.json index 3f233b4..e8820db 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,17 @@ { "name": "ng-currency", "version": "1.2.5", - "main": "dist/ng-currency.js", + "main": "dist/ng-currency.min.js", "description": "Directive that works in conjunction with currency filter.", - "homepage": "http://alaguirre.com", - "bugs": "https://github.com/salte-io/salte-seed/issues", + "homepage": "https://github.com/salte-io/ng-currency", + "bugs": "https://github.com/salte-io/ng-currency/issues", "contributors": [ - "Luis Aguirre ", - "Nick Woodward " + "Nick Woodward ", + "Luis Aguirre " ], "repository": { "type": "git", - "url": "https://github.com/aguirrel/ng-currency.git" + "url": "https://github.com/salte-io/ng-currency.git" }, "keywords": [ "currency", @@ -19,44 +19,41 @@ "filter" ], "scripts": { - "start": "nps", - "prepublishOnly": "yarn start build", - "postpublish": "publish-latest --user-email aguirrel@xuar.com.ar --user-name aguirrel", - "pre-commit": "remove-lockfiles" + "start": "nps" }, "license": "MIT", "devDependencies": { - "angular": "^1.6.0", - "angular-mocks": "^1.6.0", "@babel/core": "^7.0.0", "@babel/preset-env": "^7.0.0", - "babel-loader": "^8.0.0", + "@semantic-release/exec": "^3.0.2", + "@semantic-release/git": "^7.0.2", + "angular": "^1.6.0", + "angular-mocks": "^1.6.0", + "babel-loader": "^8.0.5", + "chai": "^4.2.0", + "coveralls": "^3.0.2", "cz-conventional-changelog": "^2.0.0", "eslint": "^5.0.0", - "eslint-config-google": "^0.9.1", - "eslint-plugin-jasmine": "^2.0.0", + "eslint-plugin-mocha": "^5.2.1", "html-loader": "^0.5.0", "husky": "^1.0.0", "istanbul-instrumenter-loader": "^3.0.0", - "jasmine-core": "^3.0.0", - "karma": "^3.0.0", - "karma-chrome-launcher": "^2.2.0", - "karma-coverage": "^1.1.1", - "karma-firefox-launcher": "^1.0.1", - "karma-jasmine": "^2.0.0", - "karma-mocha-reporter": "^2.0.4", - "karma-phantomjs-launcher": "^1.0.1", + "karma": "^4.0.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-mocha": "^1.0.0", + "karma-mocha-reporter": "2.2.5", + "karma-polyfill": "^1.0.0", + "karma-sauce-launcher": "^2.0.0", "karma-sinon": "^1.0.5", "karma-sourcemap-loader": "^0.3.7", - "karma-spec-reporter": "^0.0.32", - "karma-webpack": "^3.0.1", + "karma-webpack": "^3.0.0", + "mocha": "^5.2.0", "ng-select-all-on-focus": "^1.0.3", "nps": "^5.7.1", - "phantomjs-prebuilt": "^2.1.8", - "publish-latest": "^1.1.2", "remove-lockfiles": "^2.0.4", - "semantic-release": "^12.2.2", - "sinon": "^6.0.0", + "semantic-release": "^15.0.0", + "sinon": "^7.0.0", "webpack": "^4.0.0", "webpack-cli": "^3.0.0", "webpack-dev-server": "^3.0.0" @@ -65,5 +62,10 @@ "commitizen": { "path": "./node_modules/cz-conventional-changelog" } + }, + "husky": { + "hooks": { + "pre-commit": "remove-lockfiles" + } } -} \ No newline at end of file +} diff --git a/test/.eslintrc.yml b/test/.eslintrc.yml deleted file mode 100644 index f3d4559..0000000 --- a/test/.eslintrc.yml +++ /dev/null @@ -1,14 +0,0 @@ -extends: ../.eslintrc.yml -plugins: - - jasmine -env: - jasmine: true -globals: - assert: true - expect: true - sinon: true -rules: - jasmine/no-suite-callback-args: 2 - jasmine/no-suite-dupes: - - 2 - - branch diff --git a/tests/.eslintrc.yml b/tests/.eslintrc.yml new file mode 100644 index 0000000..d9ea697 --- /dev/null +++ b/tests/.eslintrc.yml @@ -0,0 +1,5 @@ +extends: ../.eslintrc.yml +env: + mocha: true +globals: + sinon: true \ No newline at end of file diff --git a/test/index.js b/tests/index.js similarity index 100% rename from test/index.js rename to tests/index.js diff --git a/test/ng-currency/directives/cents-to-dollars.directive.js b/tests/ng-currency/directives/cents-to-dollars.directive.js similarity index 100% rename from test/ng-currency/directives/cents-to-dollars.directive.js rename to tests/ng-currency/directives/cents-to-dollars.directive.js diff --git a/test/ng-currency/directives/cents-to-dollars.module.js b/tests/ng-currency/directives/cents-to-dollars.module.js similarity index 100% rename from test/ng-currency/directives/cents-to-dollars.module.js rename to tests/ng-currency/directives/cents-to-dollars.module.js diff --git a/test/ng-currency/ng-currency-settings.provider.spec.js b/tests/ng-currency/ng-currency-settings.provider.spec.js similarity index 72% rename from test/ng-currency/ng-currency-settings.provider.spec.js rename to tests/ng-currency/ng-currency-settings.provider.spec.js index 51c1248..01cbab4 100644 --- a/test/ng-currency/ng-currency-settings.provider.spec.js +++ b/tests/ng-currency/ng-currency-settings.provider.spec.js @@ -1,3 +1,6 @@ +import { expect } from 'chai'; +import angular from 'angular'; + import ngCurrency from '../../src/ng-currency.module.js'; describe('provider(ngCurrencySettings)', () => { @@ -13,7 +16,7 @@ describe('provider(ngCurrencySettings)', () => { describe('function(constructor)', () => { it('should set default values', () => { - expect(ngCurrencySettingsProvider.defaults).toEqual({ + expect(ngCurrencySettingsProvider.defaults).to.deep.equal({ fraction: 2, hardCap: false, min: undefined, @@ -25,7 +28,7 @@ describe('provider(ngCurrencySettings)', () => { describe('property(defaults)', () => { it('should be able to override the default values', () => { - expect(ngCurrencySettingsProvider.defaults).toEqual({ + expect(ngCurrencySettingsProvider.defaults).to.deep.equal({ fraction: 2, hardCap: false, min: undefined, @@ -35,22 +38,22 @@ describe('provider(ngCurrencySettings)', () => { ngCurrencySettingsProvider.defaults = true; - expect(ngCurrencySettingsProvider.defaults).toEqual(true); + expect(ngCurrencySettingsProvider.defaults).to.deep.equal(true); }); it('should be able to override specific values', () => { - expect(ngCurrencySettingsProvider.defaults.hardCap).toEqual(false); + expect(ngCurrencySettingsProvider.defaults.hardCap).to.deep.equal(false); ngCurrencySettingsProvider.defaults.hardCap = true; - expect(ngCurrencySettingsProvider.defaults.hardCap).toEqual(true); + expect(ngCurrencySettingsProvider.defaults.hardCap).to.deep.equal(true); }); }); describe('service(ngCurrencySettings)', () => { describe('getter(defaults)', () => { it('should reflect the default values', () => { - expect(ngCurrencySettings.defaults).toEqual({ + expect(ngCurrencySettings.defaults).to.deep.equal({ fraction: 2, hardCap: false, min: undefined, @@ -60,11 +63,11 @@ describe('provider(ngCurrencySettings)', () => { }); it('should reflect changes to the provider', () => { - expect(ngCurrencySettings.defaults.hardCap).toEqual(false); + expect(ngCurrencySettings.defaults.hardCap).to.deep.equal(false); ngCurrencySettingsProvider.defaults.hardCap = true; - expect(ngCurrencySettings.defaults.hardCap).toEqual(true); + expect(ngCurrencySettings.defaults.hardCap).to.deep.equal(true); }); }); }); diff --git a/test/ng-currency/ng-currency.directive.spec.js b/tests/ng-currency/ng-currency.directive.spec.js similarity index 61% rename from test/ng-currency/ng-currency.directive.spec.js rename to tests/ng-currency/ng-currency.directive.spec.js index c207b13..53cd93f 100644 --- a/test/ng-currency/ng-currency.directive.spec.js +++ b/tests/ng-currency/ng-currency.directive.spec.js @@ -1,4 +1,7 @@ import 'ng-select-all-on-focus'; +import { expect } from 'chai'; +import angular from 'angular'; + import ngCurrency from '../../src/ng-currency.module.js'; import centsToDollars from './directives/cents-to-dollars.module.js'; import defaults from './templates/defaults.html'; @@ -28,89 +31,89 @@ describe('ngCurrency directive tests', () => { it('should be able to parse values with thousand separators', () => { element.val('$123,123.45'); - element.triggerHandler('input'); - expect(scope.value).toEqual(123123.45); + element.triggerHandler('change'); + expect(scope.value).to.equal(123123.45); }); it('should be able to parse negatives', () => { element.val('-1.11'); - element.triggerHandler('input'); - expect(scope.value).toEqual(-1.11); + element.triggerHandler('change'); + expect(scope.value).to.equal(-1.11); }); it('should be able to parse values with spaces', () => { element.val('$ -1.11'); - element.triggerHandler('input'); - expect(scope.value).toEqual(-1.11); + element.triggerHandler('change'); + expect(scope.value).to.equal(-1.11); }); it('should be able to parse empty values', () => { element.val(''); - element.triggerHandler('input'); - expect(scope.value).toEqual(''); - expect(element.val()).toEqual(''); + element.triggerHandler('change'); + expect(scope.value).to.equal(''); + expect(element.val()).to.equal(''); element.triggerHandler('focus'); - expect(element.val()).toEqual(''); + expect(element.val()).to.equal(''); }); it('should be able to parse and reformat a value', () => { element.val('123123.45'); - element.triggerHandler('input'); + element.triggerHandler('change'); element.triggerHandler('focus'); - expect(element.val()).toEqual('123123.45'); + expect(element.val()).to.equal('123123.45'); element.triggerHandler('blur'); - expect(element.val()).toEqual('$123,123.45'); - expect(scope.value).toEqual(123123.45); + expect(element.val()).to.equal('$123,123.45'); + expect(scope.value).to.equal(123123.45); }); it('should be able to parse and reformat a value, change the value and format again', () => { scope.value = 0; element.val('$123.45'); - element.triggerHandler('input'); + element.triggerHandler('change'); element.triggerHandler('focus'); - expect(element.val()).toEqual('123.45'); + expect(element.val()).to.equal('123.45'); element.val('456.78'); - element.triggerHandler('input'); + element.triggerHandler('change'); element.triggerHandler('blur'); - expect(element.val()).toEqual('$456.78'); - expect(scope.value).toEqual(456.78); + expect(element.val()).to.equal('$456.78'); + expect(scope.value).to.equal(456.78); }); it('should not be able to parse characters', () => { scope.value = 'a'; scope.$digest(); - expect(element.val()).toEqual(''); + expect(element.val()).to.equal(''); }); describe('Fast Digitation', () => { it('should parse "-" to 0', () => { element.val('-'); - element.triggerHandler('input'); - expect(scope.value).toEqual(0); + element.triggerHandler('change'); + expect(scope.value).to.equal(0); }); it('should parse "- " to 0', () => { element.val('- '); - element.triggerHandler('input'); - expect(scope.value).toEqual(0); + element.triggerHandler('change'); + expect(scope.value).to.equal(0); }); }); describe('Fast Fraction', () => { it('should parse ".5" to 0.5', () => { element.val('.5'); - element.triggerHandler('input'); + element.triggerHandler('change'); element.triggerHandler('blur'); - expect(scope.value).toEqual(0.5); - expect(element.val()).toEqual('$0.50'); + expect(scope.value).to.equal(0.5); + expect(element.val()).to.equal('$0.50'); }); it('should parse "-.5" to -$0.50', () => { element.val('-.5'); - element.triggerHandler('input'); + element.triggerHandler('change'); element.triggerHandler('blur'); - expect(scope.value).toEqual(-0.5); - expect(element.val()).toEqual('-$0.50'); + expect(scope.value).to.equal(-0.5); + expect(element.val()).to.equal('-$0.50'); }); }); @@ -125,10 +128,10 @@ describe('ngCurrency directive tests', () => { currencyPatterns.negPre = '(\u00a4'; currencyPatterns.negSuf = ')'; element.val('($0.50)'); - element.triggerHandler('input'); + element.triggerHandler('change'); element.triggerHandler('blur'); - expect(scope.value).toEqual(-0.5); - expect(element.val()).toEqual('($0.50)'); + expect(scope.value).to.equal(-0.5); + expect(element.val()).to.equal('($0.50)'); }); describe('Decimal: "," : Group: "."', () => { @@ -139,24 +142,24 @@ describe('ngCurrency directive tests', () => { it('should support usage with the decimal separator', () => { element.val('$1.000,50'); - element.triggerHandler('input'); + element.triggerHandler('change'); element.triggerHandler('blur'); - expect(scope.value).toEqual(1000.5); - expect(element.val()).toEqual('$1.000,50'); + expect(scope.value).to.equal(1000.5); + expect(element.val()).to.equal('$1.000,50'); element.triggerHandler('focus'); - expect(scope.value).toEqual(1000.5); - expect(element.val()).toEqual('1000,50'); + expect(scope.value).to.equal(1000.5); + expect(element.val()).to.equal('1000,50'); }); it('should support usage without the decimal separator', () => { element.val('$100.000'); - element.triggerHandler('input'); + element.triggerHandler('change'); element.triggerHandler('blur'); - expect(scope.value).toEqual(100000); - expect(element.val()).toEqual('$100.000,00'); + expect(scope.value).to.equal(100000); + expect(element.val()).to.equal('$100.000,00'); element.triggerHandler('focus'); - expect(scope.value).toEqual(100000); - expect(element.val()).toEqual('100000,00'); + expect(scope.value).to.equal(100000); + expect(element.val()).to.equal('100000,00'); }); }); }); @@ -170,21 +173,21 @@ describe('ngCurrency directive tests', () => { })); it('should support multiple directives', () => { - expect(element.val()).toEqual('$1.00'); + expect(element.val()).to.equal('$1.00'); }); it('should update the model correctly', () => { element.val('$123.45'); - element.triggerHandler('input'); + element.triggerHandler('change'); element.triggerHandler('blur'); - expect(scope.value).toEqual(12345); - expect(element.val()).toEqual('$123.45'); + expect(scope.value).to.equal(12345); + expect(element.val()).to.equal('$123.45'); }); it('should update view value on focus correctly', () => { - expect(element.val()).toEqual('$1.00'); + expect(element.val()).to.equal('$1.00'); element.triggerHandler('focus'); - expect(element.val()).toEqual('1.00'); + expect(element.val()).to.equal('1.00'); }); }); @@ -198,78 +201,78 @@ describe('ngCurrency directive tests', () => { it('should support selecting the real value', () => { element.triggerHandler('focus'); - expect(element[0].setSelectionRange.callCount).toEqual(2); - expect(element[0].setSelectionRange.calledWith(0, 4)).toBeTruthy(); + expect(element[0].setSelectionRange.callCount).to.equal(2); + expect(element[0].setSelectionRange.calledWith(0, 4)).to.be.ok; }); }); }); describe('$pristine', () => { it('should be pristine when initialized', () => { - expect(element.hasClass('ng-pristine')).toBeTruthy(); - expect(scope.form.currency.$pristine).toBeTruthy(); - expect(scope.form.currency.$dirty).toBeFalsy(); - expect(scope.form.$pristine).toBeTruthy(); - expect(scope.form.$dirty).toBeFalsy(); + expect(element.hasClass('ng-pristine')).to.be.ok; + expect(scope.form.currency.$pristine).to.be.ok; + expect(scope.form.currency.$dirty).to.not.be.ok; + expect(scope.form.$pristine).to.be.ok; + expect(scope.form.$dirty).to.not.be.ok; }); it('should stay $pristine if the modelValue has not changed', () => { element.triggerHandler('focus'); - expect(element.hasClass('ng-pristine')).toBeTruthy(); - expect(scope.form.currency.$pristine).toBeTruthy(); - expect(scope.form.currency.$dirty).toBeFalsy(); - expect(scope.form.$pristine).toBeTruthy(); - expect(scope.form.$dirty).toBeFalsy(); + expect(element.hasClass('ng-pristine')).to.be.ok; + expect(scope.form.currency.$pristine).to.be.ok; + expect(scope.form.currency.$dirty).to.not.be.ok; + expect(scope.form.$pristine).to.be.ok; + expect(scope.form.$dirty).to.not.be.ok; element.triggerHandler('blur'); - expect(element.hasClass('ng-pristine')).toBeTruthy(); - expect(scope.form.currency.$pristine).toBeTruthy(); - expect(scope.form.currency.$dirty).toBeFalsy(); - expect(scope.form.$pristine).toBeTruthy(); - expect(scope.form.$dirty).toBeFalsy(); + expect(element.hasClass('ng-pristine')).to.be.ok; + expect(scope.form.currency.$pristine).to.be.ok; + expect(scope.form.currency.$dirty).to.not.be.ok; + expect(scope.form.$pristine).to.be.ok; + expect(scope.form.$dirty).to.not.be.ok; }); it('should stay $pristine if the modelValue is changed', () => { scope.value = 10; scope.$digest(); - expect(element.hasClass('ng-pristine')).toBeTruthy(); - expect(scope.form.currency.$pristine).toBeTruthy(); - expect(scope.form.currency.$dirty).toBeFalsy(); - expect(scope.form.$pristine).toBeTruthy(); - expect(scope.form.$dirty).toBeFalsy(); + expect(element.hasClass('ng-pristine')).to.be.ok; + expect(scope.form.currency.$pristine).to.be.ok; + expect(scope.form.currency.$dirty).to.not.be.ok; + expect(scope.form.$pristine).to.be.ok; + expect(scope.form.$dirty).to.not.be.ok; element.triggerHandler('focus'); - expect(element.hasClass('ng-pristine')).toBeTruthy(); - expect(scope.form.currency.$pristine).toBeTruthy(); - expect(scope.form.currency.$dirty).toBeFalsy(); - expect(scope.form.$pristine).toBeTruthy(); - expect(scope.form.$dirty).toBeFalsy(); + expect(element.hasClass('ng-pristine')).to.be.ok; + expect(scope.form.currency.$pristine).to.be.ok; + expect(scope.form.currency.$dirty).to.not.be.ok; + expect(scope.form.$pristine).to.be.ok; + expect(scope.form.$dirty).to.not.be.ok; element.triggerHandler('blur'); - expect(element.hasClass('ng-pristine')).toBeTruthy(); - expect(scope.form.currency.$pristine).toBeTruthy(); - expect(scope.form.currency.$dirty).toBeFalsy(); - expect(scope.form.$pristine).toBeTruthy(); - expect(scope.form.$dirty).toBeFalsy(); + expect(element.hasClass('ng-pristine')).to.be.ok; + expect(scope.form.currency.$pristine).to.be.ok; + expect(scope.form.currency.$dirty).to.not.be.ok; + expect(scope.form.$pristine).to.be.ok; + expect(scope.form.$dirty).to.not.be.ok; }); it('should not stay $pristine if its already $dirty', () => { element.val('$10.00'); - element.triggerHandler('input'); - expect(element.hasClass('ng-pristine')).toBeFalsy(); - expect(scope.form.currency.$pristine).toBeFalsy(); - expect(scope.form.currency.$dirty).toBeTruthy(); - expect(scope.form.$pristine).toBeFalsy(); - expect(scope.form.$dirty).toBeTruthy(); + element.triggerHandler('change'); + expect(element.hasClass('ng-pristine')).to.not.be.ok; + expect(scope.form.currency.$pristine).to.not.be.ok; + expect(scope.form.currency.$dirty).to.be.ok; + expect(scope.form.$pristine).to.not.be.ok; + expect(scope.form.$dirty).to.be.ok; element.triggerHandler('focus'); - expect(element.hasClass('ng-pristine')).toBeFalsy(); - expect(scope.form.currency.$pristine).toBeFalsy(); - expect(scope.form.currency.$dirty).toBeTruthy(); - expect(scope.form.$pristine).toBeFalsy(); - expect(scope.form.$dirty).toBeTruthy(); + expect(element.hasClass('ng-pristine')).to.not.be.ok; + expect(scope.form.currency.$pristine).to.not.be.ok; + expect(scope.form.currency.$dirty).to.be.ok; + expect(scope.form.$pristine).to.not.be.ok; + expect(scope.form.$dirty).to.be.ok; element.triggerHandler('blur'); - expect(element.hasClass('ng-pristine')).toBeFalsy(); - expect(scope.form.currency.$pristine).toBeFalsy(); - expect(scope.form.currency.$dirty).toBeTruthy(); - expect(scope.form.$pristine).toBeFalsy(); - expect(scope.form.$dirty).toBeTruthy(); + expect(element.hasClass('ng-pristine')).to.not.be.ok; + expect(scope.form.currency.$pristine).to.not.be.ok; + expect(scope.form.currency.$dirty).to.be.ok; + expect(scope.form.$pristine).to.not.be.ok; + expect(scope.form.$dirty).to.be.ok; }); }); @@ -277,11 +280,11 @@ describe('ngCurrency directive tests', () => { it('should listen for the `currencyRedraw` event', () => { sinon.spy(controller, '$validate'); - expect(scope.$on.calledWith('currencyRedraw', sinon.match.func)).toEqual(true); + expect(scope.$on.calledWith('currencyRedraw', sinon.match.func)).to.equal(true); scope.$broadcast('currencyRedraw'); - expect(controller.$validate.callCount).toEqual(1); + expect(controller.$validate.callCount).to.equal(1); }); }); }); @@ -299,24 +302,24 @@ describe('ngCurrency directive tests', () => { it('New for version 0.9.1 - Original value $0.00, should set input value to 0.00 on focus, then $0.00 on blur', () => { element.triggerHandler('focus'); - expect(element.val()).toEqual('0.00'); + expect(element.val()).to.equal('0.00'); element.triggerHandler('blur'); - expect(element.val()).toEqual('$0.00'); + expect(element.val()).to.equal('$0.00'); }); it('Issue #59 - Parse a string value as a float on focus', () => { scope.value = '1.00'; scope.$digest(); - expect(element.val()).toEqual('$1.00'); + expect(element.val()).to.equal('$1.00'); element.triggerHandler('focus'); - expect(element.val()).toEqual('1.00'); + expect(element.val()).to.equal('1.00'); }); describe('Currency Symbol', () => { it('default currency symbol should be the match the locale', () => { scope.value = 123.45; scope.$digest(); - expect(element.val()).toEqual('$123.45'); + expect(element.val()).to.equal('$123.45'); }); }); @@ -324,13 +327,13 @@ describe('ngCurrency directive tests', () => { it('should round (down) to two decimal places by default', () => { scope.value = 123.451; scope.$digest(); - expect(element.val()).toEqual('$123.45'); + expect(element.val()).to.equal('$123.45'); }); it('should round (up) to two decimal places by default', () => { scope.value = 123.457; scope.$digest(); - expect(element.val()).toEqual('$123.46'); + expect(element.val()).to.equal('$123.46'); }); }); }); @@ -355,24 +358,24 @@ describe('ngCurrency directive tests', () => { scope.active = false; scope.value = 123.45; scope.$digest(); - expect(element.val()).toEqual('123.45'); + expect(element.val()).to.equal('123.45'); }); it('should disable validators when inactive', () => { scope.active = false; scope.value = 'a'; scope.$digest(); - expect(element.val()).toEqual('a'); + expect(element.val()).to.equal('a'); }); it('should display the real value when disabled with an invalid value', () => { scope.value = 0.01; scope.min = 1; scope.$digest(); - expect(element.val()).toEqual('$0.01'); + expect(element.val()).to.equal('$0.01'); scope.active = false; scope.$digest(); - expect(element.val()).toEqual('0.01'); + expect(element.val()).to.equal('0.01'); }); }); @@ -381,14 +384,14 @@ describe('ngCurrency directive tests', () => { scope.currencySymbol = ''; scope.value = 123.45; scope.$digest(); - expect(element.val()).toEqual('123.45'); + expect(element.val()).to.equal('123.45'); }); it('should support custom currency symbols', () => { scope.currencySymbol = '¥'; scope.value = 123.45; scope.$digest(); - expect(element.val()).toEqual('¥123.45'); + expect(element.val()).to.equal('¥123.45'); }); }); @@ -397,14 +400,14 @@ describe('ngCurrency directive tests', () => { scope.fraction = 0; scope.value = 123.45; scope.$digest(); - expect(element.val()).toEqual('$123'); + expect(element.val()).to.equal('$123'); }); it('should support a custom fraction value', () => { scope.fraction = 5; scope.value = 123.45678; scope.$digest(); - expect(element.val()).toEqual('$123.45678'); + expect(element.val()).to.equal('$123.45678'); }); }); @@ -433,40 +436,40 @@ describe('ngCurrency directive tests', () => { it('should remain pristine when updating via the scope value', () => { scope.value = 123.45; scope.$digest(); - element.triggerHandler('input'); + element.triggerHandler('change'); element.triggerHandler('blur'); - expect(element.hasClass('ng-pristine')).toBeTruthy(); - expect(scope.form.currency.$pristine).toBeTruthy(); - expect(scope.form.currency.$dirty).toBeFalsy(); - expect(scope.form.$pristine).toBeTruthy(); - expect(scope.form.$dirty).toBeFalsy(); - expect(element.val()).toEqual('$123.45'); + expect(element.hasClass('ng-pristine')).to.be.ok; + expect(scope.form.currency.$pristine).to.be.ok; + expect(scope.form.currency.$dirty).to.not.be.ok; + expect(scope.form.$pristine).to.be.ok; + expect(scope.form.$dirty).to.not.be.ok; + expect(element.val()).to.equal('$123.45'); }); it('should support updating on blur', () => { element.val('$123.45'); - element.triggerHandler('input'); - expect(scope.value).toEqual(0); - expect(element.val()).toEqual('$123.45'); + element.triggerHandler('change'); + expect(scope.value).to.equal(0); + expect(element.val()).to.equal('$123.45'); element.triggerHandler('blur'); - expect(scope.value).toEqual(123.45); - expect(element.val()).toEqual('$123.45'); + expect(scope.value).to.equal(123.45); + expect(element.val()).to.equal('$123.45'); scope.min = 0.01; scope.max = 100; scope.$digest(); - expect(scope.value).toEqual(undefined); - expect(element.val()).toEqual('$123.45'); + expect(scope.value).to.equal(undefined); + expect(element.val()).to.equal('$123.45'); }); it('should support a custom fraction value when updating on blur', () => { scope.fraction = 5; scope.$digest(); element.val('$123.45678'); - element.triggerHandler('input'); - expect(scope.value).toEqual(0); - expect(element.val()).toEqual('$123.45678'); + element.triggerHandler('change'); + expect(scope.value).to.equal(0); + expect(element.val()).to.equal('$123.45678'); element.triggerHandler('blur'); - expect(element.val()).toEqual('$123.45678'); + expect(element.val()).to.equal('$123.45678'); }); }); @@ -488,15 +491,15 @@ describe('ngCurrency directive tests', () => { it('should support updating on debounce', () => { element.val('$123.45'); - element.triggerHandler('input'); - expect(scope.value).toEqual(0); - expect(element.val()).toEqual('$123.45'); + element.triggerHandler('change'); + expect(scope.value).to.equal(0); + expect(element.val()).to.equal('$123.45'); element.triggerHandler('blur'); - expect(scope.value).toEqual(0); - expect(element.val()).toEqual('$123.45'); + expect(scope.value).to.equal(0); + expect(element.val()).to.equal('$123.45'); $timeout.flush(); - expect(scope.value).toEqual(123.45); - expect(element.val()).toEqual('$123.45'); + expect(scope.value).to.equal(123.45); + expect(element.val()).to.equal('$123.45'); }); }); }); @@ -507,46 +510,46 @@ describe('ngCurrency directive tests', () => { scope.value = 1999999; scope.max = 1000000; scope.$digest(); - expect(element.hasClass('ng-invalid-max')).toBeTruthy(); - expect(element.val()).toEqual('$1,999,999.00'); + expect(element.hasClass('ng-invalid-max')).to.be.ok; + expect(element.val()).to.equal('$1,999,999.00'); element.triggerHandler('focus'); - expect(element.val()).toEqual('1999999.00'); + expect(element.val()).to.equal('1999999.00'); element.triggerHandler('blur'); - expect(element.val()).toEqual('$1,999,999.00'); + expect(element.val()).to.equal('$1,999,999.00'); }); it('should become invalid when the max changes', () => { scope.value = 1999999; scope.max = 2000000; scope.$digest(); - expect(element.hasClass('ng-valid-max')).toBeTruthy(); - expect(element.val()).toEqual('$1,999,999.00'); + expect(element.hasClass('ng-valid-max')).to.be.ok; + expect(element.val()).to.equal('$1,999,999.00'); scope.max = 1999998; scope.$digest(); - expect(element.hasClass('ng-invalid-max')).toBeTruthy(); - expect(element.val()).toEqual('$1,999,999.00'); + expect(element.hasClass('ng-invalid-max')).to.be.ok; + expect(element.val()).to.equal('$1,999,999.00'); }); it('should be valid if no max value is set', () => { scope.value = 1999999; scope.$digest(); - expect(element.hasClass('ng-valid-max')).toBeTruthy(); - expect(element.val()).toEqual('$1,999,999.00'); + expect(element.hasClass('ng-valid-max')).to.be.ok; + expect(element.val()).to.equal('$1,999,999.00'); }); it('should support a max of zero', () => { scope.value = 0.01; scope.max = 0; scope.$digest(); - expect(element.hasClass('ng-invalid-max')).toBeTruthy(); - expect(element.val()).toEqual('$0.01'); + expect(element.hasClass('ng-invalid-max')).to.be.ok; + expect(element.val()).to.equal('$0.01'); }); it('should do nothing when an invalid value is provided', () => { scope.value = 4; scope.max = '3px'; scope.$digest(); - expect(element.hasClass('ng-valid-max')).toBeTruthy(); + expect(element.hasClass('ng-valid-max')).to.be.ok; }); it('should support invalid ngModel values', () => { @@ -554,8 +557,8 @@ describe('ngCurrency directive tests', () => { scope.value = ''; scope.max = -0.01; scope.$digest(); - expect(element.hasClass('ng-valid-max')).toBeTruthy(); - expect(element.val()).toEqual(''); + expect(element.hasClass('ng-valid-max')).to.be.ok; + expect(element.val()).to.equal(''); }); }); @@ -569,46 +572,46 @@ describe('ngCurrency directive tests', () => { scope.max = 1; scope.value = 2; scope.$digest(); - expect(element.val()).toEqual('$1.00'); - expect(scope.value).toEqual(1); + expect(element.val()).to.equal('$1.00'); + expect(scope.value).to.equal(1); }); it('should change the value to max when the max changes', () => { scope.max = 2; scope.value = 2; scope.$digest(); - expect(element.val()).toEqual('$2.00'); - expect(scope.value).toEqual(2); + expect(element.val()).to.equal('$2.00'); + expect(scope.value).to.equal(2); scope.max = 1; scope.$digest(); - expect(element.val()).toEqual('$1.00'); - expect(scope.value).toEqual(1); + expect(element.val()).to.equal('$1.00'); + expect(scope.value).to.equal(1); }); it('should do nothing if no max value is set', () => { scope.value = 1999999; scope.$digest(); - expect(element.val()).toEqual('$1,999,999.00'); + expect(element.val()).to.equal('$1,999,999.00'); }); it('should do nothing if no max value is set and no ngModel value is provided', () => { scope.value = ''; scope.$digest(); - expect(element.val()).toEqual(''); + expect(element.val()).to.equal(''); }); it('should support a max of zero', () => { scope.value = 0.01; scope.max = 0; scope.$digest(); - expect(element.val()).toEqual('$0.00'); + expect(element.val()).to.equal('$0.00'); }); it('should do nothing when an invalid value is provided', () => { scope.value = 4; scope.max = '3px'; scope.$digest(); - expect(element.val()).toEqual('$4.00'); + expect(element.val()).to.equal('$4.00'); }); }); }); @@ -619,64 +622,64 @@ describe('ngCurrency directive tests', () => { scope.value = 0.01; scope.min = 1; scope.$digest(); - expect(element.hasClass('ng-invalid-min')).toBeTruthy(); - expect(element.val()).toEqual('$0.01'); + expect(element.hasClass('ng-invalid-min')).to.be.ok; + expect(element.val()).to.equal('$0.01'); element.triggerHandler('focus'); - expect(element.val()).toEqual('0.01'); + expect(element.val()).to.equal('0.01'); element.triggerHandler('blur'); - expect(element.val()).toEqual('$0.01'); + expect(element.val()).to.equal('$0.01'); }); it('should become invalid when the min changes', () => { scope.value = 0.01; scope.min = 0; scope.$digest(); - expect(element.hasClass('ng-valid-min')).toBeTruthy(); - expect(element.val()).toEqual('$0.01'); + expect(element.hasClass('ng-valid-min')).to.be.ok; + expect(element.val()).to.equal('$0.01'); scope.min = 1; scope.$digest(); - expect(element.hasClass('ng-invalid-min')).toBeTruthy(); - expect(element.val()).toEqual('$0.01'); + expect(element.hasClass('ng-invalid-min')).to.be.ok; + expect(element.val()).to.equal('$0.01'); }); it('should be valid if no min value is set', () => { scope.value = 0.01; scope.$digest(); - expect(element.hasClass('ng-valid-min')).toBeTruthy(); - expect(element.val()).toEqual('$0.01'); + expect(element.hasClass('ng-valid-min')).to.be.ok; + expect(element.val()).to.equal('$0.01'); }); it('should do nothing if no min value is set and no ngModel value is provided', () => { scope.value = undefined; scope.$digest(); - expect(element.val()).toEqual(''); + expect(element.val()).to.equal(''); scope.value = null; scope.$digest(); - expect(element.val()).toEqual(''); + expect(element.val()).to.equal(''); scope.value = ''; scope.$digest(); - expect(element.val()).toEqual(''); + expect(element.val()).to.equal(''); }); it('should support a min of zero', () => { scope.value = -0.01; scope.min = 0; scope.$digest(); - expect(element.hasClass('ng-invalid-min')).toBeTruthy(); - expect(element.val()).toEqual('-$0.01'); + expect(element.hasClass('ng-invalid-min')).to.be.ok; + expect(element.val()).to.equal('-$0.01'); }); it('should do nothing when an invalid value is provided', () => { scope.value = 4; scope.min = '5px'; scope.$digest(); - expect(element.hasClass('ng-valid-min')).toBeTruthy(); + expect(element.hasClass('ng-valid-min')).to.be.ok; }); it('should do nothing when no value is provided', () => { scope.value = 4; scope.$digest(); - expect(element.hasClass('ng-valid-min')).toBeTruthy(); + expect(element.hasClass('ng-valid-min')).to.be.ok; }); it('should support invalid ngModel values', () => { @@ -684,8 +687,8 @@ describe('ngCurrency directive tests', () => { scope.value = ''; scope.min = 0.01; scope.$digest(); - expect(element.hasClass('ng-valid-min')).toBeTruthy(); - expect(element.val()).toEqual(''); + expect(element.hasClass('ng-valid-min')).to.be.ok; + expect(element.val()).to.equal(''); }); }); @@ -699,40 +702,40 @@ describe('ngCurrency directive tests', () => { scope.min = 1; scope.value = 0; scope.$digest(); - expect(element.val()).toEqual('$1.00'); - expect(scope.value).toEqual(1); + expect(element.val()).to.equal('$1.00'); + expect(scope.value).to.equal(1); }); it('should change the value to min when the min changes', () => { scope.min = 0; scope.value = 0; scope.$digest(); - expect(element.val()).toEqual('$0.00'); - expect(scope.value).toEqual(0); + expect(element.val()).to.equal('$0.00'); + expect(scope.value).to.equal(0); scope.min = 1; scope.$digest(); - expect(element.val()).toEqual('$1.00'); - expect(scope.value).toEqual(1); + expect(element.val()).to.equal('$1.00'); + expect(scope.value).to.equal(1); }); it('should do nothing if no min value is set', () => { scope.value = 1999999; scope.$digest(); - expect(element.val()).toEqual('$1,999,999.00'); + expect(element.val()).to.equal('$1,999,999.00'); }); it('should support a min of zero', () => { scope.value = -0.01; scope.min = 0; scope.$digest(); - expect(element.val()).toEqual('$0.00'); + expect(element.val()).to.equal('$0.00'); }); it('should do nothing when an invalid value is provided', () => { scope.value = 4; scope.min = '3px'; scope.$digest(); - expect(element.val()).toEqual('$4.00'); + expect(element.val()).to.equal('$4.00'); }); }); }); @@ -747,8 +750,8 @@ describe('ngCurrency directive tests', () => { })); it('should support the required attribute', () => { - expect(element.hasClass('ng-invalid')).toBeTruthy(); - expect(element.hasClass('ng-invalid-min')).toBeTruthy(); + expect(element.hasClass('ng-invalid')).to.be.ok; + expect(element.hasClass('ng-invalid-min')).to.be.ok; }); }); @@ -756,12 +759,12 @@ describe('ngCurrency directive tests', () => { it('should be pristine when initialized with a custom currencySymbol', () => { scope.currencySymbol = '¥'; scope.$digest(); - expect(element.hasClass('ng-pristine')).toBeTruthy(); - expect(scope.form.currency.$pristine).toBeTruthy(); - expect(scope.form.currency.$dirty).toBeFalsy(); - expect(scope.form.$pristine).toBeTruthy(); - expect(scope.form.$dirty).toBeFalsy(); - expect(element.val()).toEqual('¥0.00'); + expect(element.hasClass('ng-pristine')).to.be.ok; + expect(scope.form.currency.$pristine).to.be.ok; + expect(scope.form.currency.$dirty).to.not.be.ok; + expect(scope.form.$pristine).to.be.ok; + expect(scope.form.$dirty).to.not.be.ok; + expect(element.val()).to.equal('¥0.00'); }); }); }); diff --git a/test/ng-currency/templates/cents-to-dollars.html b/tests/ng-currency/templates/cents-to-dollars.html similarity index 100% rename from test/ng-currency/templates/cents-to-dollars.html rename to tests/ng-currency/templates/cents-to-dollars.html diff --git a/test/ng-currency/templates/defaults-ng-r b/tests/ng-currency/templates/defaults-ng-r similarity index 100% rename from test/ng-currency/templates/defaults-ng-r rename to tests/ng-currency/templates/defaults-ng-r diff --git a/test/ng-currency/templates/defaults.html b/tests/ng-currency/templates/defaults.html similarity index 100% rename from test/ng-currency/templates/defaults.html rename to tests/ng-currency/templates/defaults.html diff --git a/test/ng-currency/templates/select-all-on-focus.html b/tests/ng-currency/templates/select-all-on-focus.html similarity index 100% rename from test/ng-currency/templates/select-all-on-focus.html rename to tests/ng-currency/templates/select-all-on-focus.html diff --git a/test/ng-currency/templates/variables.html b/tests/ng-currency/templates/variables.html similarity index 100% rename from test/ng-currency/templates/variables.html rename to tests/ng-currency/templates/variables.html diff --git a/webpack.test.config.js b/webpack.test.config.js index 4422a96..6d1d991 100644 --- a/webpack.test.config.js +++ b/webpack.test.config.js @@ -13,6 +13,7 @@ module.exports = { loader: 'html-loader' }] }, + mode: 'development', devtool: 'inline-source-map', optimization: { minimize: false From 4b22be1d9c6aa8c4698ae77ec5c60476b928b04e Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 9 Feb 2019 01:20:41 +0000 Subject: [PATCH 085/159] chore(release): 1.2.6 [skip ci] --- dist/ng-currency.js | 136 +++++++++++++++++------------------- dist/ng-currency.js.map | 2 +- dist/ng-currency.min.js | 2 +- dist/ng-currency.min.js.map | 2 +- package.json | 2 +- 5 files changed, 70 insertions(+), 74 deletions(-) diff --git a/dist/ng-currency.js b/dist/ng-currency.js index fc762c6..229bca1 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -46,19 +46,34 @@ return /******/ (function(modules) { // webpackBootstrap /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? @@ -85,21 +100,21 @@ return /******/ (function(modules) { // webpackBootstrap /*!******************************************!*\ !*** ./ng-currency-settings.provider.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ngCurrencySettings; }); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } -var ngCurrencySettings = function () { +var ngCurrencySettings = +/*#__PURE__*/ +function () { function ngCurrencySettings() { _classCallCheck(this, ngCurrencySettings); @@ -111,7 +126,6 @@ var ngCurrencySettings = function () { currencySymbol: undefined }; } - /** * The default property values for 'ng-currency' */ @@ -128,6 +142,7 @@ var ngCurrencySettings = function () { get defaults() { return provider.defaults; } + }; } }, { @@ -143,7 +158,7 @@ var ngCurrencySettings = function () { return ngCurrencySettings; }(); -exports.default = ngCurrencySettings; + /***/ }), @@ -151,16 +166,12 @@ exports.default = ngCurrencySettings; /*!**********************************!*\ !*** ./ng-currency.directive.js ***! \**********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = ngCurrency; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ngCurrency; }); function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { return { require: 'ngModel', @@ -171,12 +182,11 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { max = _ngCurrencySettings$d.max, currencySymbol = _ngCurrencySettings$d.currencySymbol, fraction = _ngCurrencySettings$d.fraction; - var ngRequired = attrs.required; var active = true; - attrs.$observe('ngCurrency', function (value) { active = value !== 'false'; + if (active) { reformat(); } else { @@ -208,26 +218,25 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { fraction = value || 2; reformat(); revalidate(); - }); + }); // HACK(nick-woodward): Seriously angular? - // HACK(nick-woodward): Seriously angular? $timeout(function () { scope.$emit('currencyRedraw'); }); - controller.$parsers.push(function (value) { if (active && [undefined, null, ''].indexOf(value) === -1) { value = clearValue(value); value = keepInRange(Number(value)); return value; } + return value; }); - controller.$formatters.push(function (value) { if (active && [undefined, null, ''].indexOf(value) === -1) { return $filter('currency')(value, getCurrencySymbol(), fraction); } + return value; }); @@ -235,6 +244,7 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { return true; } + return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min; }; @@ -242,6 +252,7 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) { return true; } + return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max; }; @@ -251,9 +262,9 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { function reformat() { if (active) { - var value = void 0; - var updateOn = void 0, - debounce = void 0; + var value; + var updateOn, debounce; + if (controller.$options) { // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower. // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release @@ -266,17 +277,21 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { debounce = controller.$options.debounce; } } + if (updateOn === 'blur' || debounce) { value = controller.$viewValue; + for (var i = controller.$parsers.length - 1; i >= 0; i--) { value = controller.$parsers[i](value); } } else { value = controller.$$rawModelValue; } + for (var _i = controller.$formatters.length - 1; _i >= 0; _i--) { value = controller.$formatters[_i](value); } + controller.$viewValue = value; controller.$render(); } @@ -284,8 +299,10 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { function revalidate() { controller.$validate(); + if (active) { var value = keepInRange(controller.$$rawModelValue); + if (value !== controller.$$rawModelValue) { controller.$setViewValue(value.toFixed(fraction)); controller.$commitViewValue(); @@ -302,6 +319,7 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { value = min; } } + return value; } @@ -309,7 +327,6 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { revalidate(); reformat(); }); - element.bind('focus', function () { if (active) { var value = clearValue(controller.$viewValue, false); @@ -321,10 +338,7 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { } } }); - - element.bind('blur', reformat); - - // TODO: Rewrite this parsing logic to more readable. + element.bind('blur', reformat); // TODO: Rewrite this parsing logic to more readable. function decimalRex(dChar) { return RegExp('\\d|\\-|\\' + dChar, 'g'); @@ -336,18 +350,15 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { function clearValue(value) { var replaceSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - value = String(value); var decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP; - var cleared = null; + var cleared = null; // Replace negative pattern to minus sign (-) - // Replace negative pattern to minus sign (-) var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction); var neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+'); var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), ''); - var value_dummy_txt = value.replace(neg_regexp.exec(value), ''); + var value_dummy_txt = value.replace(neg_regexp.exec(value), ''); // If is negative - // If is negative if (neg_dummy_txt === value_dummy_txt) { value = '-' + neg_regexp.exec(value); } @@ -358,7 +369,6 @@ function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) { if (decimalRex(decimalSeparator).test(value)) { cleared = value.match(decimalRex(decimalSeparator)).join('').match(clearRex(decimalSeparator)) || ['']; - cleared = cleared[0]; cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared; } @@ -380,36 +390,22 @@ ngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings']; /*!*******************************!*\ !*** ./ng-currency.module.js ***! \*******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ "angular"); +/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _ng_currency_settings_provider_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ng-currency-settings.provider.js */ "./ng-currency-settings.provider.js"); +/* harmony import */ var _ng_currency_directive_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ng-currency.directive.js */ "./ng-currency.directive.js"); -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _angular = __webpack_require__(/*! angular */ "angular"); - -var _angular2 = _interopRequireDefault(_angular); - -var _ngCurrencySettingsProvider = __webpack_require__(/*! ./ng-currency-settings.provider.js */ "./ng-currency-settings.provider.js"); - -var _ngCurrencySettingsProvider2 = _interopRequireDefault(_ngCurrencySettingsProvider); - -var _ngCurrencyDirective = __webpack_require__(/*! ./ng-currency.directive.js */ "./ng-currency.directive.js"); - -var _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var _module = _angular2.default.module('ng-currency', []); - -_module.provider('ngCurrencySettings', _ngCurrencySettingsProvider2.default); -_module.directive('ngCurrency', _ngCurrencyDirective2.default); -exports.default = _module.name; +var module = angular__WEBPACK_IMPORTED_MODULE_0___default.a.module('ng-currency', []); +module.provider('ngCurrencySettings', _ng_currency_settings_provider_js__WEBPACK_IMPORTED_MODULE_1__["default"]); +module.directive('ngCurrency', _ng_currency_directive_js__WEBPACK_IMPORTED_MODULE_2__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (module.name); /***/ }), diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 2972907..030a775 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://ng-currency/webpack/universalModuleDefinition","webpack://ng-currency/webpack/bootstrap","webpack://ng-currency/./ng-currency-settings.provider.js","webpack://ng-currency/./ng-currency.directive.js","webpack://ng-currency/./ng-currency.module.js","webpack://ng-currency/external \"angular\""],"names":["ngCurrencySettings","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","provider","defaults","ngCurrency","$filter","$locale","$timeout","require","link","scope","element","attrs","controller","ngRequired","required","active","$observe","value","reformat","$viewValue","$$rawModelValue","$render","revalidate","Number","$emit","$parsers","push","indexOf","clearValue","keepInRange","$formatters","getCurrencySymbol","$validators","isNaN","updateOn","debounce","$options","getOption","i","length","$validate","$setViewValue","toFixed","$commitViewValue","$on","bind","triggerHandler","decimalRex","dChar","RegExp","clearRex","replaceSeparator","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","CURRENCY_SYM","$inject","module","directive","name"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE_angular__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n","module.exports = __WEBPACK_EXTERNAL_MODULE_angular__;"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://ng-currency/webpack/universalModuleDefinition","webpack://ng-currency/webpack/bootstrap","webpack://ng-currency/./ng-currency-settings.provider.js","webpack://ng-currency/./ng-currency.directive.js","webpack://ng-currency/./ng-currency.module.js","webpack://ng-currency/external \"angular\""],"names":["ngCurrencySettings","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","provider","defaults","ngCurrency","$filter","$locale","$timeout","require","link","scope","element","attrs","controller","ngRequired","required","active","$observe","value","reformat","$viewValue","$$rawModelValue","$render","revalidate","Number","$emit","$parsers","push","indexOf","clearValue","keepInRange","$formatters","getCurrencySymbol","$validators","isNaN","updateOn","debounce","$options","getOption","i","length","$validate","$setViewValue","toFixed","$commitViewValue","$on","bind","triggerHandler","decimalRex","dChar","RegExp","clearRex","replaceSeparator","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","CURRENCY_SYM","$inject","module","angular","directive","name"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE_angular__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n","module.exports = __WEBPACK_EXTERNAL_MODULE_angular__;"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/ng-currency.min.js b/dist/ng-currency.min.js index 790a8be..5081ee9 100644 --- a/dist/ng-currency.min.js +++ b/dist/ng-currency.min.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(window,function(e){return function(e){var n={};function r(t){if(n[t])return n[t].exports;var u=n[t]={i:t,l:!1,exports:{}};return e[t].call(u.exports,u,u.exports,r),u.l=!0,u.exports}return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.p="",r(r.s=4)}([function(e,n,r){"use strict";function t(e,n,r,t){return{require:"ngModel",link:function(u,o,i,a){var c=t.defaults,f=c.hardCap,l=c.min,d=c.max,s=c.currencySymbol,v=c.fraction,p=i.required,$=!0;function g(){if($){var e=void 0,n=void 0,r=void 0;if(a.$options&&(a.$options.getOption?(n=a.$options.getOption("updateOn"),r=a.$options.getOption("debounce")):(n=a.$options.updateOn,r=a.$options.debounce)),"blur"===n||r){e=a.$viewValue;for(var t=a.$parsers.length-1;t>=0;t--)e=a.$parsers[t](e)}else e=a.$$rawModelValue;for(var u=a.$formatters.length-1;u>=0;u--)e=a.$formatters[u](e);a.$viewValue=e,a.$render()}}function b(){if(a.$validate(),$){var e=y(a.$$rawModelValue);e!==a.$$rawModelValue&&(a.$setViewValue(e.toFixed(v)),a.$commitViewValue(),g())}}function y(e){return f&&(void 0!==d&&e>d?e=d:void 0!==l&&e1&&void 0!==arguments[1])||arguments[1];r=String(r);var u,o=n.NUMBER_FORMATS.DECIMAL_SEP,i=null,a=e("currency")("-1",O(),v),c=RegExp("[0-9."+o+n.NUMBER_FORMATS.GROUP_SEP+"]+");return a.replace(c.exec(a),"")===r.replace(c.exec(r),"")&&(r="-"+c.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),m(o).test(r)&&(i=(i=r.match(m(o)).join("").match((u=o,RegExp("\\-{0,1}((\\"+u+")|([0-9]{1,}\\"+u+"?))&?[0-9]{0,"+v+"}","g")))||[""])[0],i=t?i.replace(o,"."):i),i||null}function O(){return void 0===s?n.NUMBER_FORMATS.CURRENCY_SYM:s}i.$observe("ngCurrency",function(e){($="false"!==e)?g():(a.$viewValue=a.$$rawModelValue,a.$render())}),i.$observe("hardCap",function(e){f="true"===e,b()}),i.$observe("min",function(e){l=e?Number(e):void 0,b()}),i.$observe("max",function(e){d=e?Number(e):void 0,b()}),i.$observe("currencySymbol",function(e){s=e,g()}),i.$observe("required",function(e){p=e,b()}),i.$observe("fraction",function(e){v=e||2,g(),b()}),r(function(){u.$emit("currencyRedraw")}),a.$parsers.push(function(e){return $&&-1===[void 0,null,""].indexOf(e)?(e=x(e),e=y(Number(e))):e}),a.$formatters.push(function(n){return $&&-1===[void 0,null,""].indexOf(n)?e("currency")(n,O(),v):n}),a.$validators.min=function(e){return!(p||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!$||-1!==[void 0,null].indexOf(l)||isNaN(l)||e>=l)},a.$validators.max=function(e){return!(p||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!$||-1!==[void 0,null].indexOf(d)||isNaN(d)||e<=d)},a.$validators.fraction=function(e){return!$||!e||!isNaN(e)},u.$on("currencyRedraw",function(){b(),g()}),o.bind("focus",function(){if($){var e=x(a.$viewValue,!1);a.$viewValue!==e&&(a.$viewValue=e,a.$render(),o.triggerHandler("focus"))}}),o.bind("blur",g)}}}Object.defineProperty(n,"__esModule",{value:!0}),n.default=t,t.$inject=["$filter","$locale","$timeout","ngCurrencySettings"]},function(e,n,r){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=function(){function e(e,n){for(var r=0;r=0;t--)e=a.$parsers[t](e)}else e=a.$$rawModelValue;for(var o=a.$formatters.length-1;o>=0;o--)e=a.$formatters[o](e);a.$viewValue=e,a.$render()}}function b(){if(a.$validate(),$){var e=y(a.$$rawModelValue);e!==a.$$rawModelValue&&(a.$setViewValue(e.toFixed(v)),a.$commitViewValue(),g())}}function y(e){return f&&(void 0!==d&&e>d?e=d:void 0!==l&&e1&&void 0!==arguments[1])||arguments[1];r=String(r);var o,u=n.NUMBER_FORMATS.DECIMAL_SEP,i=null,a=e("currency")("-1",O(),v),c=RegExp("[0-9."+u+n.NUMBER_FORMATS.GROUP_SEP+"]+");return a.replace(c.exec(a),"")===r.replace(c.exec(r),"")&&(r="-"+c.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),m(u).test(r)&&(i=(i=r.match(m(u)).join("").match((o=u,RegExp("\\-{0,1}((\\"+o+")|([0-9]{1,}\\"+o+"?))&?[0-9]{0,"+v+"}","g")))||[""])[0],i=t?i.replace(u,"."):i),i||null}function O(){return void 0===s?n.NUMBER_FORMATS.CURRENCY_SYM:s}i.$observe("ngCurrency",function(e){($="false"!==e)?g():(a.$viewValue=a.$$rawModelValue,a.$render())}),i.$observe("hardCap",function(e){f="true"===e,b()}),i.$observe("min",function(e){l=e?Number(e):void 0,b()}),i.$observe("max",function(e){d=e?Number(e):void 0,b()}),i.$observe("currencySymbol",function(e){s=e,g()}),i.$observe("required",function(e){p=e,b()}),i.$observe("fraction",function(e){v=e||2,g(),b()}),r(function(){o.$emit("currencyRedraw")}),a.$parsers.push(function(e){return $&&-1===[void 0,null,""].indexOf(e)?(e=x(e),e=y(Number(e))):e}),a.$formatters.push(function(n){return $&&-1===[void 0,null,""].indexOf(n)?e("currency")(n,O(),v):n}),a.$validators.min=function(e){return!(p||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!$||-1!==[void 0,null].indexOf(l)||isNaN(l)||e>=l)},a.$validators.max=function(e){return!(p||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!$||-1!==[void 0,null].indexOf(d)||isNaN(d)||e<=d)},a.$validators.fraction=function(e){return!$||!e||!isNaN(e)},o.$on("currencyRedraw",function(){b(),g()}),u.bind("focus",function(){if($){var e=x(a.$viewValue,!1);a.$viewValue!==e&&(a.$viewValue=e,a.$render(),u.triggerHandler("focus"))}}),u.bind("blur",g)}}}a.$inject=["$filter","$locale","$timeout","ngCurrencySettings"];var c=o.a.module("ng-currency",[]);c.provider("ngCurrencySettings",i),c.directive("ngCurrency",a);n.default=c.name}])}); //# sourceMappingURL=ng-currency.min.js.map \ No newline at end of file diff --git a/dist/ng-currency.min.js.map b/dist/ng-currency.min.js.map index 29d8924..86664a2 100644 --- a/dist/ng-currency.min.js.map +++ b/dist/ng-currency.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://ng-currency/webpack/universalModuleDefinition","webpack://ng-currency/webpack/bootstrap","webpack://ng-currency/./ng-currency.directive.js","webpack://ng-currency/./ng-currency-settings.provider.js","webpack://ng-currency/external \"angular\"","webpack://ng-currency/./ng-currency.module.js"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__2__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","ngCurrency","$filter","$locale","$timeout","ngCurrencySettings","link","scope","element","attrs","controller","_ngCurrencySettings$d","defaults","hardCap","min","max","currencySymbol","fraction","ngRequired","required","active","reformat","updateOn","debounce","$options","getOption","$viewValue","$parsers","length","$$rawModelValue","$formatters","$render","revalidate","$validate","keepInRange","$setViewValue","toFixed","$commitViewValue","undefined","decimalRex","dChar","RegExp","clearValue","replaceSeparator","arguments","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","replace","exec","test","match","join","CURRENCY_SYM","$observe","Number","$emit","push","indexOf","$validators","isNaN","$on","bind","triggerHandler","$inject","_classCallCheck","this","_defaults","provider","_angular2","default","_ngCurrencySettingsProvider2","directive","_ngCurrencyDirective2"],"mappings":"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","file":"ng-currency.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://ng-currency/webpack/universalModuleDefinition","webpack://ng-currency/webpack/bootstrap","webpack://ng-currency/external \"angular\"","webpack://ng-currency/./ng-currency-settings.provider.js","webpack://ng-currency/./ng-currency.directive.js","webpack://ng-currency/./ng-currency.module.js"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ngCurrencySettings","_classCallCheck","this","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","provider","defaults","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","controller","_ngCurrencySettings$d","ngRequired","required","active","reformat","updateOn","debounce","$options","getOption","$viewValue","$parsers","length","$$rawModelValue","$formatters","$render","revalidate","$validate","keepInRange","$setViewValue","toFixed","$commitViewValue","decimalRex","dChar","RegExp","clearValue","replaceSeparator","arguments","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","replace","exec","test","match","join","CURRENCY_SYM","$observe","Number","$emit","push","indexOf","$validators","isNaN","$on","triggerHandler","$inject","angular","directive"],"mappings":"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","file":"ng-currency.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index e8820db..3d901e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "1.2.5", + "version": "1.2.6", "main": "dist/ng-currency.min.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "https://github.com/salte-io/ng-currency", From 5ebc5da3f4230a619615dbc19f7da40a92f2d48a Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Fri, 8 Feb 2019 19:29:18 -0600 Subject: [PATCH 086/159] chore: added licensing info to build code * updated license * fixed eslint errors in webpack configs --- .eslintrc.yml | 1 + LICENSE | 2 +- package.json | 1 + webpack.config.js | 19 ++++++++++++++++++- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 9be18f4..a7897e1 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,6 +1,7 @@ extends: eslint:recommended env: browser: true + node: true parserOptions: sourceType: module rules: diff --git a/LICENSE b/LICENSE index 79a7163..faed9b0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2012 - 2016 Luis Aguirre +Copyright (c) 2019 Salte. https://www.salte.io Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/package.json b/package.json index 3d901e8..2474065 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "chai": "^4.2.0", "coveralls": "^3.0.2", "cz-conventional-changelog": "^2.0.0", + "deindent": "^0.1.0", "eslint": "^5.0.0", "eslint-plugin-mocha": "^5.2.1", "html-loader": "^0.5.0", diff --git a/webpack.config.js b/webpack.config.js index d862356..c3fe72e 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,4 +1,7 @@ const path = require('path'); +const webpack = require('webpack'); +const deindent = require('deindent'); +const packageJson = require('./package.json'); const { argv: args } = require('yargs'); const isProd = args.mode === 'production'; @@ -29,5 +32,19 @@ module.exports = { }, optimization: { minimize: isProd ? true : false - } + }, + plugins: [ + new webpack.BannerPlugin({ + banner: deindent(` + /** + * ${packageJson.name} JavaScript Library v${packageJson.version} + * + * @license MIT (${packageJson.homepage}/blob/master/LICENSE) + * + * Made with ♥ by ${packageJson.contributors.join(', ')} + */ + `).trim(), + raw: true + }) + ] }; From d1f54ba7aeb942f3d61a17b367a169e0b6b34839 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Fri, 8 Feb 2019 20:27:56 -0600 Subject: [PATCH 087/159] fix: updated readme (#204) --- README.md | 101 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 62 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 82b15d5..147f19a 100644 --- a/README.md +++ b/README.md @@ -9,30 +9,22 @@ [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) [![Greenkeeper badge](https://badges.greenkeeper.io/salte-io/ng-currency.svg)](https://greenkeeper.io) -ngCurrency is a directive that enables seamless use of currency inputs. +## Install -Main features: - -* The model is consistent as it values is a float (even if there are alpha caracters in the middle) or NaN in the empty case. -* Input value is always filtered with locale currency when load and on blur. -* You may write the amount using locale decimal or use dot (.) as default. -* The only required dependency is [angular](https://github.com/angular/angular.js)! -* Min and Max validators like input[number]. -* Enable/disable formatter using ng-currency={{var}} -* Optional fraction places value. The default remains 2 decimal places. -* You can redraw all directives broadcasting "currencyRedraw" event. -* Enable/Disable show zeroes using display-zeroes 'true' or 'false' -* Not isolated scope. It plays well with others directives! +You can install this package either with `npm` or with `bower`. ## npm ```sh $ npm install ng-currency ``` + Then add a ` ``` + Or `require('ng-currency')` from your code. ## bower @@ -40,7 +32,9 @@ Or `require('ng-currency')` from your code. ```sh $ bower install ng-currency ``` + Then add a ` ``` @@ -49,75 +43,104 @@ Then add a ` - +```js +import angular from 'angular'; +import ngCurrency from 'ng-currency'; + +angular.module('my-app', [ + ngCurrency // 'ng-currency' +]); ``` -+ Inject the `ngCurrency` module into your app: +**inside your angular app** -```javascript -angular.module('myApp', ['ng-currency']); +```html + ``` -+ In your input tag +## ES5 Usage + +**index.html** ```html - + + + + + + + + + + + ``` ## Bindings -### Min/Max +### `min` / `max` + +**Default:** `undefined` -* Default: undefined -* Description: Specifies the range the ngModel value can be within for validation and hard-cap +**Description:** Specifies the range the `ng-model` value can be within for validation and `hard-cap` ```html ``` -+ If you want to be able to dynamically enable/disable validations from a controller you can use the following +* If you want to be able to dynamically enable/disable validations from a controller you can use the following ```html ``` -### Currency Symbol +### `currency-symbol` -* Default: Locale Currency Symbol -* Description: Prefixes the formatted currency value with the currency symbol +**Default:** Locale Currency Symbol + +**Description:** Prefixes the formatted currency value with the currency symbol. ```html ``` -### Active +### Active (`ng-currency`) + +**Default:** `true` -* Default: true -* Description: Dynamically disable/enable ng-currency +**Description:** Dynamically disable / enable `ng-currency`. ```html ``` -### Fraction +### `fraction` -* Default: 2 -* Description: Determines the number of decimal places +**Default:** `2` + +**Description:** Determines the number of decimal places. ```html ``` -### Hard Cap +### `hard-cap` + +**Default:** `false` -* Default: false -* Description: Forces the ngModel value to stay within the min/max range +**Description:** Forces the `ng-model` value to stay within the `min` / `max` range. ```html From 8f87bd34913b4e9350fc2cf26d0530a7af171c77 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 9 Feb 2019 02:30:25 +0000 Subject: [PATCH 088/159] chore(release): 1.2.7 [skip ci] --- dist/ng-currency.js | 7 +++++++ dist/ng-currency.js.map | 2 +- dist/ng-currency.min.js | 7 +++++++ dist/ng-currency.min.js.map | 2 +- package.json | 2 +- 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/dist/ng-currency.js b/dist/ng-currency.js index 229bca1..c226c48 100644 --- a/dist/ng-currency.js +++ b/dist/ng-currency.js @@ -1,3 +1,10 @@ +/** + * ng-currency JavaScript Library v1.2.7 + * + * @license MIT (https://github.com/salte-io/ng-currency/blob/master/LICENSE) + * + * Made with ♥ by Nick Woodward , Luis Aguirre + */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("angular")); diff --git a/dist/ng-currency.js.map b/dist/ng-currency.js.map index 030a775..5a2f628 100644 --- a/dist/ng-currency.js.map +++ b/dist/ng-currency.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://ng-currency/webpack/universalModuleDefinition","webpack://ng-currency/webpack/bootstrap","webpack://ng-currency/./ng-currency-settings.provider.js","webpack://ng-currency/./ng-currency.directive.js","webpack://ng-currency/./ng-currency.module.js","webpack://ng-currency/external \"angular\""],"names":["ngCurrencySettings","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","provider","defaults","ngCurrency","$filter","$locale","$timeout","require","link","scope","element","attrs","controller","ngRequired","required","active","$observe","value","reformat","$viewValue","$$rawModelValue","$render","revalidate","Number","$emit","$parsers","push","indexOf","clearValue","keepInRange","$formatters","getCurrencySymbol","$validators","isNaN","updateOn","debounce","$options","getOption","i","length","$validate","$setViewValue","toFixed","$commitViewValue","$on","bind","triggerHandler","decimalRex","dChar","RegExp","clearRex","replaceSeparator","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","CURRENCY_SYM","$inject","module","angular","directive","name"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE_angular__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n","module.exports = __WEBPACK_EXTERNAL_MODULE_angular__;"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://ng-currency/webpack/universalModuleDefinition","webpack://ng-currency/webpack/bootstrap","webpack://ng-currency/./ng-currency-settings.provider.js","webpack://ng-currency/./ng-currency.directive.js","webpack://ng-currency/./ng-currency.module.js","webpack://ng-currency/external \"angular\""],"names":["ngCurrencySettings","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","provider","defaults","ngCurrency","$filter","$locale","$timeout","require","link","scope","element","attrs","controller","ngRequired","required","active","$observe","value","reformat","$viewValue","$$rawModelValue","$render","revalidate","Number","$emit","$parsers","push","indexOf","clearValue","keepInRange","$formatters","getCurrencySymbol","$validators","isNaN","updateOn","debounce","$options","getOption","i","length","$validate","$setViewValue","toFixed","$commitViewValue","$on","bind","triggerHandler","decimalRex","dChar","RegExp","clearRex","replaceSeparator","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","CURRENCY_SYM","$inject","module","angular","directive","name"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;IClFqBA,kB;;;AACjB,gCAAc;AAAA;;AACZ,SAAKC,SAAL,GAAiB;AACfC,cAAQ,EAAE,CADK;AAEfC,aAAO,EAAE,KAFM;AAGfC,SAAG,EAAEC,SAHU;AAIfC,SAAG,EAAED,SAJU;AAKfE,oBAAc,EAAEF;AALD,KAAjB;AAOD;AAED;;;;;;;2BAWO;AACL,UAAMG,QAAQ,GAAG,IAAjB;AACA,aAAO;AACL;;;AAGA,YAAIC,QAAJ,GAAe;AACb,iBAAOD,QAAQ,CAACC,QAAhB;AACD;;AANI,OAAP;AAQD;;;wBAlBc;AACb,aAAO,KAAKR,SAAZ;AACD,K;sBAEYQ,Q,EAAU;AACrB,WAAKR,SAAL,GAAiBQ,QAAjB;AACD;;;;;;;;;;;;;;;;;;ACpBL;AAAA;AAAe,SAASC,UAAT,CAAoBC,OAApB,EAA6BC,OAA7B,EAAsCC,QAAtC,EAAgDb,kBAAhD,EAAoE;AACjF,SAAO;AACLc,WAAO,EAAE,SADJ;AAELC,QAAI,EAAE,cAACC,KAAD,EAAQC,OAAR,EAAiBC,KAAjB,EAAwBC,UAAxB,EAAuC;AAAA,kCACWnB,kBAAkB,CAACS,QAD9B;AAAA,UACrCN,OADqC,yBACrCA,OADqC;AAAA,UAC5BC,GAD4B,yBAC5BA,GAD4B;AAAA,UACvBE,GADuB,yBACvBA,GADuB;AAAA,UAClBC,cADkB,yBAClBA,cADkB;AAAA,UACFL,QADE,yBACFA,QADE;AAE3C,UAAIkB,UAAU,GAAGF,KAAK,CAACG,QAAvB;AACA,UAAIC,MAAM,GAAG,IAAb;AAEAJ,WAAK,CAACK,QAAN,CAAe,YAAf,EAA6B,UAACC,KAAD,EAAW;AACtCF,cAAM,GAAIE,KAAK,KAAK,OAApB;;AACA,YAAIF,MAAJ,EAAY;AACVG,kBAAQ;AACT,SAFD,MAEO;AACLN,oBAAU,CAACO,UAAX,GAAwBP,UAAU,CAACQ,eAAnC;AACAR,oBAAU,CAACS,OAAX;AACD;AACF,OARD;AASAV,WAAK,CAACK,QAAN,CAAe,SAAf,EAA0B,UAACC,KAAD,EAAW;AACnCrB,eAAO,GAAIqB,KAAK,KAAK,MAArB;AACAK,kBAAU;AACX,OAHD;AAIAX,WAAK,CAACK,QAAN,CAAe,KAAf,EAAsB,UAACC,KAAD,EAAW;AAC/BpB,WAAG,GAAGoB,KAAK,GAAGM,MAAM,CAACN,KAAD,CAAT,GAAmBnB,SAA9B;AACAwB,kBAAU;AACX,OAHD;AAIAX,WAAK,CAACK,QAAN,CAAe,KAAf,EAAsB,UAACC,KAAD,EAAW;AAC/BlB,WAAG,GAAGkB,KAAK,GAAGM,MAAM,CAACN,KAAD,CAAT,GAAmBnB,SAA9B;AACAwB,kBAAU;AACX,OAHD;AAIAX,WAAK,CAACK,QAAN,CAAe,gBAAf,EAAiC,UAACC,KAAD,EAAW;AAC1CjB,sBAAc,GAAGiB,KAAjB;AACAC,gBAAQ;AACT,OAHD;AAIAP,WAAK,CAACK,QAAN,CAAe,UAAf,EAA2B,UAACC,KAAD,EAAW;AACpCJ,kBAAU,GAAGI,KAAb;AACAK,kBAAU;AACX,OAHD;AAIAX,WAAK,CAACK,QAAN,CAAe,UAAf,EAA2B,UAACC,KAAD,EAAW;AACpCtB,gBAAQ,GAAGsB,KAAK,IAAI,CAApB;AACAC,gBAAQ;AACRI,kBAAU;AACX,OAJD,EAlC2C,CAwC3C;;AACAhB,cAAQ,CAAC,YAAM;AACbG,aAAK,CAACe,KAAN,CAAY,gBAAZ;AACD,OAFO,CAAR;AAIAZ,gBAAU,CAACa,QAAX,CAAoBC,IAApB,CAAyB,UAACT,KAAD,EAAW;AAClC,YAAIF,MAAM,IAAI,CAACjB,SAAD,EAAY,IAAZ,EAAkB,EAAlB,EAAsB6B,OAAtB,CAA8BV,KAA9B,MAAyC,CAAC,CAAxD,EAA2D;AACzDA,eAAK,GAAGW,UAAU,CAACX,KAAD,CAAlB;AACAA,eAAK,GAAGY,WAAW,CAACN,MAAM,CAACN,KAAD,CAAP,CAAnB;AACA,iBAAOA,KAAP;AACD;;AACD,eAAOA,KAAP;AACD,OAPD;AASAL,gBAAU,CAACkB,WAAX,CAAuBJ,IAAvB,CAA4B,UAACT,KAAD,EAAW;AACrC,YAAIF,MAAM,IAAI,CAACjB,SAAD,EAAY,IAAZ,EAAkB,EAAlB,EAAsB6B,OAAtB,CAA8BV,KAA9B,MAAyC,CAAC,CAAxD,EAA2D;AACzD,iBAAOb,OAAO,CAAC,UAAD,CAAP,CAAoBa,KAApB,EAA2Bc,iBAAiB,EAA5C,EAAgDpC,QAAhD,CAAP;AACD;;AACD,eAAOsB,KAAP;AACD,OALD;;AAOAL,gBAAU,CAACoB,WAAX,CAAuBnC,GAAvB,GAA6B,UAACoB,KAAD,EAAW;AACtC,YAAI,CAACJ,UAAD,KAAgB,CAACf,SAAD,EAAY,IAAZ,EAAkB,EAAlB,EAAsB6B,OAAtB,CAA8BV,KAA9B,MAAyC,CAAC,CAA1C,IAA+CgB,KAAK,CAAChB,KAAD,CAApE,CAAJ,EAAkF;AAChF,iBAAO,IAAP;AACD;;AACD,eAAO,CAACF,MAAD,IACL,CAACjB,SAAD,EAAY,IAAZ,EAAkB6B,OAAlB,CAA0B9B,GAA1B,MAAmC,CAAC,CAD/B,IACoCoC,KAAK,CAACpC,GAAD,CADzC,IAELoB,KAAK,IAAIpB,GAFX;AAGD,OAPD;;AASAe,gBAAU,CAACoB,WAAX,CAAuBjC,GAAvB,GAA6B,UAACkB,KAAD,EAAW;AACtC,YAAI,CAACJ,UAAD,KAAgB,CAACf,SAAD,EAAY,IAAZ,EAAkB,EAAlB,EAAsB6B,OAAtB,CAA8BV,KAA9B,MAAyC,CAAC,CAA1C,IAA+CgB,KAAK,CAAChB,KAAD,CAApE,CAAJ,EAAkF;AAChF,iBAAO,IAAP;AACD;;AACD,eAAO,CAACF,MAAD,IACL,CAACjB,SAAD,EAAY,IAAZ,EAAkB6B,OAAlB,CAA0B5B,GAA1B,MAAmC,CAAC,CAD/B,IACoCkC,KAAK,CAAClC,GAAD,CADzC,IAELkB,KAAK,IAAIlB,GAFX;AAGD,OAPD;;AASAa,gBAAU,CAACoB,WAAX,CAAuBrC,QAAvB,GAAkC,UAACsB,KAAD,EAAW;AAC3C,eAAO,CAACF,MAAD,IAAW,CAACE,KAAZ,IAAqB,CAACgB,KAAK,CAAChB,KAAD,CAAlC;AACD,OAFD;;AAIA,eAASC,QAAT,GAAoB;AAClB,YAAIH,MAAJ,EAAY;AACV,cAAIE,KAAJ;AACA,cAAIiB,QAAJ,EAAcC,QAAd;;AACA,cAAIvB,UAAU,CAACwB,QAAf,EAAyB;AACvB;AACA;AACA;AACA,gBAAIxB,UAAU,CAACwB,QAAX,CAAoBC,SAAxB,EAAmC;AACjCH,sBAAQ,GAAGtB,UAAU,CAACwB,QAAX,CAAoBC,SAApB,CAA8B,UAA9B,CAAX;AACAF,sBAAQ,GAAGvB,UAAU,CAACwB,QAAX,CAAoBC,SAApB,CAA8B,UAA9B,CAAX;AACD,aAHD,MAGO;AACLH,sBAAQ,GAAGtB,UAAU,CAACwB,QAAX,CAAoBF,QAA/B;AACAC,sBAAQ,GAAGvB,UAAU,CAACwB,QAAX,CAAoBD,QAA/B;AACD;AACF;;AACD,cAAID,QAAQ,KAAK,MAAb,IAAuBC,QAA3B,EAAqC;AACnClB,iBAAK,GAAGL,UAAU,CAACO,UAAnB;;AACA,iBAAK,IAAImB,CAAC,GAAG1B,UAAU,CAACa,QAAX,CAAoBc,MAApB,GAA6B,CAA1C,EAA6CD,CAAC,IAAI,CAAlD,EAAqDA,CAAC,EAAtD,EAA0D;AACxDrB,mBAAK,GAAGL,UAAU,CAACa,QAAX,CAAoBa,CAApB,EAAuBrB,KAAvB,CAAR;AACD;AACF,WALD,MAKO;AACLA,iBAAK,GAAGL,UAAU,CAACQ,eAAnB;AACD;;AACD,eAAK,IAAIkB,EAAC,GAAG1B,UAAU,CAACkB,WAAX,CAAuBS,MAAvB,GAAgC,CAA7C,EAAgDD,EAAC,IAAI,CAArD,EAAwDA,EAAC,EAAzD,EAA6D;AAC3DrB,iBAAK,GAAGL,UAAU,CAACkB,WAAX,CAAuBQ,EAAvB,EAA0BrB,KAA1B,CAAR;AACD;;AACDL,oBAAU,CAACO,UAAX,GAAwBF,KAAxB;AACAL,oBAAU,CAACS,OAAX;AACD;AACF;;AAED,eAASC,UAAT,GAAsB;AACpBV,kBAAU,CAAC4B,SAAX;;AACA,YAAIzB,MAAJ,EAAY;AACV,cAAME,KAAK,GAAGY,WAAW,CAACjB,UAAU,CAACQ,eAAZ,CAAzB;;AACA,cAAIH,KAAK,KAAKL,UAAU,CAACQ,eAAzB,EAA0C;AACxCR,sBAAU,CAAC6B,aAAX,CAAyBxB,KAAK,CAACyB,OAAN,CAAc/C,QAAd,CAAzB;AACAiB,sBAAU,CAAC+B,gBAAX;AACAzB,oBAAQ;AACT;AACF;AACF;;AAED,eAASW,WAAT,CAAqBZ,KAArB,EAA4B;AAC1B,YAAIrB,OAAJ,EAAa;AACX,cAAIG,GAAG,KAAKD,SAAR,IAAqBmB,KAAK,GAAGlB,GAAjC,EAAsC;AACpCkB,iBAAK,GAAGlB,GAAR;AACD,WAFD,MAEO,IAAIF,GAAG,KAAKC,SAAR,IAAqBmB,KAAK,GAAGpB,GAAjC,EAAsC;AAC3CoB,iBAAK,GAAGpB,GAAR;AACD;AACF;;AACD,eAAOoB,KAAP;AACD;;AAEDR,WAAK,CAACmC,GAAN,CAAU,gBAAV,EAA4B,YAAM;AAChCtB,kBAAU;AACVJ,gBAAQ;AACT,OAHD;AAKAR,aAAO,CAACmC,IAAR,CAAa,OAAb,EAAsB,YAAM;AAC1B,YAAI9B,MAAJ,EAAY;AACV,cAAME,KAAK,GAAGW,UAAU,CAAChB,UAAU,CAACO,UAAZ,EAAwB,KAAxB,CAAxB;;AAEA,cAAIP,UAAU,CAACO,UAAX,KAA0BF,KAA9B,EAAqC;AACnCL,sBAAU,CAACO,UAAX,GAAwBF,KAAxB;AACAL,sBAAU,CAACS,OAAX;AACAX,mBAAO,CAACoC,cAAR,CAAuB,OAAvB;AACD;AACF;AACF,OAVD;AAYApC,aAAO,CAACmC,IAAR,CAAa,MAAb,EAAqB3B,QAArB,EA3J2C,CA6J3C;;AAEA,eAAS6B,UAAT,CAAoBC,KAApB,EAA2B;AACzB,eAAOC,MAAM,CAAC,eAAeD,KAAhB,EAAuB,GAAvB,CAAb;AACD;;AAED,eAASE,QAAT,CAAkBF,KAAlB,EAAyB;AACvB,eAAOC,MAAM,CAAC,iBAAiBD,KAAjB,GAAyB,gBAAzB,GAA4CA,KAA5C,GAAoD,eAApD,GAAsErD,QAAtE,GAAiF,GAAlF,EAAuF,GAAvF,CAAb;AACD;;AAED,eAASiC,UAAT,CAAoBX,KAApB,EAAoD;AAAA,YAAzBkC,gBAAyB,uEAAN,IAAM;AAClDlC,aAAK,GAAGmC,MAAM,CAACnC,KAAD,CAAd;AACA,YAAMoC,gBAAgB,GAAGhD,OAAO,CAACiD,cAAR,CAAuBC,WAAhD;AACA,YAAIC,OAAO,GAAG,IAAd,CAHkD,CAKlD;;AACA,YAAMC,SAAS,GAAGrD,OAAO,CAAC,UAAD,CAAP,CAAoB,IAApB,EAA0B2B,iBAAiB,EAA3C,EAA+CpC,QAA/C,CAAlB;AACA,YAAM+D,UAAU,GAAGT,MAAM,CAAC,UAAUI,gBAAV,GAA6BhD,OAAO,CAACiD,cAAR,CAAuBK,SAApD,GAAgE,IAAjE,CAAzB;AACA,YAAMC,aAAa,GAAGH,SAAS,CAACI,OAAV,CAAkBH,UAAU,CAACI,IAAX,CAAgBL,SAAhB,CAAlB,EAA8C,EAA9C,CAAtB;AACA,YAAMM,eAAe,GAAG9C,KAAK,CAAC4C,OAAN,CAAcH,UAAU,CAACI,IAAX,CAAgB7C,KAAhB,CAAd,EAAsC,EAAtC,CAAxB,CATkD,CAWlD;;AACA,YAAI2C,aAAa,KAAKG,eAAtB,EAAuC;AACrC9C,eAAK,GAAG,MAAMyC,UAAU,CAACI,IAAX,CAAgB7C,KAAhB,CAAd;AACD;;AAED,YAAIgC,MAAM,CAAC,WAAD,EAAc,GAAd,CAAN,CAAyBe,IAAzB,CAA8B/C,KAA9B,CAAJ,EAA0C;AACxCA,eAAK,GAAG,IAAR;AACD;;AAED,YAAI8B,UAAU,CAACM,gBAAD,CAAV,CAA6BW,IAA7B,CAAkC/C,KAAlC,CAAJ,EAA8C;AAC5CuC,iBAAO,GAAGvC,KAAK,CAACgD,KAAN,CAAYlB,UAAU,CAACM,gBAAD,CAAtB,EACPa,IADO,CACF,EADE,EACED,KADF,CACQf,QAAQ,CAACG,gBAAD,CADhB,KACuC,CAAC,EAAD,CADjD;AAGAG,iBAAO,GAAGA,OAAO,CAAC,CAAD,CAAjB;AACAA,iBAAO,GAAGL,gBAAgB,GAAGK,OAAO,CAACK,OAAR,CAAgBR,gBAAhB,EAAkC,GAAlC,CAAH,GAA4CG,OAAtE;AACD;;AAED,eAAOA,OAAO,IAAI,IAAlB;AACD;;AAED,eAASzB,iBAAT,GAA6B;AAC3B,eAAO/B,cAAc,KAAKF,SAAnB,GAA+BO,OAAO,CAACiD,cAAR,CAAuBa,YAAtD,GAAqEnE,cAA5E;AACD;AACF;AA3MI,GAAP;AA6MD;AACDG,UAAU,CAACiE,OAAX,GAAqB,CAAC,SAAD,EAAY,SAAZ,EAAuB,UAAvB,EAAmC,oBAAnC,CAArB,C;;;;;;;;;;;;AC/MA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA,IAAMC,MAAM,GAAGC,8CAAO,CAACD,MAAR,CAAe,aAAf,EAA8B,EAA9B,CAAf;AAEAA,MAAM,CAACpE,QAAP,CAAgB,oBAAhB,EAAsCR,yEAAtC;AACA4E,MAAM,CAACE,SAAP,CAAiB,YAAjB,EAA+BpE,iEAA/B;AAEekE,qEAAM,CAACG,IAAtB,E;;;;;;;;;;;;;;;;;;;;;;;ACTA,qD","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE_angular__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n","module.exports = __WEBPACK_EXTERNAL_MODULE_angular__;"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/ng-currency.min.js b/dist/ng-currency.min.js index 5081ee9..8aed6e6 100644 --- a/dist/ng-currency.min.js +++ b/dist/ng-currency.min.js @@ -1,2 +1,9 @@ +/** + * ng-currency JavaScript Library v1.2.7 + * + * @license MIT (https://github.com/salte-io/ng-currency/blob/master/LICENSE) + * + * Made with ♥ by Nick Woodward , Luis Aguirre + */ !function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define("ng-currency",["angular"],n):"object"==typeof exports?exports["ng-currency"]=n(require("angular")):e["ng-currency"]=n(e.angular)}(window,function(e){return function(e){var n={};function r(t){if(n[t])return n[t].exports;var o=n[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,n){if(1&n&&(e=r(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(r.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)r.d(t,o,function(n){return e[n]}.bind(null,o));return t},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.p="",r(r.s=1)}([function(n,r){n.exports=e},function(e,n,r){e.exports=r(2)},function(e,n,r){"use strict";r.r(n);var t=r(0),o=r.n(t);function u(e,n){for(var r=0;r=0;t--)e=a.$parsers[t](e)}else e=a.$$rawModelValue;for(var o=a.$formatters.length-1;o>=0;o--)e=a.$formatters[o](e);a.$viewValue=e,a.$render()}}function b(){if(a.$validate(),$){var e=y(a.$$rawModelValue);e!==a.$$rawModelValue&&(a.$setViewValue(e.toFixed(v)),a.$commitViewValue(),g())}}function y(e){return f&&(void 0!==d&&e>d?e=d:void 0!==l&&e1&&void 0!==arguments[1])||arguments[1];r=String(r);var o,u=n.NUMBER_FORMATS.DECIMAL_SEP,i=null,a=e("currency")("-1",O(),v),c=RegExp("[0-9."+u+n.NUMBER_FORMATS.GROUP_SEP+"]+");return a.replace(c.exec(a),"")===r.replace(c.exec(r),"")&&(r="-"+c.exec(r)),RegExp("^-[\\s]*$","g").test(r)&&(r="-0"),m(u).test(r)&&(i=(i=r.match(m(u)).join("").match((o=u,RegExp("\\-{0,1}((\\"+o+")|([0-9]{1,}\\"+o+"?))&?[0-9]{0,"+v+"}","g")))||[""])[0],i=t?i.replace(u,"."):i),i||null}function O(){return void 0===s?n.NUMBER_FORMATS.CURRENCY_SYM:s}i.$observe("ngCurrency",function(e){($="false"!==e)?g():(a.$viewValue=a.$$rawModelValue,a.$render())}),i.$observe("hardCap",function(e){f="true"===e,b()}),i.$observe("min",function(e){l=e?Number(e):void 0,b()}),i.$observe("max",function(e){d=e?Number(e):void 0,b()}),i.$observe("currencySymbol",function(e){s=e,g()}),i.$observe("required",function(e){p=e,b()}),i.$observe("fraction",function(e){v=e||2,g(),b()}),r(function(){o.$emit("currencyRedraw")}),a.$parsers.push(function(e){return $&&-1===[void 0,null,""].indexOf(e)?(e=x(e),e=y(Number(e))):e}),a.$formatters.push(function(n){return $&&-1===[void 0,null,""].indexOf(n)?e("currency")(n,O(),v):n}),a.$validators.min=function(e){return!(p||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!$||-1!==[void 0,null].indexOf(l)||isNaN(l)||e>=l)},a.$validators.max=function(e){return!(p||-1===[void 0,null,""].indexOf(e)&&!isNaN(e))||(!$||-1!==[void 0,null].indexOf(d)||isNaN(d)||e<=d)},a.$validators.fraction=function(e){return!$||!e||!isNaN(e)},o.$on("currencyRedraw",function(){b(),g()}),u.bind("focus",function(){if($){var e=x(a.$viewValue,!1);a.$viewValue!==e&&(a.$viewValue=e,a.$render(),u.triggerHandler("focus"))}}),u.bind("blur",g)}}}a.$inject=["$filter","$locale","$timeout","ngCurrencySettings"];var c=o.a.module("ng-currency",[]);c.provider("ngCurrencySettings",i),c.directive("ngCurrency",a);n.default=c.name}])}); //# sourceMappingURL=ng-currency.min.js.map \ No newline at end of file diff --git a/dist/ng-currency.min.js.map b/dist/ng-currency.min.js.map index 86664a2..7c3e4e5 100644 --- a/dist/ng-currency.min.js.map +++ b/dist/ng-currency.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://ng-currency/webpack/universalModuleDefinition","webpack://ng-currency/webpack/bootstrap","webpack://ng-currency/external \"angular\"","webpack://ng-currency/./ng-currency-settings.provider.js","webpack://ng-currency/./ng-currency.directive.js","webpack://ng-currency/./ng-currency.module.js"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ngCurrencySettings","_classCallCheck","this","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","provider","defaults","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","controller","_ngCurrencySettings$d","ngRequired","required","active","reformat","updateOn","debounce","$options","getOption","$viewValue","$parsers","length","$$rawModelValue","$formatters","$render","revalidate","$validate","keepInRange","$setViewValue","toFixed","$commitViewValue","decimalRex","dChar","RegExp","clearValue","replaceSeparator","arguments","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","replace","exec","test","match","join","CURRENCY_SYM","$observe","Number","$emit","push","indexOf","$validators","isNaN","$on","triggerHandler","$inject","angular","directive"],"mappings":"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","file":"ng-currency.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://ng-currency/webpack/universalModuleDefinition","webpack://ng-currency/webpack/bootstrap","webpack://ng-currency/external \"angular\"","webpack://ng-currency/./ng-currency-settings.provider.js","webpack://ng-currency/./ng-currency.directive.js","webpack://ng-currency/./ng-currency.module.js"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ngCurrencySettings","_classCallCheck","this","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","provider","defaults","ngCurrency","$filter","$locale","$timeout","link","scope","element","attrs","controller","_ngCurrencySettings$d","ngRequired","required","active","reformat","updateOn","debounce","$options","getOption","$viewValue","$parsers","length","$$rawModelValue","$formatters","$render","revalidate","$validate","keepInRange","$setViewValue","toFixed","$commitViewValue","decimalRex","dChar","RegExp","clearValue","replaceSeparator","arguments","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","getCurrencySymbol","neg_regexp","GROUP_SEP","replace","exec","test","match","join","CURRENCY_SYM","$observe","Number","$emit","push","indexOf","$validators","isNaN","$on","triggerHandler","$inject","angular","directive"],"mappings":"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","file":"ng-currency.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","export default class ngCurrencySettings {\n constructor() {\n this._defaults = {\n fraction: 2,\n hardCap: false,\n min: undefined,\n max: undefined,\n currencySymbol: undefined\n };\n }\n\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return this._defaults;\n }\n\n set defaults(defaults) {\n this._defaults = defaults;\n }\n\n $get() {\n const provider = this;\n return {\n /**\n * The default property values for 'ng-currency'\n */\n get defaults() {\n return provider.defaults;\n }\n };\n }\n}\n","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n let ngRequired = attrs.required;\n let active = true;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n attrs.$observe('required', (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n // HACK(nick-woodward): Seriously angular?\n $timeout(() => {\n scope.$emit('currencyRedraw');\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn, debounce;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n if (controller.$options.getOption) {\n updateOn = controller.$options.getOption('updateOn');\n debounce = controller.$options.getOption('debounce');\n } else {\n updateOn = controller.$options.updateOn;\n debounce = controller.$options.debounce;\n }\n }\n if (updateOn === 'blur' || debounce) {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const value = clearValue(controller.$viewValue, false);\n\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value, replaceSeparator = true) {\n value = String(value);\n const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + decimalSeparator + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(decimalSeparator).test(value)) {\n cleared = value.match(decimalRex(decimalSeparator))\n .join('').match(clearRex(decimalSeparator)) || [''];\n\n cleared = cleared[0];\n cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n }\n\n return cleared || null;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 2474065..7efb627 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-currency", - "version": "1.2.6", + "version": "1.2.7", "main": "dist/ng-currency.min.js", "description": "Directive that works in conjunction with currency filter.", "homepage": "https://github.com/salte-io/ng-currency", From efbba9335cb61ec7d6bbff185f5b0e3fcfdc4b97 Mon Sep 17 00:00:00 2001 From: Nick Woodward Date: Sat, 9 Feb 2019 08:09:29 -0600 Subject: [PATCH 089/159] docs: fixed angular module reference for es5 import --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 147f19a..a0f46b9 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ angular.module('my-app', [