diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..2bfa6a4 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +tests/ diff --git a/index.js b/index.js index 797c041..49ffe1a 100644 --- a/index.js +++ b/index.js @@ -1,2 +1,2 @@ -'use strict';var _regenerator=require('babel-runtime/regenerator');var _regenerator2=_interopRequireDefault(_regenerator);var _asyncToGenerator2=require('babel-runtime/helpers/asyncToGenerator');var _asyncToGenerator3=_interopRequireDefault(_asyncToGenerator2);var _assign=require('babel-runtime/core-js/object/assign');var _assign2=_interopRequireDefault(_assign);var _stringify=require('babel-runtime/core-js/json/stringify');var _stringify2=_interopRequireDefault(_stringify);var _classCallCheck2=require('babel-runtime/helpers/classCallCheck');var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=require('babel-runtime/helpers/createClass');var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var CacheConf=require('cache-conf');var Conf=require('conf');var fs=require('fs-promise');var Fuse=require('fuse.js');var got=require('got');var moment=require('moment');var notifier=require('node-notifier');var os=require('os');var path=require('path');var semver=require('semver');var FileCache=require('./file-cache');var updater=require('./updater');var Hugo=function(){function Hugo(){(0,_classCallCheck3.default)(this,Hugo);this._fuseDefaults={keys:['title'],threshold:0.4};this._options={useTmpCache:true,checkUpdates:true,updateSource:'packal',updateInterval:moment.duration(1,'days'),updateNotification:true,updateItem:true};this._outputBuffer={};this.config=new Conf({cwd:this.workflowMeta.data});this.cache=new CacheConf({configName:'cache',cwd:this.workflowMeta.cache,version:this.workflowMeta.version});}(0,_createClass3.default)(Hugo,[{key:'addItem',value:function addItem(item){if(!this._outputBuffer.items){this._outputBuffer.items=[];}if(!item.title){if(this.alfredMeta.debug===true){console.error('Item skipped, missing title.');}return this;}if(item.arg&&typeof item.arg==='object'){var arg=item.arg.arg||'';var variables=item.arg.variables||{};item.arg=(0,_stringify2.default)({alfredworkflow:{arg:arg,variables:variables}});}this._outputBuffer.items.push(item);return this;}},{key:'addItems',value:function addItems(items){var _this=this;if(!this._outputBuffer.items){this._outputBuffer.items=items;return this;}items.map(function(item){_this.addItem(item);return item;});return this;}},{key:'addVariable',value:function addVariable(key,value){if(!this._outputBuffer.variables){this._outputBuffer.variables={};}this._outputBuffer.variables[key]=value;return this;}},{key:'addVariables',value:function addVariables(variables){if(!this._outputBuffer.variables){this._outputBuffer.variables=variables;return this;}this._outputBuffer.variables=(0,_assign2.default)({},this._outputBuffer.variables,variables);return this;}},{key:'action',value:function action(keyword,callback){var query=process.argv[2];if(query&&callback&&query===keyword){query=process.argv[3]||'';callback(query);}return this;}},{key:'cacheFile',value:function cacheFile(filePath,cacheName){return new FileCache(filePath,cacheName,this.workflowMeta.cache);}},{key:'checkUpdates',value:function(){var _ref=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(){var _this2=this;return _regenerator2.default.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(!(this._options.checkUpdates!==true||this._options.updateItem!==true&&this._options.updateNotification!==true)){_context.next=2;break;}return _context.abrupt('return');case 2:_context.next=4;return updater.checkUpdates(this._options.updateSource,this._options.updateInterval).catch(function(err){console.error(err);}).then(function(result){if(!result){return;}var current=_this2.workflowMeta.version;var latest=result.version;if(semver.gt(latest,current)){if(result.checkedOnline===true&&_this2._options.updateNotification===true){notifier.notify({title:_this2.workflowMeta.name||'Alfred',subtitle:`Workflow version ${latest} available. Current version: ${current}.`,sender:'com.runningwithcrayons.Alfred-3',timeout:10});}if(_this2._options.updateItem===true){_this2.addItem({title:`Workflow update available!`,subtitle:`Version ${latest} is available. Current version: ${current}.`,icon:_this2.workflowMeta.icon,arg:{arg:result.url,variables:{task:'wfUpdate'}}});}}});case 4:case'end':return _context.stop();}}},_callee,this);}));function checkUpdates(){return _ref.apply(this,arguments);}return checkUpdates;}()},{key:'clearCache',value:function(){var _ref2=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(){return _regenerator2.default.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:if(!this.workflowMeta.cache){_context2.next=2;break;}return _context2.abrupt('return',fs.emptyDir(this.workflowMeta.cache));case 2:case'end':return _context2.stop();}}},_callee2,this);}));function clearCache(){return _ref2.apply(this,arguments);}return clearCache;}()},{key:'clearCacheSync',value:function clearCacheSync(){if(this.workflowMeta.cache){return fs.emptyDirSync(this.workflowMeta.cache);}}},{key:'filterItems',value:function filterItems(query){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};options=(0,_assign2.default)({},this._fuseDefaults,options);if(query.length===0){return this;}var fuse=new Fuse(this._outputBuffer.items,options);this._outputBuffer.items=fuse.search(query)||[];return this;}},{key:'options',value:function options(_options){var cacheDirChanged='useTmpCache'in _options&&_options.useTmpCache!==this._options.useTmpCache;if(_options.updateInterval&&!moment.isDuration(_options.updateInterval)){if(_options.updateInterval<1){delete _options.updateInterval;}else{_options.updateInterval=moment.duration(_options.updateInterval,'seconds')||moment.duration(1,'days');}}this._options=(0,_assign2.default)({},this._options,_options);if(cacheDirChanged){this.cache=new CacheConf({configName:'cache',cwd:this.workflowMeta.cache,version:this.workflowMeta.version});}return this;}},{key:'matches',value:function matches(candidates,query){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};options=(0,_assign2.default)({},this._fuseDefaults,options);if(query.length===0){return candidates;}var fuse=new Fuse(candidates,options);return fuse.search(query)||[];}},{key:'rerun',value:function rerun(value){value=parseFloat(value);if(value&&value>0.1&&value<=5){this._rerun=value;}return this;}},{key:'feedback',value:function(){var _ref3=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(){var output;return _regenerator2.default.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:if(this._rerun){this._outputBuffer.rerun=this._rerun;}if(!(this._options.checkUpdates===true)){_context3.next=4;break;}_context3.next=4;return this.checkUpdates().catch(function(){});case 4:output=this._outputBuffer;console.log((0,_stringify2.default)(output,null,'\t'));this._outputBuffer={};return _context3.abrupt('return',output);case 8:case'end':return _context3.stop();}}},_callee3,this);}));function feedback(){return _ref3.apply(this,arguments);}return feedback;}()},{key:'fetch',value:function(){var _ref4=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4(url){var _this3=this;var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var cacheAge=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var cacheResult;return _regenerator2.default.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:options=(0,_assign2.default)({},{json:true},options);if(!(cacheAge&&cacheAge>0)){_context4.next=5;break;}cacheResult=this.cache.get(url);if(!cacheResult){_context4.next=5;break;}return _context4.abrupt('return',cacheResult);case 5:return _context4.abrupt('return',got(url,options).then(function(response){if(cacheAge&&cacheAge>0){_this3.cache.set(url,response.body,{maxAge:cacheAge*1000});}return response.body;}));case 6:case'end':return _context4.stop();}}},_callee4,this);}));function fetch(_x5){return _ref4.apply(this,arguments);}return fetch;}()},{key:'alfredMeta',get:function get(){var data={version:process.env.alfred_version,theme:process.env.alfred_theme,themeFile:'',themeBackground:process.env.alfred_theme_background,themeSelectionBackground:process.env.alfred_theme_selection_background,themeSubtext:parseFloat(process.env.alfred_theme_subtext),preferences:process.env.alfred_preferences,preferencesLocalHash:process.env.alfred_preferences_localhash,debug:process.env.alfred_debug==='1'};if(process.env.HOME&&process.env.alfred_theme){var homedir=process.env.HOME||'';var themeName=process.env.alfred_theme||'';var alfredMajor=semver.major(process.env.alfred_version);var themeFile=path.resolve(homedir,'Library','Application Support','Alfred '+alfredMajor,'Alfred.alfredpreferences','themes',themeName,'theme.json');try{fs.statSync(themeFile);data.themeFile=themeFile;}catch(e){}}return data;}},{key:'alfredTheme',get:function get(){var themeFile=this.alfredMeta.themeFile;if(!themeFile){return{};}return fs.readJsonSync(themeFile,{throws:false})||{};}},{key:'input',get:function get(){if(process.argv.length>3){return process.argv[3]||'';}return process.argv[2]||'';}},{key:'itemCount',get:function get(){if(this.outputBuffer&&this.outputBuffer.items){return this.outputBuffer.items.length;}return 0;}},{key:'outputBuffer',get:function get(){return this._outputBuffer;}},{key:'workflowMeta',get:function get(){var cacheDir=process.env.alfred_workflow_cache;var bundleId=process.env.alfred_workflow_bundleid;if(bundleId&&this._options.useTmpCache===true){cacheDir=path.resolve(path.join(os.tmpdir(),bundleId));}return{name:process.env.alfred_workflow_name,version:process.env.alfred_workflow_version,uid:process.env.alfred_workflow_uid,bundleId:bundleId,data:process.env.alfred_workflow_data,cache:cacheDir,icon:path.join(process.cwd(),'icon.png')};}}]);return Hugo;}();module.exports=new Hugo(); +'use strict';var _regenerator=require('babel-runtime/regenerator');var _regenerator2=_interopRequireDefault(_regenerator);var _asyncToGenerator2=require('babel-runtime/helpers/asyncToGenerator');var _asyncToGenerator3=_interopRequireDefault(_asyncToGenerator2);var _assign=require('babel-runtime/core-js/object/assign');var _assign2=_interopRequireDefault(_assign);var _stringify=require('babel-runtime/core-js/json/stringify');var _stringify2=_interopRequireDefault(_stringify);var _classCallCheck2=require('babel-runtime/helpers/classCallCheck');var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=require('babel-runtime/helpers/createClass');var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var CacheConf=require('cache-conf');var Conf=require('conf');var fs=require('fs-promise');var Fuse=require('fuse.js');var got=require('got');var moment=require('moment');var notifier=require('node-notifier');var os=require('os');var path=require('path');var semver=require('semver');var FileCache=require('./file-cache');var updater=require('./updater');var Hugo=function(){function Hugo(){(0,_classCallCheck3.default)(this,Hugo);this._fuseDefaults={keys:['title'],threshold:0.4};this._options={useTmpCache:true,checkUpdates:true,updateSource:'packal',updateInterval:moment.duration(1,'days'),updateNotification:true,updateItem:true};this._outputBuffer={};this.config=new Conf({cwd:this.workflowMeta.data});this.cache=new CacheConf({configName:'cache',cwd:this.workflowMeta.cache,version:this.workflowMeta.version});}(0,_createClass3.default)(Hugo,[{key:'addItem',value:function addItem(item){if(!this._outputBuffer.items){this._outputBuffer.items=[];}if(!item.title){if(this.alfredMeta.debug===true){console.error('Item skipped, missing title.');}return this;}if(item.arg&&typeof item.arg==='object'){var arg=item.arg.arg||'';var variables=item.arg.variables||{};item.arg=(0,_stringify2.default)({alfredworkflow:{arg:arg,variables:variables}});}this._outputBuffer.items.push(item);return this;}},{key:'addItems',value:function addItems(items){var _this=this;if(!this._outputBuffer.items){this._outputBuffer.items=items;return this;}items.map(function(item){_this.addItem(item);return item;});return this;}},{key:'addVariable',value:function addVariable(key,value){if(!this._outputBuffer.variables){this._outputBuffer.variables={};}this._outputBuffer.variables[key]=value;return this;}},{key:'addVariables',value:function addVariables(variables){if(!this._outputBuffer.variables){this._outputBuffer.variables=variables;return this;}this._outputBuffer.variables=(0,_assign2.default)({},this._outputBuffer.variables,variables);return this;}},{key:'action',value:function action(keyword,callback){var query=process.argv[2];if(query&&callback&&query===keyword){query=process.argv[3]||'';callback(query);}return this;}},{key:'cacheFile',value:function cacheFile(filePath,cacheName){return new FileCache(filePath,cacheName,this.workflowMeta.cache);}},{key:'checkUpdates',value:function(){var _ref=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(){var _this2=this;return _regenerator2.default.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(!(this._options.checkUpdates!==true||this._options.updateItem!==true&&this._options.updateNotification!==true)){_context.next=2;break;}return _context.abrupt('return');case 2:_context.next=4;return updater.checkUpdates(this._options.updateSource,this._options.updateInterval).catch(function(err){console.error(err);return;}).then(function(result){if(!result){return;}var current=_this2.workflowMeta.version;var latest=result.version;if(!semver.valid(current)){console.error(`Version ${current} is not a valid version number.`);return;}if(!semver.valid(latest)){console.error(`Could not determine latest version number.`);return;}if(semver.gt(latest,current)){if(result.checkedOnline===true&&_this2._options.updateNotification===true){notifier.notify({title:_this2.workflowMeta.name||'Alfred',subtitle:`Workflow version ${latest} available. Current version: ${current}.`,sender:'com.runningwithcrayons.Alfred-3',timeout:10});}if(_this2._options.updateItem===true){_this2.addItem({title:`Workflow update available!`,subtitle:`Version ${latest} is available. Current version: ${current}.`,icon:_this2.workflowMeta.icon,arg:{arg:result.url,variables:{task:'wfUpdate'}}});}}});case 4:case'end':return _context.stop();}}},_callee,this);}));function checkUpdates(){return _ref.apply(this,arguments);}return checkUpdates;}()},{key:'clearCache',value:function(){var _ref2=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(){return _regenerator2.default.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:if(!this.workflowMeta.cache){_context2.next=2;break;}return _context2.abrupt('return',fs.emptyDir(this.workflowMeta.cache));case 2:case'end':return _context2.stop();}}},_callee2,this);}));function clearCache(){return _ref2.apply(this,arguments);}return clearCache;}()},{key:'clearCacheSync',value:function clearCacheSync(){if(this.workflowMeta.cache){return fs.emptyDirSync(this.workflowMeta.cache);}}},{key:'filterItems',value:function filterItems(query){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};options=(0,_assign2.default)({},this._fuseDefaults,options);if(query.length===0){return this;}var fuse=new Fuse(this._outputBuffer.items,options);this._outputBuffer.items=fuse.search(query)||[];return this;}},{key:'options',value:function options(_options){var cacheDirChanged='useTmpCache'in _options&&_options.useTmpCache!==this._options.useTmpCache;if(_options.updateInterval&&!moment.isDuration(_options.updateInterval)){if(_options.updateInterval<1){delete _options.updateInterval;}else{_options.updateInterval=moment.duration(_options.updateInterval,'seconds')||moment.duration(1,'days');}}this._options=(0,_assign2.default)({},this._options,_options);if(cacheDirChanged){this.cache=new CacheConf({configName:'cache',cwd:this.workflowMeta.cache,version:this.workflowMeta.version});}return this;}},{key:'matches',value:function matches(candidates,query){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};options=(0,_assign2.default)({},this._fuseDefaults,options);if(query.length===0){return candidates;}var fuse=new Fuse(candidates,options);return fuse.search(query)||[];}},{key:'rerun',value:function rerun(value){value=parseFloat(value);if(value&&value>0.1&&value<=5){this._rerun=value;}return this;}},{key:'feedback',value:function(){var _ref3=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(){var output;return _regenerator2.default.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:if(this._rerun){this._outputBuffer.rerun=this._rerun;}if(!(this._options.checkUpdates===true)){_context3.next=4;break;}_context3.next=4;return this.checkUpdates().catch(function(){});case 4:output=this._outputBuffer;console.log((0,_stringify2.default)(output,null,'\t'));this._outputBuffer={};return _context3.abrupt('return',output);case 8:case'end':return _context3.stop();}}},_callee3,this);}));function feedback(){return _ref3.apply(this,arguments);}return feedback;}()},{key:'fetch',value:function(){var _ref4=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4(url){var _this3=this;var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var cacheAge=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var cacheResult;return _regenerator2.default.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:options=(0,_assign2.default)({},{json:true},options);if(!(cacheAge&&cacheAge>0)){_context4.next=5;break;}cacheResult=this.cache.get(url);if(!cacheResult){_context4.next=5;break;}return _context4.abrupt('return',cacheResult);case 5:return _context4.abrupt('return',got(url,options).then(function(response){if(cacheAge&&cacheAge>0){_this3.cache.set(url,response.body,{maxAge:cacheAge*1000});}return response.body;}));case 6:case'end':return _context4.stop();}}},_callee4,this);}));function fetch(_x5){return _ref4.apply(this,arguments);}return fetch;}()},{key:'alfredMeta',get:function get(){var data={version:process.env.alfred_version,theme:process.env.alfred_theme,themeFile:'',themeBackground:process.env.alfred_theme_background,themeSelectionBackground:process.env.alfred_theme_selection_background,themeSubtext:parseFloat(process.env.alfred_theme_subtext),preferences:process.env.alfred_preferences,preferencesLocalHash:process.env.alfred_preferences_localhash,debug:process.env.alfred_debug==='1'};if(process.env.HOME&&process.env.alfred_theme){var homedir=process.env.HOME||'';var themeName=process.env.alfred_theme||'';var alfredMajor='';if(process.env.alfred_version){alfredMajor=process.env.alfred_version.match(/([0-9]+)\./)||'';if(alfredMajor&&alfredMajor.length>0){alfredMajor=alfredMajor[1];}}var themeFile=path.resolve(homedir,'Library','Application Support','Alfred '+alfredMajor,'Alfred.alfredpreferences','themes',themeName,'theme.json');try{fs.statSync(themeFile);data.themeFile=themeFile;}catch(e){}}return data;}},{key:'alfredTheme',get:function get(){var themeFile=this.alfredMeta.themeFile;if(!themeFile){return{};}return fs.readJsonSync(themeFile,{throws:false})||{};}},{key:'input',get:function get(){if(process.argv.length>3){return process.argv[3]||'';}return process.argv[2]||'';}},{key:'itemCount',get:function get(){if(this.outputBuffer&&this.outputBuffer.items){return this.outputBuffer.items.length;}return 0;}},{key:'outputBuffer',get:function get(){return this._outputBuffer;}},{key:'workflowMeta',get:function get(){var cacheDir=process.env.alfred_workflow_cache;var bundleId=process.env.alfred_workflow_bundleid;if(bundleId&&this._options.useTmpCache===true){cacheDir=path.resolve(path.join(os.tmpdir(),bundleId));}return{name:process.env.alfred_workflow_name,version:process.env.alfred_workflow_version,uid:process.env.alfred_workflow_uid,bundleId:bundleId,data:process.env.alfred_workflow_data,cache:cacheDir,icon:path.join(process.cwd(),'icon.png')};}}]);return Hugo;}();module.exports=new Hugo(); //# sourceMappingURL=index.js.map diff --git a/index.js.flow b/index.js.flow index a445172..fefdd56 100644 --- a/index.js.flow +++ b/index.js.flow @@ -113,9 +113,17 @@ class Hugo { }; if (process.env.HOME && process.env.alfred_theme) { - let homedir = process.env.HOME || ''; - let themeName = process.env.alfred_theme || ''; - let alfredMajor = semver.major(process.env.alfred_version); + let homedir: string = process.env.HOME || ''; + let themeName: string = process.env.alfred_theme || ''; + let alfredMajor: string = ''; + + if (process.env.alfred_version) { + alfredMajor = process.env.alfred_version.match(/([0-9]+)\./) || ''; + + if (alfredMajor && alfredMajor.length > 0) { + alfredMajor = alfredMajor[1]; + } + } let themeFile = path.resolve(homedir, 'Library', 'Application Support', 'Alfred ' + alfredMajor, 'Alfred.alfredpreferences', 'themes', themeName, 'theme.json'); @@ -332,6 +340,7 @@ class Hugo { await updater.checkUpdates(this._options.updateSource, this._options.updateInterval) .catch(err => { console.error(err); + return; }) .then(result => { if (!result) { @@ -342,6 +351,16 @@ class Hugo { let current: string = this.workflowMeta.version; let latest: string = result.version; + if (!semver.valid(current)) { + console.error(`Version ${current} is not a valid version number.`); + return; + } + + if (!semver.valid(latest)) { + console.error(`Could not determine latest version number.`); + return; + } + // Display notification if (semver.gt(latest, current)) { if (result.checkedOnline === true && this._options.updateNotification === true) { diff --git a/index.js.map b/index.js.map index 3a6cf3f..a6e3bd3 100644 --- a/index.js.map +++ b/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["index.js.flow"],"names":["CacheConf","require","Conf","fs","Fuse","got","moment","notifier","os","path","semver","FileCache","updater","Hugo","_fuseDefaults","keys","threshold","_options","useTmpCache","checkUpdates","updateSource","updateInterval","duration","updateNotification","updateItem","_outputBuffer","config","cwd","workflowMeta","data","cache","configName","version","item","items","title","alfredMeta","debug","console","error","arg","variables","alfredworkflow","push","map","addItem","key","value","keyword","callback","query","process","argv","filePath","cacheName","catch","err","then","result","current","latest","gt","checkedOnline","notify","name","subtitle","sender","timeout","icon","url","task","emptyDir","emptyDirSync","options","length","fuse","search","cacheDirChanged","isDuration","candidates","parseFloat","_rerun","rerun","output","log","cacheAge","json","cacheResult","get","set","response","body","maxAge","env","alfred_version","theme","alfred_theme","themeFile","themeBackground","alfred_theme_background","themeSelectionBackground","alfred_theme_selection_background","themeSubtext","alfred_theme_subtext","preferences","alfred_preferences","preferencesLocalHash","alfred_preferences_localhash","alfred_debug","HOME","homedir","themeName","alfredMajor","major","resolve","statSync","e","readJsonSync","throws","outputBuffer","cacheDir","alfred_workflow_cache","bundleId","alfred_workflow_bundleid","join","tmpdir","alfred_workflow_name","alfred_workflow_version","uid","alfred_workflow_uid","alfred_workflow_data","module","exports"],"mappings":"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","file":"index.js","sourcesContent":["// @flow\n\nconst CacheConf = require('cache-conf');\nconst Conf = require('conf');\nconst fs = require('fs-promise');\nconst Fuse = require('fuse.js');\nconst got = require('got');\nconst moment = require('moment');\nconst notifier = require('node-notifier');\nconst os = require('os');\nconst path = require('path');\nconst semver = require('semver');\n\nconst FileCache = require('./file-cache');\nconst updater = require('./updater');\n\n/**\n * Hugo\n */\nclass Hugo {\n /**\n * FuseJS defaults\n * @see https://github.com/krisk/fuse#options\n * @type {Object}\n */\n _fuseDefaults: Object;\n\n /**\n * Hugo options\n * @type {Object}\n */\n _options: Object;\n\n /**\n * Output buffer\n * @type {Object}\n */\n _outputBuffer: Object;\n\n /**\n * Refresh (rerun) interval in seconds\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @type {number|null}\n */\n _rerun: ?number;\n\n /**\n * Cache store\n * @see https://www.npmjs.com/package/cache-conf\n * @type {CacheConf}\n */\n cache: CacheConf;\n\n /**\n * Configuration store\n * @see https://www.npmjs.com/package/conf\n * @type {Conf}\n */\n config: Conf;\n\n /**\n * Hugo constructor\n * @constructor\n */\n constructor() {\n // Set defaults for FuseJS\n this._fuseDefaults = {\n keys: ['title'],\n threshold: 0.4\n };\n\n // Save options\n this._options = {\n useTmpCache: true,\n checkUpdates: true,\n updateSource: 'packal',\n updateInterval: moment.duration(1, 'days'),\n updateNotification: true,\n updateItem: true\n };\n\n // Initialize output buffer\n this._outputBuffer = {};\n\n // Configure config store\n this.config = new Conf({\n cwd: this.workflowMeta.data\n });\n\n // Configure cache store\n this.cache = new CacheConf({\n configName: 'cache',\n cwd: this.workflowMeta.cache,\n version: this.workflowMeta.version\n });\n }\n\n /**\n * Alfred metadata\n * @return {Object}\n */\n get alfredMeta(): Object {\n let data = {\n version: process.env.alfred_version,\n theme: process.env.alfred_theme,\n themeFile: '',\n themeBackground: process.env.alfred_theme_background,\n themeSelectionBackground: process.env.alfred_theme_selection_background,\n themeSubtext: parseFloat(process.env.alfred_theme_subtext),\n preferences: process.env.alfred_preferences,\n preferencesLocalHash: process.env.alfred_preferences_localhash,\n debug: process.env.alfred_debug === '1'\n };\n\n if (process.env.HOME && process.env.alfred_theme) {\n let homedir = process.env.HOME || '';\n let themeName = process.env.alfred_theme || '';\n let alfredMajor = semver.major(process.env.alfred_version);\n\n let themeFile = path.resolve(homedir, 'Library', 'Application Support', 'Alfred ' + alfredMajor,\n 'Alfred.alfredpreferences', 'themes', themeName, 'theme.json');\n\n try {\n fs.statSync(themeFile);\n data.themeFile = themeFile;\n } catch (e) {}\n }\n\n return data;\n }\n\n /**\n * Alfred theme\n * @return {Object}\n */\n get alfredTheme(): Object {\n let themeFile = this.alfredMeta.themeFile;\n\n if (!themeFile) {\n return {};\n }\n\n return fs.readJsonSync(themeFile, {throws: false}) || {};\n }\n\n /**\n * Alfred user input\n * @return {string}\n */\n get input(): string {\n if (process.argv.length > 3) {\n return process.argv[3] || '';\n }\n return process.argv[2] || '';\n }\n\n /**\n * Number of Alfred items in the current output buffer\n * @return {number}\n */\n get itemCount(): number {\n if (this.outputBuffer && this.outputBuffer.items) {\n return this.outputBuffer.items.length;\n }\n\n return 0;\n }\n\n /**\n * Current output buffer\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @return {Object} Object to be output and interpreted by Alfred\n */\n get outputBuffer(): Object {\n return this._outputBuffer;\n }\n\n /**\n * Workflow metadata\n * @return {Object}\n */\n get workflowMeta(): Object {\n let cacheDir = process.env.alfred_workflow_cache;\n let bundleId = process.env.alfred_workflow_bundleid;\n\n if (bundleId && this._options.useTmpCache === true) {\n cacheDir = path.resolve(path.join(os.tmpdir(), bundleId));\n }\n\n return {\n name: process.env.alfred_workflow_name,\n version: process.env.alfred_workflow_version,\n uid: process.env.alfred_workflow_uid,\n bundleId: bundleId,\n data: process.env.alfred_workflow_data,\n cache: cacheDir,\n icon: path.join(process.cwd(), 'icon.png')\n };\n }\n\n /**\n * Add item to output buffer\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @param {Object} item Item to add\n * @type {Hugo}\n */\n addItem(item: Object): Hugo {\n if (!this._outputBuffer.items) {\n this._outputBuffer.items = [];\n }\n\n if (!item.title) {\n if (this.alfredMeta.debug === true) {\n console.error('Item skipped, missing title.');\n }\n return this;\n }\n\n if (item.arg && typeof item.arg === 'object') {\n let arg = item.arg.arg || '';\n let variables = item.arg.variables || {};\n\n item.arg = JSON.stringify({\n alfredworkflow: {\n arg: arg,\n variables: variables\n }\n });\n }\n\n this._outputBuffer.items.push(item);\n\n return this;\n }\n\n /**\n * Add items to output buffer\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @param {Array.} items List of items to add\n * @type {Hugo}\n */\n addItems(items: Array): Hugo {\n if (!this._outputBuffer.items) {\n this._outputBuffer.items = items;\n return this;\n }\n\n items.map(item => {\n this.addItem(item);\n return item;\n });\n\n return this;\n }\n\n /**\n * Add session variable to output buffer\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @param {string} key Variable key\n * @param {string} value Variable value\n * @type {Hugo}\n */\n addVariable(key: string, value: string): Hugo {\n if (!this._outputBuffer.variables) {\n this._outputBuffer.variables = {};\n }\n\n this._outputBuffer.variables[key] = value;\n\n return this;\n }\n\n /**\n * Add session variables to output buffer\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json/\n * @param {Object} variables List of variables to add\n * @type {Hugo}\n */\n addVariables(variables: Object): Hugo {\n if (!this._outputBuffer.variables) {\n this._outputBuffer.variables = variables;\n return this;\n }\n\n this._outputBuffer.variables = Object.assign({}, this._outputBuffer.variables, variables);\n\n return this;\n }\n\n /**\n * Run a callback when first script argument matches keyword. Callback will have third argument as query parameter.\n * @example node index.js myaction \"my query\"\n * @param {string} keyword Action name\n * @param {Function} callback Callback to execute when query matches action name\n * @type {Hugo}\n */\n action(keyword: string, callback: (query: string) => void): Hugo {\n let query: string = process.argv[2];\n\n if (query && callback && query === keyword) {\n query = process.argv[3] || '';\n callback(query);\n }\n\n return this;\n }\n\n /**\n * Cache processed data\n * This allows you to read and process the data once, then storing it in cache until the file has changed again.\n *\n * @param {string} filepath File path\n * @param {string} cacheName Cache name (must be unique for each file)\n * @return {FileCache}\n */\n cacheFile(filePath: string, cacheName: string): FileCache {\n return new FileCache(filePath, cacheName, this.workflowMeta.cache);\n }\n\n /**\n * Check for updates and notify the user\n * @async\n * @return {Promise}\n */\n async checkUpdates() {\n // No need to check if we're not showing anything, duh.\n if (this._options.checkUpdates !== true ||\n (this._options.updateItem !== true && this._options.updateNotification !== true)) {\n return;\n }\n\n await updater.checkUpdates(this._options.updateSource, this._options.updateInterval)\n .catch(err => {\n console.error(err);\n })\n .then(result => {\n if (!result) {\n return;\n }\n\n // Version information\n let current: string = this.workflowMeta.version;\n let latest: string = result.version;\n\n // Display notification\n if (semver.gt(latest, current)) {\n if (result.checkedOnline === true && this._options.updateNotification === true) {\n notifier.notify({\n title: this.workflowMeta.name || 'Alfred',\n subtitle: `Workflow version ${latest} available. Current version: ${current}.`,\n sender: 'com.runningwithcrayons.Alfred-3',\n timeout: 10\n });\n }\n if (this._options.updateItem === true) {\n this.addItem({\n title: `Workflow update available!`,\n subtitle: `Version ${latest} is available. Current version: ${current}.`,\n icon: this.workflowMeta.icon,\n arg: {\n arg: result.url,\n variables: {\n task: 'wfUpdate'\n }\n }\n });\n }\n }\n });\n }\n\n /**\n * Clear cache\n * @async\n * @return {Promise}\n */\n async clearCache() {\n if (this.workflowMeta.cache) {\n return fs.emptyDir(this.workflowMeta.cache);\n }\n }\n\n /**\n * Clear cache (sync)\n * @return {void}\n */\n clearCacheSync() {\n if (this.workflowMeta.cache) {\n return fs.emptyDirSync(this.workflowMeta.cache);\n }\n }\n\n /**\n * Filter added items (output buffer) with fuse.js\n * @see http://fusejs.io\n * @param {string} query Search string\n * @param {Object} options fuse.js options\n * @return {Hugo}\n */\n filterItems(query: string, options: Object = {}): Hugo {\n options = Object.assign({}, this._fuseDefaults, options);\n\n if (query.length === 0) {\n return this;\n }\n\n // Create fuse.js fuzzy search object\n let fuse = new Fuse(this._outputBuffer.items, options);\n\n // Set output buffer to matching items\n this._outputBuffer.items = fuse.search(query) || [];\n\n return this;\n }\n\n /**\n * Set Hugo options\n * @param {Object} options Options to set\n * @return {Hugo}\n */\n options(options: Object): Hugo {\n let cacheDirChanged = 'useTmpCache' in options && options.useTmpCache !== this._options.useTmpCache;\n\n // Convert updateInterval to moment.Duration object\n if (options.updateInterval && !moment.isDuration(options.updateInterval)) {\n if (options.updateInterval < 1) {\n delete options.updateInterval;\n } else {\n options.updateInterval = moment.duration(options.updateInterval, 'seconds') || moment.duration(1, 'days');\n }\n }\n\n // Update options\n this._options = Object.assign({}, this._options, options);\n\n // Update cache dir\n if (cacheDirChanged) {\n this.cache = new CacheConf({\n configName: 'cache',\n cwd: this.workflowMeta.cache,\n version: this.workflowMeta.version\n });\n }\n\n return this;\n }\n\n /**\n * Filter list of candidates with fuse.js\n * @see http://fusejs.io\n * @param {Array.} candidates Input data\n * @param {string} query Search string\n * @param {Object} options fuse.js options\n * @return {Array.}\n */\n matches(candidates: Array, query: string, options: Object = {}): Array {\n options = Object.assign({}, this._fuseDefaults, options);\n\n if (query.length === 0) {\n return candidates;\n }\n\n // Create fuse.js fuzzy search object\n let fuse = new Fuse(candidates, options);\n\n // Return results\n return fuse.search(query) || [];\n }\n\n /**\n * Set rerun parameter\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @param {number} value Interval to rerun the script when idle\n * @return {Hugo}\n */\n rerun(value: number): Hugo {\n value = parseFloat(value);\n\n if (value && value > 0.1 && value <= 5) {\n this._rerun = value;\n }\n\n return this;\n }\n\n /**\n * Flush the output buffer so Alfred shows our items\n * @async\n */\n async feedback() {\n if (this._rerun) {\n this._outputBuffer.rerun = this._rerun;\n }\n\n // Check for updates\n if (this._options.checkUpdates === true) {\n await this.checkUpdates()\n .catch(() => {});\n }\n\n let output = this._outputBuffer;\n\n // Output JSON\n console.log(JSON.stringify(output, null, '\\t'));\n\n // Reset output buffer\n this._outputBuffer = {};\n\n return output;\n }\n\n /**\n * Fetch url and parse JSON. Useful for REST APIs.\n * @see https://www.npmjs.com/package/got\n * @param {string} url Url to request\n * @param {Object} options http.request options\n * @param {number|null} cacheAge Cache lifetime (in seconds), above 0 to enable or null to disable.\n * @return {Object|string}\n * @async\n */\n async fetch(url: string, options: Object = {}, cacheAge: ?number = null): Object|string {\n // Set default options\n options = Object.assign({}, {\n json: true\n }, options);\n\n // Check cache for a hit\n if (cacheAge && cacheAge > 0) {\n let cacheResult: Object|string|null = this.cache.get(url);\n\n if (cacheResult) {\n return cacheResult;\n }\n }\n\n // Do request\n return got(url, options)\n .then(response => {\n if (cacheAge && cacheAge > 0) {\n this.cache.set(url, response.body, {\n maxAge: cacheAge * 1000\n });\n }\n\n return response.body;\n });\n }\n}\n\nmodule.exports = new Hugo();\n"]} \ No newline at end of file +{"version":3,"sources":["index.js.flow"],"names":["CacheConf","require","Conf","fs","Fuse","got","moment","notifier","os","path","semver","FileCache","updater","Hugo","_fuseDefaults","keys","threshold","_options","useTmpCache","checkUpdates","updateSource","updateInterval","duration","updateNotification","updateItem","_outputBuffer","config","cwd","workflowMeta","data","cache","configName","version","item","items","title","alfredMeta","debug","console","error","arg","variables","alfredworkflow","push","map","addItem","key","value","keyword","callback","query","process","argv","filePath","cacheName","catch","err","then","result","current","latest","valid","gt","checkedOnline","notify","name","subtitle","sender","timeout","icon","url","task","emptyDir","emptyDirSync","options","length","fuse","search","cacheDirChanged","isDuration","candidates","parseFloat","_rerun","rerun","output","log","cacheAge","json","cacheResult","get","set","response","body","maxAge","env","alfred_version","theme","alfred_theme","themeFile","themeBackground","alfred_theme_background","themeSelectionBackground","alfred_theme_selection_background","themeSubtext","alfred_theme_subtext","preferences","alfred_preferences","preferencesLocalHash","alfred_preferences_localhash","alfred_debug","HOME","homedir","themeName","alfredMajor","match","resolve","statSync","e","readJsonSync","throws","outputBuffer","cacheDir","alfred_workflow_cache","bundleId","alfred_workflow_bundleid","join","tmpdir","alfred_workflow_name","alfred_workflow_version","uid","alfred_workflow_uid","alfred_workflow_data","module","exports"],"mappings":"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","file":"index.js","sourcesContent":["// @flow\n\nconst CacheConf = require('cache-conf');\nconst Conf = require('conf');\nconst fs = require('fs-promise');\nconst Fuse = require('fuse.js');\nconst got = require('got');\nconst moment = require('moment');\nconst notifier = require('node-notifier');\nconst os = require('os');\nconst path = require('path');\nconst semver = require('semver');\n\nconst FileCache = require('./file-cache');\nconst updater = require('./updater');\n\n/**\n * Hugo\n */\nclass Hugo {\n /**\n * FuseJS defaults\n * @see https://github.com/krisk/fuse#options\n * @type {Object}\n */\n _fuseDefaults: Object;\n\n /**\n * Hugo options\n * @type {Object}\n */\n _options: Object;\n\n /**\n * Output buffer\n * @type {Object}\n */\n _outputBuffer: Object;\n\n /**\n * Refresh (rerun) interval in seconds\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @type {number|null}\n */\n _rerun: ?number;\n\n /**\n * Cache store\n * @see https://www.npmjs.com/package/cache-conf\n * @type {CacheConf}\n */\n cache: CacheConf;\n\n /**\n * Configuration store\n * @see https://www.npmjs.com/package/conf\n * @type {Conf}\n */\n config: Conf;\n\n /**\n * Hugo constructor\n * @constructor\n */\n constructor() {\n // Set defaults for FuseJS\n this._fuseDefaults = {\n keys: ['title'],\n threshold: 0.4\n };\n\n // Save options\n this._options = {\n useTmpCache: true,\n checkUpdates: true,\n updateSource: 'packal',\n updateInterval: moment.duration(1, 'days'),\n updateNotification: true,\n updateItem: true\n };\n\n // Initialize output buffer\n this._outputBuffer = {};\n\n // Configure config store\n this.config = new Conf({\n cwd: this.workflowMeta.data\n });\n\n // Configure cache store\n this.cache = new CacheConf({\n configName: 'cache',\n cwd: this.workflowMeta.cache,\n version: this.workflowMeta.version\n });\n }\n\n /**\n * Alfred metadata\n * @return {Object}\n */\n get alfredMeta(): Object {\n let data = {\n version: process.env.alfred_version,\n theme: process.env.alfred_theme,\n themeFile: '',\n themeBackground: process.env.alfred_theme_background,\n themeSelectionBackground: process.env.alfred_theme_selection_background,\n themeSubtext: parseFloat(process.env.alfred_theme_subtext),\n preferences: process.env.alfred_preferences,\n preferencesLocalHash: process.env.alfred_preferences_localhash,\n debug: process.env.alfred_debug === '1'\n };\n\n if (process.env.HOME && process.env.alfred_theme) {\n let homedir: string = process.env.HOME || '';\n let themeName: string = process.env.alfred_theme || '';\n let alfredMajor: string = '';\n\n if (process.env.alfred_version) {\n alfredMajor = process.env.alfred_version.match(/([0-9]+)\\./) || '';\n\n if (alfredMajor && alfredMajor.length > 0) {\n alfredMajor = alfredMajor[1];\n }\n }\n\n let themeFile = path.resolve(homedir, 'Library', 'Application Support', 'Alfred ' + alfredMajor,\n 'Alfred.alfredpreferences', 'themes', themeName, 'theme.json');\n\n try {\n fs.statSync(themeFile);\n data.themeFile = themeFile;\n } catch (e) {}\n }\n\n return data;\n }\n\n /**\n * Alfred theme\n * @return {Object}\n */\n get alfredTheme(): Object {\n let themeFile = this.alfredMeta.themeFile;\n\n if (!themeFile) {\n return {};\n }\n\n return fs.readJsonSync(themeFile, {throws: false}) || {};\n }\n\n /**\n * Alfred user input\n * @return {string}\n */\n get input(): string {\n if (process.argv.length > 3) {\n return process.argv[3] || '';\n }\n return process.argv[2] || '';\n }\n\n /**\n * Number of Alfred items in the current output buffer\n * @return {number}\n */\n get itemCount(): number {\n if (this.outputBuffer && this.outputBuffer.items) {\n return this.outputBuffer.items.length;\n }\n\n return 0;\n }\n\n /**\n * Current output buffer\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @return {Object} Object to be output and interpreted by Alfred\n */\n get outputBuffer(): Object {\n return this._outputBuffer;\n }\n\n /**\n * Workflow metadata\n * @return {Object}\n */\n get workflowMeta(): Object {\n let cacheDir = process.env.alfred_workflow_cache;\n let bundleId = process.env.alfred_workflow_bundleid;\n\n if (bundleId && this._options.useTmpCache === true) {\n cacheDir = path.resolve(path.join(os.tmpdir(), bundleId));\n }\n\n return {\n name: process.env.alfred_workflow_name,\n version: process.env.alfred_workflow_version,\n uid: process.env.alfred_workflow_uid,\n bundleId: bundleId,\n data: process.env.alfred_workflow_data,\n cache: cacheDir,\n icon: path.join(process.cwd(), 'icon.png')\n };\n }\n\n /**\n * Add item to output buffer\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @param {Object} item Item to add\n * @type {Hugo}\n */\n addItem(item: Object): Hugo {\n if (!this._outputBuffer.items) {\n this._outputBuffer.items = [];\n }\n\n if (!item.title) {\n if (this.alfredMeta.debug === true) {\n console.error('Item skipped, missing title.');\n }\n return this;\n }\n\n if (item.arg && typeof item.arg === 'object') {\n let arg = item.arg.arg || '';\n let variables = item.arg.variables || {};\n\n item.arg = JSON.stringify({\n alfredworkflow: {\n arg: arg,\n variables: variables\n }\n });\n }\n\n this._outputBuffer.items.push(item);\n\n return this;\n }\n\n /**\n * Add items to output buffer\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @param {Array.} items List of items to add\n * @type {Hugo}\n */\n addItems(items: Array): Hugo {\n if (!this._outputBuffer.items) {\n this._outputBuffer.items = items;\n return this;\n }\n\n items.map(item => {\n this.addItem(item);\n return item;\n });\n\n return this;\n }\n\n /**\n * Add session variable to output buffer\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @param {string} key Variable key\n * @param {string} value Variable value\n * @type {Hugo}\n */\n addVariable(key: string, value: string): Hugo {\n if (!this._outputBuffer.variables) {\n this._outputBuffer.variables = {};\n }\n\n this._outputBuffer.variables[key] = value;\n\n return this;\n }\n\n /**\n * Add session variables to output buffer\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json/\n * @param {Object} variables List of variables to add\n * @type {Hugo}\n */\n addVariables(variables: Object): Hugo {\n if (!this._outputBuffer.variables) {\n this._outputBuffer.variables = variables;\n return this;\n }\n\n this._outputBuffer.variables = Object.assign({}, this._outputBuffer.variables, variables);\n\n return this;\n }\n\n /**\n * Run a callback when first script argument matches keyword. Callback will have third argument as query parameter.\n * @example node index.js myaction \"my query\"\n * @param {string} keyword Action name\n * @param {Function} callback Callback to execute when query matches action name\n * @type {Hugo}\n */\n action(keyword: string, callback: (query: string) => void): Hugo {\n let query: string = process.argv[2];\n\n if (query && callback && query === keyword) {\n query = process.argv[3] || '';\n callback(query);\n }\n\n return this;\n }\n\n /**\n * Cache processed data\n * This allows you to read and process the data once, then storing it in cache until the file has changed again.\n *\n * @param {string} filepath File path\n * @param {string} cacheName Cache name (must be unique for each file)\n * @return {FileCache}\n */\n cacheFile(filePath: string, cacheName: string): FileCache {\n return new FileCache(filePath, cacheName, this.workflowMeta.cache);\n }\n\n /**\n * Check for updates and notify the user\n * @async\n * @return {Promise}\n */\n async checkUpdates() {\n // No need to check if we're not showing anything, duh.\n if (this._options.checkUpdates !== true ||\n (this._options.updateItem !== true && this._options.updateNotification !== true)) {\n return;\n }\n\n await updater.checkUpdates(this._options.updateSource, this._options.updateInterval)\n .catch(err => {\n console.error(err);\n return;\n })\n .then(result => {\n if (!result) {\n return;\n }\n\n // Version information\n let current: string = this.workflowMeta.version;\n let latest: string = result.version;\n\n if (!semver.valid(current)) {\n console.error(`Version ${current} is not a valid version number.`);\n return;\n }\n\n if (!semver.valid(latest)) {\n console.error(`Could not determine latest version number.`);\n return;\n }\n\n // Display notification\n if (semver.gt(latest, current)) {\n if (result.checkedOnline === true && this._options.updateNotification === true) {\n notifier.notify({\n title: this.workflowMeta.name || 'Alfred',\n subtitle: `Workflow version ${latest} available. Current version: ${current}.`,\n sender: 'com.runningwithcrayons.Alfred-3',\n timeout: 10\n });\n }\n if (this._options.updateItem === true) {\n this.addItem({\n title: `Workflow update available!`,\n subtitle: `Version ${latest} is available. Current version: ${current}.`,\n icon: this.workflowMeta.icon,\n arg: {\n arg: result.url,\n variables: {\n task: 'wfUpdate'\n }\n }\n });\n }\n }\n });\n }\n\n /**\n * Clear cache\n * @async\n * @return {Promise}\n */\n async clearCache() {\n if (this.workflowMeta.cache) {\n return fs.emptyDir(this.workflowMeta.cache);\n }\n }\n\n /**\n * Clear cache (sync)\n * @return {void}\n */\n clearCacheSync() {\n if (this.workflowMeta.cache) {\n return fs.emptyDirSync(this.workflowMeta.cache);\n }\n }\n\n /**\n * Filter added items (output buffer) with fuse.js\n * @see http://fusejs.io\n * @param {string} query Search string\n * @param {Object} options fuse.js options\n * @return {Hugo}\n */\n filterItems(query: string, options: Object = {}): Hugo {\n options = Object.assign({}, this._fuseDefaults, options);\n\n if (query.length === 0) {\n return this;\n }\n\n // Create fuse.js fuzzy search object\n let fuse = new Fuse(this._outputBuffer.items, options);\n\n // Set output buffer to matching items\n this._outputBuffer.items = fuse.search(query) || [];\n\n return this;\n }\n\n /**\n * Set Hugo options\n * @param {Object} options Options to set\n * @return {Hugo}\n */\n options(options: Object): Hugo {\n let cacheDirChanged = 'useTmpCache' in options && options.useTmpCache !== this._options.useTmpCache;\n\n // Convert updateInterval to moment.Duration object\n if (options.updateInterval && !moment.isDuration(options.updateInterval)) {\n if (options.updateInterval < 1) {\n delete options.updateInterval;\n } else {\n options.updateInterval = moment.duration(options.updateInterval, 'seconds') || moment.duration(1, 'days');\n }\n }\n\n // Update options\n this._options = Object.assign({}, this._options, options);\n\n // Update cache dir\n if (cacheDirChanged) {\n this.cache = new CacheConf({\n configName: 'cache',\n cwd: this.workflowMeta.cache,\n version: this.workflowMeta.version\n });\n }\n\n return this;\n }\n\n /**\n * Filter list of candidates with fuse.js\n * @see http://fusejs.io\n * @param {Array.} candidates Input data\n * @param {string} query Search string\n * @param {Object} options fuse.js options\n * @return {Array.}\n */\n matches(candidates: Array, query: string, options: Object = {}): Array {\n options = Object.assign({}, this._fuseDefaults, options);\n\n if (query.length === 0) {\n return candidates;\n }\n\n // Create fuse.js fuzzy search object\n let fuse = new Fuse(candidates, options);\n\n // Return results\n return fuse.search(query) || [];\n }\n\n /**\n * Set rerun parameter\n * @see https://www.alfredapp.com/help/workflows/inputs/script-filter/json\n * @param {number} value Interval to rerun the script when idle\n * @return {Hugo}\n */\n rerun(value: number): Hugo {\n value = parseFloat(value);\n\n if (value && value > 0.1 && value <= 5) {\n this._rerun = value;\n }\n\n return this;\n }\n\n /**\n * Flush the output buffer so Alfred shows our items\n * @async\n */\n async feedback() {\n if (this._rerun) {\n this._outputBuffer.rerun = this._rerun;\n }\n\n // Check for updates\n if (this._options.checkUpdates === true) {\n await this.checkUpdates()\n .catch(() => {});\n }\n\n let output = this._outputBuffer;\n\n // Output JSON\n console.log(JSON.stringify(output, null, '\\t'));\n\n // Reset output buffer\n this._outputBuffer = {};\n\n return output;\n }\n\n /**\n * Fetch url and parse JSON. Useful for REST APIs.\n * @see https://www.npmjs.com/package/got\n * @param {string} url Url to request\n * @param {Object} options http.request options\n * @param {number|null} cacheAge Cache lifetime (in seconds), above 0 to enable or null to disable.\n * @return {Object|string}\n * @async\n */\n async fetch(url: string, options: Object = {}, cacheAge: ?number = null): Object|string {\n // Set default options\n options = Object.assign({}, {\n json: true\n }, options);\n\n // Check cache for a hit\n if (cacheAge && cacheAge > 0) {\n let cacheResult: Object|string|null = this.cache.get(url);\n\n if (cacheResult) {\n return cacheResult;\n }\n }\n\n // Do request\n return got(url, options)\n .then(response => {\n if (cacheAge && cacheAge > 0) {\n this.cache.set(url, response.body, {\n maxAge: cacheAge * 1000\n });\n }\n\n return response.body;\n });\n }\n}\n\nmodule.exports = new Hugo();\n"]} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..28b8ca7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4701 @@ +{ + "name": "alfred-hugo", + "version": "1.1.0", + "lockfileVersion": 1, + "dependencies": { + "@ava/babel-preset-stage-4": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", + "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", + "dev": true + }, + "@ava/babel-preset-transform-test-files": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-2.0.1.tgz", + "integrity": "sha1-11IyzG1x3Jx+rkt2qQBP2BUB0ME=", + "dev": true + }, + "@ava/pretty-format": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ava/pretty-format/-/pretty-format-1.1.0.tgz", + "integrity": "sha1-0KV9Jeua6rlkO90aAwZCuRwSPig=", + "dev": true + }, + "@gulp-sourcemaps/identity-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.1.tgz", + "integrity": "sha1-z6I7xYQPkQTOMqZedNt+epdLvuE=", + "dev": true + }, + "@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "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-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 + } + } + }, + "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 + }, + "alfred-link": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/alfred-link/-/alfred-link-0.2.0.tgz", + "integrity": "sha1-u0Vs5aTsv7xX+0oCCinNG/pNeNI=" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", + "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", + "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-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "dev": true + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "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-exclude": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", + "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", + "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-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "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-slice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", + "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=" + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "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 + }, + "atob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", + "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=", + "dev": true + }, + "auto-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.1.0.tgz", + "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=", + "dev": true + }, + "ava": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.18.2.tgz", + "integrity": "sha1-eSU9FjYHcDSieAu1W1w+bD1/MS8=", + "dev": true, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true + } + } + }, + "ava-init": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.0.tgz", + "integrity": "sha1-kwTItMNX1m49/a4fv/R7EZnVxV0=", + "dev": true, + "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 + }, + "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 + } + } + }, + "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-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "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, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "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-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "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-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "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-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-ava-throws-helper": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-ava-throws-helper/-/babel-plugin-ava-throws-helper-1.0.0.tgz", + "integrity": "sha1-j+bnnS/RmDi1w2Sfic+wP9Vj4kE=", + "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-espower": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", + "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", + "dev": true + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "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-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "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-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "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-preset-env": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.5.2.tgz", + "integrity": "sha1-zUrpCm6Utwn5c3SzPl+LmDVWre8=", + "dev": true + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", + "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=" + }, + "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.4", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", + "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=" + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "big-integer": { + "version": "1.6.23", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.23.tgz", + "integrity": "sha1-6F1QgiDHTj9DpM5y7tUfPaTblNE=" + }, + "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 + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "boxen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", + "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", + "dev": true + }, + "bplist-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", + "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=" + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true + }, + "browserslist": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.1.5.tgz", + "integrity": "sha1-6IJVDfPRzW1IHBo+ADjyuvE6RxE=", + "dev": true + }, + "buf-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", + "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", + "dev": true + }, + "bufferstreams": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.1.tgz", + "integrity": "sha1-AWE3MGCsWYjv+ZBYcxEU9uGV1R4=", + "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=" + }, + "cache-conf": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cache-conf/-/cache-conf-0.5.0.tgz", + "integrity": "sha1-aBxC7Rdx6tK8I2MqddPNjceUXFk=" + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true + } + } + }, + "call-matcher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", + "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", + "dev": true + }, + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", + "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 + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "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 + }, + "caniuse-lite": { + "version": "1.0.30000693", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000693.tgz", + "integrity": "sha1-ycYphpfHH99ssT7v6KqTkm8vhhM=", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" + }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true + }, + "ci-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", + "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", + "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-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "dev": true + }, + "clean-yaml-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true + }, + "cli-spinners": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.0.tgz", + "integrity": "sha1-75h+09SDkaw9q5GAtAanQhgNbmo=", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "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 + }, + "clone": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "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 + }, + "co-with-promise": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", + "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", + "dev": true, + "dependencies": { + "pinkie": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", + "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", + "dev": true + }, + "pinkie-promise": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", + "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", + "dev": true + } + } + }, + "code-excerpt": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.0.tgz", + "integrity": "sha1-XcwIHoj0p+O1VOnjXX7yMtR/gUc=", + "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 + }, + "common-path-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", + "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "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=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true + }, + "conf": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-0.12.0.tgz", + "integrity": "sha1-hJjFmeJIf+xwNQXRgcETh1uMMQw=" + }, + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "dev": true, + "dependencies": { + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "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 + }, + "convert-to-spaces": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", + "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", + "dev": true + }, + "core-assert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", + "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", + "dev": true + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" + }, + "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-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=" + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "css": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", + "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", + "dev": true, + "dependencies": { + "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 + } + } + }, + "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 + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true + }, + "date-time": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true + }, + "dateformat": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", + "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=", + "dev": true + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "debug-fabulous": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-0.1.0.tgz", + "integrity": "sha1-rQ6gel1RkyT7VYQqjzTuWcf4/2w=", + "dev": true, + "dependencies": { + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "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-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true + } + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + }, + "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 + }, + "deep-strict-equal": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz", + "integrity": "sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=" + }, + "delay": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/delay/-/delay-1.3.1.tgz", + "integrity": "sha1-oqimHHak1QtnD+KrLVHLA4Arupg=", + "dev": true + }, + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "dev": true + }, + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "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-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true + }, + "dot-prop": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.1.1.tgz", + "integrity": "sha1-qEk/C3te7sglJbXHWH+n3nyoWcE=" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "electron-to-chromium": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.14.tgz", + "integrity": "sha1-ZK8Pnv08PGrNV9cfg7Scp+6cS0M=", + "dev": true + }, + "empower-core": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", + "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", + "dev": true + }, + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "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 + } + } + }, + "enhance-visitors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/enhance-visitors/-/enhance-visitors-1.0.0.tgz", + "integrity": "sha1-qpRdBdpGVnKh69OP7i7T2oUY6Vo=", + "dev": true + }, + "env-paths": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", + "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=" + }, + "equal-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", + "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=" + }, + "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-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-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-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=" + }, + "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, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "eslint-config-xo": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.17.0.tgz", + "integrity": "sha1-Hn1Khr9JF5gFxGIugyp7G+606IE=", + "dev": true + }, + "eslint-formatter-pretty": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-1.1.0.tgz", + "integrity": "sha1-q00G2gL+2ME66fDcVApDPvftb14=", + "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 + } + } + }, + "eslint-plugin-ava": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-4.2.1.tgz", + "integrity": "sha1-fNtegbx3n0gz1HIKYJPl9KbKGRM=", + "dev": true, + "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 + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true + } + } + }, + "eslint-plugin-flowtype-errors": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype-errors/-/eslint-plugin-flowtype-errors-3.3.0.tgz", + "integrity": "sha1-RpnH+3OhoqandYLYYhzCn/0Omhk=", + "dev": true + }, + "espower-location-detector": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", + "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", + "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 + }, + "espurify": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", + "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", + "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.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "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 + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true + }, + "execa": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=", + "dev": true, + "dependencies": { + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "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-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 + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "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 + }, + "fancy-log": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "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 + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "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 + }, + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", + "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-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dependencies": { + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=" + } + } + }, + "findup-sync": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", + "dev": true + }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "dependencies": { + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true + } + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flagged-respawn": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", + "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", + "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 + }, + "flow-bin": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.40.0.tgz", + "integrity": "sha1-4Q1ghG2SMSTkf1SPFrpg/Yuv9aU=", + "dev": true + }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", + "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 + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true + }, + "fs-extra": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", + "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=" + }, + "fs-promise": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fs-promise/-/fs-promise-2.0.3.tgz", + "integrity": "sha1-9k5PhUvPaJqovdy6JokW2z20aFQ=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "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.7", + "bundled": true, + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "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 + }, + "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.6.8", + "bundled": true, + "dev": true, + "optional": true + }, + "deep-extend": { + "version": "0.4.2", + "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 + }, + "extend": { + "version": "3.0.1", + "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.4", + "bundled": true, + "dev": true, + "optional": true + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "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-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-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npmlog": { + "version": "4.1.0", + "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 + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "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.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true + }, + "safe-buffer": { + "version": "5.0.1", + "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.13.0", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "string_decoder": { + "version": "1.0.1", + "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 + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "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.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fuse.js": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-2.7.4.tgz", + "integrity": "sha1-luQg/efvARrEnCWKYhMU/ldlNvk=" + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "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-port": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-2.1.0.tgz", + "integrity": "sha1-h4P53OvR7qSVozThpqJR54iHqxo=", + "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 + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + }, + "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 + }, + "glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "dev": true, + "dependencies": { + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "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 + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "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 + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true + } + } + }, + "glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "dev": true + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "dev": true + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "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=" + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dev": true, + "dependencies": { + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true + } + } + }, + "glogg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "dev": true + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + } + } + }, + "gulp-babel": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/gulp-babel/-/gulp-babel-6.1.2.tgz", + "integrity": "sha1-fAF25Lo/JExgWIoMSzIKRdGt784=", + "dev": true + }, + "gulp-eslint": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/gulp-eslint/-/gulp-eslint-3.0.1.tgz", + "integrity": "sha1-BOV+PhjGl0JnwSz2hV3HF9SjE70=", + "dev": true + }, + "gulp-rename": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", + "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", + "dev": true + }, + "gulp-sourcemaps": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.0.tgz", + "integrity": "sha1-fMzomaijv8oVk6M0jQ+/Qd0/UeU=", + "dev": true, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "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=" + }, + "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-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true + }, + "has-yarn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", + "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", + "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 + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true + }, + "hook-std": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-0.3.0.tgz", + "integrity": "sha1-HnXwZYlnrB+dfBe57G69mT+IKOU=", + "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=" + }, + "ignore": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", + "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", + "dev": true + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "import-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-1.1.0.tgz", + "integrity": "sha1-dI23nFzEK7lwHvq0JPiU5yYA6dw=", + "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": "3.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.1.0.tgz", + "integrity": "sha1-CP9DNGAziDmbMp5rlTjcejz13n0=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "dependencies": { + "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 + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "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 + } + } + }, + "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 + }, + "irregular-plurals": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.2.0.tgz", + "integrity": "sha1-OPKZg0uowAwwvpxVThNyaXUv86w=", + "dev": true + }, + "is-absolute": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "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=" + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true + }, + "is-docker": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-1.1.0.tgz", + "integrity": "sha1-8EN01O7lMQ6ajhE78UlUEeRhdqE=" + }, + "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-error": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", + "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", + "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-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "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-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "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-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "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=" + }, + "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=" + }, + "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=" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.3.tgz", + "integrity": "sha1-wVvz5LZrYtcu+vKSWEhmPsvGGbY=", + "dev": true, + "dependencies": { + "isobject": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.0.tgz", + "integrity": "sha1-OVZSF/NmF4nooKDAgNX35rxG4aA=", + "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-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-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-relative": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "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-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + }, + "is-root": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", + "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-unc-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "dev": true + }, + "is-url": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", + "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true + }, + "jest-diff": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-18.1.0.tgz", + "integrity": "sha1-T/eedN2YjBORlbNl3GXYf2BvSAM=", + "dev": true + }, + "jest-file-exists": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/jest-file-exists/-/jest-file-exists-17.0.0.tgz", + "integrity": "sha1-f2Prc6HEOhP0Yb4mF2i0WvLN0Wk=", + "dev": true + }, + "jest-matcher-utils": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-18.1.0.tgz", + "integrity": "sha1-GsRlGVXuKmDO8ef8yYzf13PA+TI=", + "dev": true + }, + "jest-mock": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-18.0.0.tgz", + "integrity": "sha1-XCSIRuoz+lWLUm9TEqtKZ2XkibM=", + "dev": true + }, + "jest-snapshot": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-18.1.0.tgz", + "integrity": "sha1-VbltLuY5ybznb4fyo/1Atxx6WRY=", + "dev": true + }, + "jest-util": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-18.1.0.tgz", + "integrity": "sha1-OpnDIRSrF/hL4JQ4JScAbm1L/Go=", + "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 + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "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 + }, + "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=" + }, + "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 + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + }, + "last-line-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", + "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", + "dev": true + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=" + }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true + }, + "liftoff": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", + "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", + "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=" + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "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._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "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._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "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._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "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.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "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.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "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": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "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 + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + }, + "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 + }, + "make-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", + "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "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 + }, + "matcher": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-0.1.2.tgz", + "integrity": "sha1-7yDL3mTCTFDMYa9bg+4LG4/wAQE=", + "dev": true + }, + "max-timeout": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/max-timeout/-/max-timeout-1.0.0.tgz", + "integrity": "sha1-to9povmeC0dv1Msj4gWcp1BxXh8=", + "dev": true + }, + "md5-hex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", + "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", + "dev": true + }, + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "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 + } + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + }, + "moment": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" + }, + "ms": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", + "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=", + "dev": true + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "dependencies": { + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "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 + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "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 + } + } + }, + "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 + }, + "mz": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.6.0.tgz", + "integrity": "sha1-yLhSHZWN8KTydoAl22nHGe5O8c4=" + }, + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "dev": true, + "optional": true + }, + "natives": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", + "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", + "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 + }, + "nock": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/nock/-/nock-9.0.13.tgz", + "integrity": "sha1-0Lw570PTF5mB4isujqBp+RbFeBo=", + "dev": true + }, + "node-notifier": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=" + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "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=" + }, + "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-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 + }, + "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 + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true + }, + "isobject": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.0.tgz", + "integrity": "sha1-OVZSF/NmF4nooKDAgNX35rxG4aA=", + "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 + }, + "object.pick": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz", + "integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=", + "dev": true + }, + "observable-to-promise": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.4.0.tgz", + "integrity": "sha1-KK/nFkUwjy1B1x9HrT/s4aN35Ss=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true + }, + "option-chain": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-0.1.1.tgz", + "integrity": "sha1-6bgR4AbxwPVIAvKClb/Ilw+Nz70=", + "dev": true + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true + }, + "orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "dev": true + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", + "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=" + }, + "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 + }, + "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 + }, + "package-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", + "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", + "dev": true, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true + } + } + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=" + }, + "parse-filepath": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", + "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", + "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=" + }, + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "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-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-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "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=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" + }, + "pkg-conf": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", + "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", + "dev": true, + "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 + }, + "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 + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "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 + }, + "pkg-up": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", + "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=" + }, + "plist": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", + "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=" + }, + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "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 + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-format": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-18.1.0.tgz", + "integrity": "sha1-+2Wob3p/kZSWPu6RhlwbzxA54oQ=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "pretty-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", + "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", + "dev": true, + "dependencies": { + "plur": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", + "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", + "dev": true + } + } + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "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 + }, + "propagate": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-0.4.0.tgz", + "integrity": "sha1-8/zKCm/gZzanulcpZgaWF8EwtIE=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "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 + }, + "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 + } + } + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dependencies": { + "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=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, + "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=", + "dependencies": { + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=" + } + } + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "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 + }, + "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, + "dependencies": { + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "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=" + }, + "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 + }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=" + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=" + }, + "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 + }, + "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 + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "require-precompiled": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", + "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", + "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, + "dependencies": { + "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 + } + } + }, + "resolve": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "dev": true + }, + "resolve-alfred-prefs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-alfred-prefs/-/resolve-alfred-prefs-1.0.0.tgz", + "integrity": "sha1-qukUCIV4gptYSk5rclB+jCCW7Dc=" + }, + "resolve-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-1.0.0.tgz", + "integrity": "sha1-Tq7qQe0EDRcCRX32SkKysH0kb58=", + "dev": true + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "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 + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=" + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "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.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true + }, + "sequencify": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "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 + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true + }, + "shellwords": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.0.tgz", + "integrity": "sha1-Zq/Ue2oSky2Qccv9mKUueFzQuhQ=" + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "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 + }, + "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 + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "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-resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", + "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "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 + }, + "source-map-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", + "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=", + "dev": true + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "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=" + }, + "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=" + }, + "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=" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "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 + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "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=" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=" + }, + "strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "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 + }, + "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=" + }, + "sudo-block": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/sudo-block/-/sudo-block-1.2.0.tgz", + "integrity": "sha1-zFOb+BkWJNT1B9g+60W0zqJ/NGM=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "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 + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "tempy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.1.0.tgz", + "integrity": "sha1-hSdBPNBxAINPzJy7gkK+lboOH+4=", + "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 + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=" + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=" + }, + "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 + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "dev": true + }, + "time-require": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", + "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", + "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 + }, + "parse-ms": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", + "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", + "dev": true + }, + "pretty-ms": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", + "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", + "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 + } + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, + "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 + }, + "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 + }, + "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": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uid2": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", + "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "unique-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "dev": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true + }, + "unique-temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", + "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", + "dev": true + }, + "untildify": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.2.tgz", + "integrity": "sha1-fx8wIFWz/qDz6B3HjrNnZstl4/E=" + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" + }, + "update-notifier": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", + "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", + "dev": true, + "dependencies": { + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true + }, + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", + "dev": true + }, + "package-json": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", + "dev": true + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=" + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "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 + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "dependencies": { + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "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=" + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dev": true, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "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 + }, + "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 + }, + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=" + }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true + }, + "write-file-atomic": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.1.0.tgz", + "integrity": "sha512-0TZ20a+xcIl4u0+Mj5xDH2yOWdmQiXlKf9Hm+TgDXjTMsEYb+gDrmb8e8UNAzMCitX8NBqG4Z/FUQIyzv/R1JQ==", + "dev": true + }, + "write-json-file": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.2.0.tgz", + "integrity": "sha1-UYYlBruzthnu+reFnx/WxtBTCHY=", + "dev": true, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + } + } + }, + "write-pkg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-2.1.0.tgz", + "integrity": "sha1-NTqkTDnEjCFED1wIzmq9RhQcnAg=", + "dev": true + }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "dev": true + }, + "xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=" + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } +} diff --git a/tests/_init.js b/tests/_init.js index 4b09622..fc5bdfb 100644 --- a/tests/_init.js +++ b/tests/_init.js @@ -9,6 +9,7 @@ exports.hugo = () => { process.env.alfred_workflow_version = '1.0.0'; process.env.alfred_workflow_bundleid = 'my.work.flow'; process.env.alfred_workflow_cache = tempy.directory(); + process.env.alfred_debug = false; return require('../index'); }; @@ -19,6 +20,7 @@ exports.updater = () => { process.env.alfred_workflow_version = '1.0.0'; process.env.alfred_workflow_bundleid = 'my.work.flow'; process.env.alfred_workflow_cache = tempy.directory(); + process.env.alfred_debug = false; return require('../updater'); }; diff --git a/tests/index.js b/tests/index.js new file mode 100644 index 0000000..c7a1749 --- /dev/null +++ b/tests/index.js @@ -0,0 +1,31 @@ +import test from 'ava'; + +import {hugo} from './_init'; + +/** + * Set-up + */ +test.beforeEach('setup', t => { + const h = hugo(); + + h.options({ + checkUpdates: false, + useTmpCache: false + }); + + t.context.hugo = h; +}); + +/** + * Check alfred meta with invalid version number + */ +test('alfred meta with invalid version', t => { + const h = t.context.hugo; + + // Set alfred version + process.env.alfred_version = '3.0'; + + // Check version number + t.is(typeof h.alfredMeta, 'object'); + t.is(h.alfredMeta.version, process.env.alfred_version); +}); diff --git a/tests/output.js b/tests/output.js index f3f6961..e6cf601 100644 --- a/tests/output.js +++ b/tests/output.js @@ -6,7 +6,7 @@ import {hugo} from './_init'; /** * Set-up */ -test.beforeEach(t => { +test.beforeEach('setup', t => { const h = hugo(); h.options({ diff --git a/updater.js b/updater.js index 0f08791..6276137 100644 --- a/updater.js +++ b/updater.js @@ -1,2 +1,2 @@ -'use strict';var _regenerator=require('babel-runtime/regenerator');var _regenerator2=_interopRequireDefault(_regenerator);var _asyncToGenerator2=require('babel-runtime/helpers/asyncToGenerator');var _asyncToGenerator3=_interopRequireDefault(_asyncToGenerator2);var _classCallCheck2=require('babel-runtime/helpers/classCallCheck');var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=require('babel-runtime/helpers/createClass');var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var CacheConf=require('cache-conf');var moment=require('moment');var readPkg=require('read-pkg');var latestVersion=require('latest-version');var got=require('got');var Updater=function(){function Updater(){(0,_classCallCheck3.default)(this,Updater);this.cache=new CacheConf({configName:'updater',cwd:process.env.alfred_workflow_cache,version:process.env.alfred_workflow_version});}(0,_createClass3.default)(Updater,[{key:'checkPackal',value:function(){var _ref=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(interval){var bundleId,searchParam,pkgUrl,latest;return _regenerator2.default.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:bundleId=process.env.alfred_workflow_bundleid;if(bundleId){_context.next=4;break;}console.error('No bundle ID, not checking Packal for updates.');return _context.abrupt('return');case 4:searchParam=encodeURIComponent('site:packal.org '+bundleId);pkgUrl=`https://encrypted.google.com/search?sourceid=chrome&ie=UTF-8&q=${searchParam}&btnI`;_context.next=8;return got(`https://github.com/packal/repository/blob/master/${bundleId}/appcast.xml`).catch(function(err){console.error(err);return false;}).then(function(response){var versionMatches=response.body.match(/(.+)<\/version>/);if(versionMatches&&versionMatches.length>0){return{version:response.body.match(/(.+)<\/version>/)[1],url:pkgUrl,checkedOnline:false};}return false;});case 8:latest=_context.sent;this.cache.set('latest_version_packal',latest,{maxAge:interval.as('milliseconds')});if(latest){latest.checkedOnline=true;}return _context.abrupt('return',latest);case 12:case'end':return _context.stop();}}},_callee,this);}));function checkPackal(_x){return _ref.apply(this,arguments);}return checkPackal;}()},{key:'checkNpm',value:function(){var _ref2=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(interval){var pkg=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var url,latest;return _regenerator2.default.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.t0=pkg;if(_context2.t0){_context2.next=5;break;}_context2.next=4;return readPkg(process.cwd());case 4:_context2.t0=_context2.sent;case 5:pkg=_context2.t0;url=`https://www.npmjs.com/package/${pkg.name}`;_context2.next=9;return latestVersion(pkg.name).catch(function(err){console.error(err);return false;}).then(function(version){return{version:version,url:url,checkedOnline:false};});case 9:latest=_context2.sent;this.cache.set('latest_version_npm',latest,{maxAge:interval.as('milliseconds')});if(latest){latest.checkedOnline=true;}return _context2.abrupt('return',latest);case 13:case'end':return _context2.stop();}}},_callee2,this);}));function checkNpm(_x3){return _ref2.apply(this,arguments);}return checkNpm;}()},{key:'checkUpdates',value:function(){var _ref3=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(source,interval){var pkg=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var latest;return _regenerator2.default.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:latest=this.cache.get(`latest_version_${source}`);if(!(latest===false)){_context3.next=3;break;}return _context3.abrupt('return');case 3:if(latest){_context3.next=10;break;}_context3.t0=source.toLowerCase();_context3.next=_context3.t0==='npm'?7:_context3.t0==='packal'?8:9;break;case 7:return _context3.abrupt('return',this.checkNpm(interval,pkg));case 8:return _context3.abrupt('return',this.checkPackal(interval));case 9:return _context3.abrupt('return');case 10:latest.checkedOnline=false;return _context3.abrupt('return',latest);case 12:case'end':return _context3.stop();}}},_callee3,this);}));function checkUpdates(_x5,_x6){return _ref3.apply(this,arguments);}return checkUpdates;}()}]);return Updater;}();module.exports=new Updater(); +'use strict';var _regenerator=require('babel-runtime/regenerator');var _regenerator2=_interopRequireDefault(_regenerator);var _asyncToGenerator2=require('babel-runtime/helpers/asyncToGenerator');var _asyncToGenerator3=_interopRequireDefault(_asyncToGenerator2);var _classCallCheck2=require('babel-runtime/helpers/classCallCheck');var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=require('babel-runtime/helpers/createClass');var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var CacheConf=require('cache-conf');var moment=require('moment');var readPkg=require('read-pkg');var latestVersion=require('latest-version');var got=require('got');var Updater=function(){function Updater(){(0,_classCallCheck3.default)(this,Updater);this.cache=new CacheConf({configName:'updater',cwd:process.env.alfred_workflow_cache,version:process.env.alfred_workflow_version});}(0,_createClass3.default)(Updater,[{key:'checkPackal',value:function(){var _ref=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(interval){var bundleId,searchParam,pkgUrl,latest;return _regenerator2.default.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:bundleId=process.env.alfred_workflow_bundleid;if(bundleId){_context.next=4;break;}console.error('No bundle ID, not checking Packal for updates.');return _context.abrupt('return');case 4:searchParam=encodeURIComponent('site:packal.org '+bundleId);pkgUrl=`https://encrypted.google.com/search?sourceid=chrome&ie=UTF-8&q=${searchParam}&btnI`;_context.next=8;return got(`https://github.com/packal/repository/blob/master/${bundleId}/appcast.xml`).catch(function(err){console.error(err);return false;}).then(function(response){var versionMatches=response.body.match(/(.+)<\/version>/);if(versionMatches&&versionMatches.length>0){return{version:versionMatches[1],url:pkgUrl,checkedOnline:false};}return false;});case 8:latest=_context.sent;this.cache.set('latest_version_packal',latest,{maxAge:interval.as('milliseconds')});if(latest){latest.checkedOnline=true;}return _context.abrupt('return',latest);case 12:case'end':return _context.stop();}}},_callee,this);}));function checkPackal(_x){return _ref.apply(this,arguments);}return checkPackal;}()},{key:'checkNpm',value:function(){var _ref2=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(interval){var pkg=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var url,latest;return _regenerator2.default.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.t0=pkg;if(_context2.t0){_context2.next=5;break;}_context2.next=4;return readPkg(process.cwd());case 4:_context2.t0=_context2.sent;case 5:pkg=_context2.t0;url=`https://www.npmjs.com/package/${pkg.name}`;_context2.next=9;return latestVersion(pkg.name).catch(function(err){console.error(err);return false;}).then(function(version){return{version:version,url:url,checkedOnline:false};});case 9:latest=_context2.sent;this.cache.set('latest_version_npm',latest,{maxAge:interval.as('milliseconds')});if(latest){latest.checkedOnline=true;}return _context2.abrupt('return',latest);case 13:case'end':return _context2.stop();}}},_callee2,this);}));function checkNpm(_x3){return _ref2.apply(this,arguments);}return checkNpm;}()},{key:'checkUpdates',value:function(){var _ref3=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(source,interval){var pkg=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var latest;return _regenerator2.default.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:latest=this.cache.get(`latest_version_${source}`);if(!(latest===false)){_context3.next=3;break;}return _context3.abrupt('return');case 3:if(latest){_context3.next=10;break;}_context3.t0=source.toLowerCase();_context3.next=_context3.t0==='npm'?7:_context3.t0==='packal'?8:9;break;case 7:return _context3.abrupt('return',this.checkNpm(interval,pkg));case 8:return _context3.abrupt('return',this.checkPackal(interval));case 9:return _context3.abrupt('return');case 10:latest.checkedOnline=false;return _context3.abrupt('return',latest);case 12:case'end':return _context3.stop();}}},_callee3,this);}));function checkUpdates(_x5,_x6){return _ref3.apply(this,arguments);}return checkUpdates;}()}]);return Updater;}();module.exports=new Updater(); //# sourceMappingURL=updater.js.map diff --git a/updater.js.flow b/updater.js.flow index 17cf4a9..f90613b 100644 --- a/updater.js.flow +++ b/updater.js.flow @@ -60,7 +60,7 @@ class Updater { if (versionMatches && versionMatches.length > 0) { return { - version: response.body.match(/(.+)<\/version>/)[1], + version: versionMatches[1], url: pkgUrl, checkedOnline: false }; diff --git a/updater.js.map b/updater.js.map index 96f6b30..929166a 100644 --- a/updater.js.map +++ b/updater.js.map @@ -1 +1 @@ -{"version":3,"sources":["updater.js.flow"],"names":["CacheConf","require","moment","readPkg","latestVersion","got","Updater","cache","configName","cwd","process","env","alfred_workflow_cache","version","alfred_workflow_version","interval","bundleId","alfred_workflow_bundleid","console","error","searchParam","encodeURIComponent","pkgUrl","catch","err","then","versionMatches","response","body","match","length","url","checkedOnline","latest","set","maxAge","as","pkg","name","source","get","toLowerCase","checkNpm","checkPackal","module","exports"],"mappings":"klBAEA,GAAMA,WAAYC,QAAQ,YAAR,CAAlB,CACA,GAAMC,QAASD,QAAQ,QAAR,CAAf,CACA,GAAME,SAAUF,QAAQ,UAAR,CAAhB,CACA,GAAMG,eAAgBH,QAAQ,gBAAR,CAAtB,CACA,GAAMI,KAAMJ,QAAQ,KAAR,CAAZ,C,GAKMK,Q,YAYF,kBAAc,4CAEV,KAAKC,KAAL,CAAa,GAAIP,UAAJ,CAAc,CACvBQ,WAAY,SADW,CAEvBC,IAAKC,QAAQC,GAAR,CAAYC,qBAFM,CAGvBC,QAASH,QAAQC,GAAR,CAAYG,uBAHE,CAAd,CAAb,CAKH,C,2JAOiBC,Q,2JAERC,Q,CAAoBN,QAAQC,GAAR,CAAYM,wB,IAEjCD,Q,yBACDE,QAAQC,KAAR,CAAc,gDAAd,E,wCAKEC,W,CAAsBC,mBAAmB,mBAAqBL,QAAxC,C,CACtBM,M,CAAkB,kEAAiEF,WAAY,O,uBAElFf,KAAK,oDAAmDW,QAAS,cAAjE,EACdO,KADc,CACR,aAAO,CAEVL,QAAQC,KAAR,CAAcK,GAAd,EACA,MAAO,MAAP,CACH,CALc,EAMdC,IANc,CAMT,kBAAY,CAEd,GAAIC,gBAAiBC,SAASC,IAAT,CAAcC,KAAd,CAAoB,0BAApB,CAArB,CAEA,GAAIH,gBAAkBA,eAAeI,MAAf,CAAwB,CAA9C,CAAiD,CAC7C,MAAO,CACHjB,QAASc,SAASC,IAAT,CAAcC,KAAd,CAAoB,0BAApB,EAAgD,CAAhD,CADN,CAEHE,IAAKT,MAFF,CAGHU,cAAe,KAHZ,CAAP,CAKH,CAED,MAAO,MAAP,CACH,CAnBc,C,QAAfC,M,eAsBJ,KAAK1B,KAAL,CAAW2B,GAAX,CAAe,uBAAf,CAAwCD,MAAxC,CAAgD,CAC5CE,OAAQpB,SAASqB,EAAT,CAAY,cAAZ,CADoC,CAAhD,EAKA,GAAIH,MAAJ,CAAY,CACRA,OAAOD,aAAP,CAAuB,IAAvB,CACH,C,gCAEMC,M,4QAQIlB,Q,KAA2BsB,I,2DAAe,I,mJAE/CA,G,iEAAalC,SAAQO,QAAQD,GAAR,EAAR,C,2CAAnB4B,G,cAGMN,G,CAAe,iCAAgCM,IAAIC,IAAK,E,wBAG3ClC,eAAciC,IAAIC,IAAlB,EACdf,KADc,CACR,aAAO,CAEVL,QAAQC,KAAR,CAAcK,GAAd,EACA,MAAO,MAAP,CACH,CALc,EAMdC,IANc,CAMT,wBAAY,CACdZ,QAASA,OADK,CAEdkB,IAAKA,GAFS,CAGdC,cAAe,KAHD,CAAZ,EANS,C,QAAfC,M,gBAaJ,KAAK1B,KAAL,CAAW2B,GAAX,CAAe,oBAAf,CAAqCD,MAArC,CAA6C,CACzCE,OAAQpB,SAASqB,EAAT,CAAY,cAAZ,CADiC,CAA7C,EAKA,GAAIH,MAAJ,CAAY,CACRA,OAAOD,aAAP,CAAuB,IAAvB,CACH,C,iCAEMC,M,8QASQM,M,CAAgBxB,Q,KAA2BsB,I,2DAAe,I,kIAErEJ,M,CAAS,KAAK1B,KAAL,CAAWiC,GAAX,CAAgB,kBAAiBD,MAAO,EAAxC,C,MAGTN,SAAW,K,uEAKVA,M,wCACOM,OAAOE,WAAP,E,+BACC,K,kBAEA,Q,mDADM,KAAKC,QAAL,CAAc3B,QAAd,CAAwBsB,GAAxB,C,0CAEA,KAAKM,WAAL,CAAiB5B,QAAjB,C,mDAOnBkB,OAAOD,aAAP,CAAuB,KAAvB,C,iCAEOC,M,oLAIfW,OAAOC,OAAP,CAAiB,GAAIvC,QAAJ,EAAjB","file":"updater.js","sourcesContent":["// @flow\n\nconst CacheConf = require('cache-conf');\nconst moment = require('moment');\nconst readPkg = require('read-pkg');\nconst latestVersion = require('latest-version');\nconst got = require('got');\n\n/**\n * Hugo Updater\n */\nclass Updater {\n /**\n * Cache store\n * @see https://www.npmjs.com/package/cache-conf\n * @type {CacheConf}\n */\n cache: CacheConf;\n\n /**\n * Hugo updater constructor\n * @constructor\n */\n constructor() {\n // Configure cache store\n this.cache = new CacheConf({\n configName: 'updater',\n cwd: process.env.alfred_workflow_cache,\n version: process.env.alfred_workflow_version\n });\n }\n\n /**\n * Check Packal for updates\n * @param {moment.Duration} interval Update interval\n * @async\n */\n async checkPackal(interval: moment.Duration): Object {\n // Bundle ID\n const bundleId: ?string = process.env.alfred_workflow_bundleid;\n\n if (!bundleId) {\n console.error('No bundle ID, not checking Packal for updates.');\n return;\n }\n\n // Packal URL\n const searchParam: string = encodeURIComponent('site:packal.org ' + bundleId);\n const pkgUrl: string = `https://encrypted.google.com/search?sourceid=chrome&ie=UTF-8&q=${searchParam}&btnI`;\n\n let latest = await got(`https://github.com/packal/repository/blob/master/${bundleId}/appcast.xml`)\n .catch(err => {\n // Set to false on failure (e.g. not found).\n console.error(err);\n return false;\n })\n .then(response => {\n // Get version from XML\n let versionMatches = response.body.match(/(.+)<\\/version>/);\n\n if (versionMatches && versionMatches.length > 0) {\n return {\n version: response.body.match(/(.+)<\\/version>/)[1],\n url: pkgUrl,\n checkedOnline: false\n };\n }\n\n return false;\n });\n\n // Cache results\n this.cache.set('latest_version_packal', latest, {\n maxAge: interval.as('milliseconds')\n });\n\n // Got it from the internet!\n if (latest) {\n latest.checkedOnline = true;\n }\n\n return latest;\n }\n\n /**\n * Check NPM for updates\n * @param {moment.Duration} interval Update interval\n * @async\n */\n async checkNpm(interval: moment.Duration, pkg: ?Object = null): Object {\n // Get details from package.json\n pkg = pkg || await readPkg(process.cwd());\n\n // NPM URL\n const url: string = `https://www.npmjs.com/package/${pkg.name}`;\n\n // Check for updates\n let latest = await latestVersion(pkg.name)\n .catch(err => {\n // Set to false on failure (e.g. not found).\n console.error(err);\n return false;\n })\n .then(version => ({\n version: version,\n url: url,\n checkedOnline: false\n }));\n\n // Cache results\n this.cache.set('latest_version_npm', latest, {\n maxAge: interval.as('milliseconds')\n });\n\n // Got it from the internet!\n if (latest) {\n latest.checkedOnline = true;\n }\n\n return latest;\n }\n\n /**\n * Check for updates\n * @param {string} source Update source (npm or packal)\n * @param {moment.Duration} interval Update interval\n * @async\n */\n async checkUpdates(source: string, interval: moment.Duration, pkg: ?Object = null): Object {\n // Get from cache\n let latest = this.cache.get(`latest_version_${source}`);\n\n // Don't do anything if the package wasn't found last time.\n if (latest === false) {\n return;\n }\n\n // Check for updates online\n if (!latest) {\n switch (source.toLowerCase()) {\n case 'npm':\n return this.checkNpm(interval, pkg);\n case 'packal':\n return this.checkPackal(interval);\n default:\n return;\n }\n }\n\n // Got it from cache!\n latest.checkedOnline = false;\n\n return latest;\n }\n}\n\nmodule.exports = new Updater();\n"]} \ No newline at end of file +{"version":3,"sources":["updater.js.flow"],"names":["CacheConf","require","moment","readPkg","latestVersion","got","Updater","cache","configName","cwd","process","env","alfred_workflow_cache","version","alfred_workflow_version","interval","bundleId","alfred_workflow_bundleid","console","error","searchParam","encodeURIComponent","pkgUrl","catch","err","then","versionMatches","response","body","match","length","url","checkedOnline","latest","set","maxAge","as","pkg","name","source","get","toLowerCase","checkNpm","checkPackal","module","exports"],"mappings":"klBAEA,GAAMA,WAAYC,QAAQ,YAAR,CAAlB,CACA,GAAMC,QAASD,QAAQ,QAAR,CAAf,CACA,GAAME,SAAUF,QAAQ,UAAR,CAAhB,CACA,GAAMG,eAAgBH,QAAQ,gBAAR,CAAtB,CACA,GAAMI,KAAMJ,QAAQ,KAAR,CAAZ,C,GAKMK,Q,YAYF,kBAAc,4CAEV,KAAKC,KAAL,CAAa,GAAIP,UAAJ,CAAc,CACvBQ,WAAY,SADW,CAEvBC,IAAKC,QAAQC,GAAR,CAAYC,qBAFM,CAGvBC,QAASH,QAAQC,GAAR,CAAYG,uBAHE,CAAd,CAAb,CAKH,C,2JAOiBC,Q,2JAERC,Q,CAAoBN,QAAQC,GAAR,CAAYM,wB,IAEjCD,Q,yBACDE,QAAQC,KAAR,CAAc,gDAAd,E,wCAKEC,W,CAAsBC,mBAAmB,mBAAqBL,QAAxC,C,CACtBM,M,CAAkB,kEAAiEF,WAAY,O,uBAElFf,KAAK,oDAAmDW,QAAS,cAAjE,EACdO,KADc,CACR,aAAO,CAEVL,QAAQC,KAAR,CAAcK,GAAd,EACA,MAAO,MAAP,CACH,CALc,EAMdC,IANc,CAMT,kBAAY,CAEd,GAAIC,gBAAiBC,SAASC,IAAT,CAAcC,KAAd,CAAoB,0BAApB,CAArB,CAEA,GAAIH,gBAAkBA,eAAeI,MAAf,CAAwB,CAA9C,CAAiD,CAC7C,MAAO,CACHjB,QAASa,eAAe,CAAf,CADN,CAEHK,IAAKT,MAFF,CAGHU,cAAe,KAHZ,CAAP,CAKH,CAED,MAAO,MAAP,CACH,CAnBc,C,QAAfC,M,eAsBJ,KAAK1B,KAAL,CAAW2B,GAAX,CAAe,uBAAf,CAAwCD,MAAxC,CAAgD,CAC5CE,OAAQpB,SAASqB,EAAT,CAAY,cAAZ,CADoC,CAAhD,EAKA,GAAIH,MAAJ,CAAY,CACRA,OAAOD,aAAP,CAAuB,IAAvB,CACH,C,gCAEMC,M,4QAQIlB,Q,KAA2BsB,I,2DAAe,I,mJAE/CA,G,iEAAalC,SAAQO,QAAQD,GAAR,EAAR,C,2CAAnB4B,G,cAGMN,G,CAAe,iCAAgCM,IAAIC,IAAK,E,wBAG3ClC,eAAciC,IAAIC,IAAlB,EACdf,KADc,CACR,aAAO,CAEVL,QAAQC,KAAR,CAAcK,GAAd,EACA,MAAO,MAAP,CACH,CALc,EAMdC,IANc,CAMT,wBAAY,CACdZ,QAASA,OADK,CAEdkB,IAAKA,GAFS,CAGdC,cAAe,KAHD,CAAZ,EANS,C,QAAfC,M,gBAaJ,KAAK1B,KAAL,CAAW2B,GAAX,CAAe,oBAAf,CAAqCD,MAArC,CAA6C,CACzCE,OAAQpB,SAASqB,EAAT,CAAY,cAAZ,CADiC,CAA7C,EAKA,GAAIH,MAAJ,CAAY,CACRA,OAAOD,aAAP,CAAuB,IAAvB,CACH,C,iCAEMC,M,8QASQM,M,CAAgBxB,Q,KAA2BsB,I,2DAAe,I,kIAErEJ,M,CAAS,KAAK1B,KAAL,CAAWiC,GAAX,CAAgB,kBAAiBD,MAAO,EAAxC,C,MAGTN,SAAW,K,uEAKVA,M,wCACOM,OAAOE,WAAP,E,+BACC,K,kBAEA,Q,mDADM,KAAKC,QAAL,CAAc3B,QAAd,CAAwBsB,GAAxB,C,0CAEA,KAAKM,WAAL,CAAiB5B,QAAjB,C,mDAOnBkB,OAAOD,aAAP,CAAuB,KAAvB,C,iCAEOC,M,oLAIfW,OAAOC,OAAP,CAAiB,GAAIvC,QAAJ,EAAjB","file":"updater.js","sourcesContent":["// @flow\n\nconst CacheConf = require('cache-conf');\nconst moment = require('moment');\nconst readPkg = require('read-pkg');\nconst latestVersion = require('latest-version');\nconst got = require('got');\n\n/**\n * Hugo Updater\n */\nclass Updater {\n /**\n * Cache store\n * @see https://www.npmjs.com/package/cache-conf\n * @type {CacheConf}\n */\n cache: CacheConf;\n\n /**\n * Hugo updater constructor\n * @constructor\n */\n constructor() {\n // Configure cache store\n this.cache = new CacheConf({\n configName: 'updater',\n cwd: process.env.alfred_workflow_cache,\n version: process.env.alfred_workflow_version\n });\n }\n\n /**\n * Check Packal for updates\n * @param {moment.Duration} interval Update interval\n * @async\n */\n async checkPackal(interval: moment.Duration): Object {\n // Bundle ID\n const bundleId: ?string = process.env.alfred_workflow_bundleid;\n\n if (!bundleId) {\n console.error('No bundle ID, not checking Packal for updates.');\n return;\n }\n\n // Packal URL\n const searchParam: string = encodeURIComponent('site:packal.org ' + bundleId);\n const pkgUrl: string = `https://encrypted.google.com/search?sourceid=chrome&ie=UTF-8&q=${searchParam}&btnI`;\n\n let latest = await got(`https://github.com/packal/repository/blob/master/${bundleId}/appcast.xml`)\n .catch(err => {\n // Set to false on failure (e.g. not found).\n console.error(err);\n return false;\n })\n .then(response => {\n // Get version from XML\n let versionMatches = response.body.match(/(.+)<\\/version>/);\n\n if (versionMatches && versionMatches.length > 0) {\n return {\n version: versionMatches[1],\n url: pkgUrl,\n checkedOnline: false\n };\n }\n\n return false;\n });\n\n // Cache results\n this.cache.set('latest_version_packal', latest, {\n maxAge: interval.as('milliseconds')\n });\n\n // Got it from the internet!\n if (latest) {\n latest.checkedOnline = true;\n }\n\n return latest;\n }\n\n /**\n * Check NPM for updates\n * @param {moment.Duration} interval Update interval\n * @async\n */\n async checkNpm(interval: moment.Duration, pkg: ?Object = null): Object {\n // Get details from package.json\n pkg = pkg || await readPkg(process.cwd());\n\n // NPM URL\n const url: string = `https://www.npmjs.com/package/${pkg.name}`;\n\n // Check for updates\n let latest = await latestVersion(pkg.name)\n .catch(err => {\n // Set to false on failure (e.g. not found).\n console.error(err);\n return false;\n })\n .then(version => ({\n version: version,\n url: url,\n checkedOnline: false\n }));\n\n // Cache results\n this.cache.set('latest_version_npm', latest, {\n maxAge: interval.as('milliseconds')\n });\n\n // Got it from the internet!\n if (latest) {\n latest.checkedOnline = true;\n }\n\n return latest;\n }\n\n /**\n * Check for updates\n * @param {string} source Update source (npm or packal)\n * @param {moment.Duration} interval Update interval\n * @async\n */\n async checkUpdates(source: string, interval: moment.Duration, pkg: ?Object = null): Object {\n // Get from cache\n let latest = this.cache.get(`latest_version_${source}`);\n\n // Don't do anything if the package wasn't found last time.\n if (latest === false) {\n return;\n }\n\n // Check for updates online\n if (!latest) {\n switch (source.toLowerCase()) {\n case 'npm':\n return this.checkNpm(interval, pkg);\n case 'packal':\n return this.checkPackal(interval);\n default:\n return;\n }\n }\n\n // Got it from cache!\n latest.checkedOnline = false;\n\n return latest;\n }\n}\n\nmodule.exports = new Updater();\n"]} \ No newline at end of file