├── .eslintrc.json ├── .gitignore ├── .npmignore ├── .tern-project ├── LICENSE ├── README.md ├── bower.json ├── build ├── avocado.js ├── avocado_es.js ├── avocado_umd.js └── avocado_umd.min.js ├── index.js ├── package-lock.json ├── package.json ├── rollup.config.js ├── rollup_es.config.js ├── rollup_umd.config.js ├── src ├── avocado.js └── findByType.js └── test ├── .eslintrc.json └── avocado-test.js /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "globals": { 7 | "ENV": true 8 | }, 9 | "extends": "eslint:recommended", 10 | "parserOptions": { 11 | "sourceType": "module" 12 | }, 13 | "rules": { 14 | "indent": [ 15 | "error", 16 | 2 17 | ], 18 | "linebreak-style": [ 19 | "error", 20 | "unix" 21 | ], 22 | "quotes": [ 23 | "error", 24 | "single" 25 | ], 26 | "semi": [ 27 | "error", 28 | "always" 29 | ] 30 | } 31 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # nyc test coverage 18 | .nyc_output 19 | 20 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 21 | .grunt 22 | 23 | # node-waf configuration 24 | .lock-wscript 25 | 26 | # Compiled binary addons (http://nodejs.org/api/addons.html) 27 | build/Release 28 | 29 | # Dependency directories 30 | node_modules 31 | jspm_packages 32 | 33 | # Optional npm cache directory 34 | .npm 35 | 36 | # Optional REPL history 37 | .node_repl_history 38 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | build/*.zip 2 | test/ 3 | -------------------------------------------------------------------------------- /.tern-project: -------------------------------------------------------------------------------- 1 | { 2 | "ecmaVersion": 5, 3 | "libs": [ 4 | "browser", 5 | "underscore" 6 | ], 7 | "plugins": { 8 | "complete_strings": { 9 | "maxLength": 15 10 | }, 11 | "modules": { 12 | "dontLoad": "", 13 | "load": "", 14 | "modules": "" 15 | }, 16 | "es_modules": {} 17 | } 18 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Walter Rafelsberger 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Status of this module 2 | This module is **deprecated**. It is no longer active and not recommended for use. It is left here for reference. 3 | 4 | # avocado 5 | An opinionated approach to have type safety in native JavaScript. Also a tasty fruit with megafauna dispersal syndrome, leading to an evolutionary anachronism. 6 | 7 | For an introduction have a look here: 8 | http://www.rafelsberger.at/blog/2015/04/an-opinionated-approach-to-have-type-safety-in-native-javascript/ 9 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "avocado-type-checker", 3 | "description": "A javascript type checker. Also a tasty fruit with megafauna dispersal syndrome, leading to an evolutionary anachronism.", 4 | "main": "build/avocado.js", 5 | "authors": [ 6 | "Walter Rafelsberger" 7 | ], 8 | "license": "MIT", 9 | "keywords": [ 10 | "javascript", 11 | "types" 12 | ], 13 | "homepage": "https://github.com/walterra/avocado", 14 | "ignore": [ 15 | "**/.*", 16 | "node_modules", 17 | "bower_components", 18 | "test", 19 | "tests" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /build/avocado.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var findByType = function(arr, typeName) { 4 | if (!Array.isArray(arr)) { 5 | throw new Error('arr needs to be an array'); 6 | } 7 | 8 | if (typeof typeName !== 'string') { 9 | throw new Error('typeName needs to be string'); 10 | } 11 | 12 | for (var i = 0; i < arr.length; i++) { 13 | if (arr[i].typeName === typeName) { 14 | return i; 15 | } 16 | } 17 | 18 | return -1; 19 | }; 20 | 21 | var types = []; 22 | 23 | // av's main function is a getter-setter-combo 24 | // it expects a default value and a validation function 25 | // the validation function should return the validated value or throw an exception 26 | // it shouldn't return 'false' for non-validating values 27 | var av = function (i, validate){ 28 | // we offer a shortcut to get types when only one argument is provided 29 | if (arguments.length === 1) { 30 | return av.type(i); 31 | } 32 | 33 | // we store the value in private scope 34 | var _i; 35 | // our getter-setter-combo including validation 36 | var me = function (d){ 37 | if (!arguments.length) { 38 | if (typeof _i === 'object'){ 39 | var o = {}; 40 | for (var prop in _i){ 41 | o[prop] = _i[prop](); 42 | } 43 | return o; 44 | } else { 45 | return _i; 46 | } 47 | } 48 | _i = validate(d); 49 | // if _i is an object we expose the getter/setter methods of its attributes 50 | if (typeof _i === 'object'){ 51 | for (var prop_object in _i){ 52 | me[prop_object] = _i[prop_object]; 53 | } 54 | } 55 | }; 56 | // we initialize the getter-setter-combo with the provided value 57 | me(i); 58 | // return the getter-setter-combo (allows chaining, among other things) 59 | return me; 60 | }; 61 | 62 | av.type = function() { 63 | var typeIndex; 64 | var typeName; 65 | var typeData; 66 | 67 | if (arguments.length === 0) { 68 | throw new Error('av.type requires at least one argument.'); 69 | } 70 | 71 | typeName = arguments[0]; 72 | typeIndex = findByType(types, typeName); 73 | 74 | // get a type by name 75 | if (arguments.length === 1) { 76 | if (typeIndex === -1) { 77 | throw new Error('type not found'); 78 | } 79 | return types[typeIndex].type; 80 | // set a type by name 81 | } else if (arguments.length === 2) { 82 | typeData = arguments[1]; 83 | if (typeIndex !== -1) { 84 | throw new Error('type specification already exists.'); 85 | } 86 | if (typeof typeData === 'function') { 87 | types.push({ 88 | typeName: typeName, 89 | type: function(i) { 90 | return av(i, typeData); 91 | } 92 | }); 93 | } else if (typeof typeData === 'object') { 94 | types.push({ 95 | typeName: typeName, 96 | type: function(i) { 97 | return av(i, function(d) { 98 | if (typeof d === 'object'){ 99 | var _i = {}; 100 | for (var prop in typeData){ 101 | _i[prop] = av.type(typeData[prop])(d[prop]); 102 | } 103 | return _i; 104 | } else throw 'not a valid object'; 105 | }); 106 | } 107 | }); 108 | } else { 109 | throw new Error('argument 2 typeData must be either a function or object.'); 110 | } 111 | 112 | return av; 113 | } 114 | 115 | throw new Error('invalid amount of arguments for av.type()'); 116 | }; 117 | 118 | // isValid allows you to test if a value (v) is a valid type (t) 119 | av.isValid = function (t, v){ 120 | try { 121 | t(v); 122 | return true; 123 | } catch (err) { 124 | return false; 125 | } 126 | }; 127 | 128 | // a boolean type and its validation function 129 | av.type('boolean', function (d){ 130 | if (typeof d === 'boolean') { 131 | return d; 132 | } else throw new Error('d is not boolean'); 133 | }); 134 | 135 | // http://stackoverflow.com/a/20779354/2266116 136 | var isInteger = function (nVal){ 137 | return typeof nVal === 'number' && isFinite(nVal) && nVal > -9007199254740992 && nVal < 9007199254740992 && Math.floor(nVal) === nVal; 138 | }; 139 | 140 | av.type('int', function(d) { 141 | if(!isInteger(d)) { 142 | throw new Error('d is not an integer'); 143 | } 144 | return d; 145 | }); 146 | 147 | av.type('float', function(d){ 148 | if(typeof d !== 'number') { 149 | throw 'd is not a number'; 150 | } 151 | return d; 152 | }); 153 | 154 | av.type('string', function (d){ 155 | if (typeof d === 'string') { 156 | return d; 157 | } else throw 'd is not a string'; 158 | }); 159 | 160 | av.type('collection', function (d){ 161 | if (d && d.constructor === Array) { 162 | return d; 163 | } else throw 'not an array'; 164 | }); 165 | 166 | module.exports = av; 167 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjpudWxsLCJzb3VyY2VzIjpbIi4uL3NyYy9maW5kQnlUeXBlLmpzIiwiLi4vc3JjL2F2b2NhZG8uanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYXJyLCB0eXBlTmFtZSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignYXJyIG5lZWRzIHRvIGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGVOYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcigndHlwZU5hbWUgbmVlZHMgdG8gYmUgc3RyaW5nJyk7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnJbaV0udHlwZU5hbWUgPT09IHR5cGVOYW1lKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG4iLCJpbXBvcnQgeyBkZWZhdWx0IGFzIGZpbmRCeVR5cGUgfSBmcm9tICcuL2ZpbmRCeVR5cGUnO1xuXG52YXIgdHlwZXMgPSBbXTtcblxuLy8gYXYncyBtYWluIGZ1bmN0aW9uIGlzIGEgZ2V0dGVyLXNldHRlci1jb21ib1xuLy8gaXQgZXhwZWN0cyBhIGRlZmF1bHQgdmFsdWUgYW5kIGEgdmFsaWRhdGlvbiBmdW5jdGlvblxuLy8gdGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0aGUgdmFsaWRhdGVkIHZhbHVlIG9yIHRocm93IGFuIGV4Y2VwdGlvblxuLy8gaXQgc2hvdWxkbid0IHJldHVybiAnZmFsc2UnIGZvciBub24tdmFsaWRhdGluZyB2YWx1ZXNcbnZhciBhdiA9IGZ1bmN0aW9uIChpLCB2YWxpZGF0ZSl7XG4gIC8vIHdlIG9mZmVyIGEgc2hvcnRjdXQgdG8gZ2V0IHR5cGVzIHdoZW4gb25seSBvbmUgYXJndW1lbnQgaXMgcHJvdmlkZWRcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gYXYudHlwZShpKTtcbiAgfVxuXG4gIC8vIHdlIHN0b3JlIHRoZSB2YWx1ZSBpbiBwcml2YXRlIHNjb3BlXG4gIHZhciBfaTtcbiAgLy8gb3VyIGdldHRlci1zZXR0ZXItY29tYm8gaW5jbHVkaW5nIHZhbGlkYXRpb25cbiAgdmFyIG1lID0gZnVuY3Rpb24gKGQpe1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgaWYgKHR5cGVvZiBfaSA9PT0gJ29iamVjdCcpe1xuICAgICAgICB2YXIgbyA9IHt9O1xuICAgICAgICBmb3IgKHZhciBwcm9wIGluIF9pKXtcbiAgICAgICAgICBvW3Byb3BdID0gX2lbcHJvcF0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBfaTtcbiAgICAgIH1cbiAgICB9XG4gICAgX2kgPSB2YWxpZGF0ZShkKTtcbiAgICAvLyBpZiBfaSBpcyBhbiBvYmplY3Qgd2UgZXhwb3NlIHRoZSBnZXR0ZXIvc2V0dGVyIG1ldGhvZHMgb2YgaXRzIGF0dHJpYnV0ZXNcbiAgICBpZiAodHlwZW9mIF9pID09PSAnb2JqZWN0Jyl7XG4gICAgICBmb3IgKHZhciBwcm9wX29iamVjdCBpbiBfaSl7XG4gICAgICAgIG1lW3Byb3Bfb2JqZWN0XSA9IF9pW3Byb3Bfb2JqZWN0XTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8vIHdlIGluaXRpYWxpemUgdGhlIGdldHRlci1zZXR0ZXItY29tYm8gd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWVcbiAgbWUoaSk7XG4gIC8vIHJldHVybiB0aGUgZ2V0dGVyLXNldHRlci1jb21ibyAoYWxsb3dzIGNoYWluaW5nLCBhbW9uZyBvdGhlciB0aGluZ3MpXG4gIHJldHVybiBtZTtcbn07XG5cbmF2LnR5cGUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHR5cGVJbmRleDtcbiAgdmFyIHR5cGVOYW1lO1xuICB2YXIgdHlwZURhdGE7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2F2LnR5cGUgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LicpO1xuICB9XG5cbiAgdHlwZU5hbWUgPSBhcmd1bWVudHNbMF07XG4gIHR5cGVJbmRleCA9IGZpbmRCeVR5cGUodHlwZXMsIHR5cGVOYW1lKTtcblxuICAvLyBnZXQgYSB0eXBlIGJ5IG5hbWVcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICBpZiAodHlwZUluZGV4ID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0eXBlIG5vdCBmb3VuZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZXNbdHlwZUluZGV4XS50eXBlO1xuICAvLyBzZXQgYSB0eXBlIGJ5IG5hbWVcbiAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgdHlwZURhdGEgPSBhcmd1bWVudHNbMV07XG4gICAgaWYgKHR5cGVJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHlwZSBzcGVjaWZpY2F0aW9uIGFscmVhZHkgZXhpc3RzLicpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHR5cGVEYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0eXBlcy5wdXNoKHtcbiAgICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lLFxuICAgICAgICB0eXBlOiBmdW5jdGlvbihpKSB7XG4gICAgICAgICAgcmV0dXJuIGF2KGksIHR5cGVEYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZURhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICB0eXBlcy5wdXNoKHtcbiAgICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lLFxuICAgICAgICB0eXBlOiBmdW5jdGlvbihpKSB7XG4gICAgICAgICAgcmV0dXJuIGF2KGksIGZ1bmN0aW9uKGQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZCA9PT0gJ29iamVjdCcpe1xuICAgICAgICAgICAgICB2YXIgX2kgPSB7fTtcbiAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiB0eXBlRGF0YSl7XG4gICAgICAgICAgICAgICAgX2lbcHJvcF0gPSBhdi50eXBlKHR5cGVEYXRhW3Byb3BdKShkW3Byb3BdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gX2k7XG4gICAgICAgICAgICB9IGVsc2UgdGhyb3cgJ25vdCBhIHZhbGlkIG9iamVjdCc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FyZ3VtZW50IDIgdHlwZURhdGEgbXVzdCBiZSBlaXRoZXIgYSBmdW5jdGlvbiBvciBvYmplY3QuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF2O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGFtb3VudCBvZiBhcmd1bWVudHMgZm9yIGF2LnR5cGUoKScpO1xufTtcblxuLy8gaXNWYWxpZCBhbGxvd3MgeW91IHRvIHRlc3QgaWYgYSB2YWx1ZSAodikgaXMgYSB2YWxpZCB0eXBlICh0KVxuYXYuaXNWYWxpZCA9IGZ1bmN0aW9uICh0LCB2KXtcbiAgdHJ5IHtcbiAgICB0KHYpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8vIGEgYm9vbGVhbiB0eXBlIGFuZCBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvblxuYXYudHlwZSgnYm9vbGVhbicsIGZ1bmN0aW9uIChkKXtcbiAgaWYgKHR5cGVvZiBkID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gZDtcbiAgfSBlbHNlIHRocm93IG5ldyBFcnJvcignZCBpcyBub3QgYm9vbGVhbicpO1xufSk7XG5cbi8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIwNzc5MzU0LzIyNjYxMTZcbnZhciBpc0ludGVnZXIgPSBmdW5jdGlvbiAoblZhbCl7XG4gIHJldHVybiB0eXBlb2YgblZhbCA9PT0gJ251bWJlcicgJiYgaXNGaW5pdGUoblZhbCkgJiYgblZhbCA+IC05MDA3MTk5MjU0NzQwOTkyICYmIG5WYWwgPCA5MDA3MTk5MjU0NzQwOTkyICYmIE1hdGguZmxvb3IoblZhbCkgPT09IG5WYWw7XG59O1xuXG5hdi50eXBlKCdpbnQnLCBmdW5jdGlvbihkKSB7XG4gIGlmKCFpc0ludGVnZXIoZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2QgaXMgbm90IGFuIGludGVnZXInKTtcbiAgfVxuICByZXR1cm4gZDtcbn0pO1xuXG5hdi50eXBlKCdmbG9hdCcsIGZ1bmN0aW9uKGQpe1xuICBpZih0eXBlb2YgZCAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyAnZCBpcyBub3QgYSBudW1iZXInO1xuICB9XG4gIHJldHVybiBkO1xufSk7XG5cbmF2LnR5cGUoJ3N0cmluZycsIGZ1bmN0aW9uIChkKXtcbiAgaWYgKHR5cGVvZiBkID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkO1xuICB9IGVsc2UgdGhyb3cgJ2QgaXMgbm90IGEgc3RyaW5nJztcbn0pO1xuXG5hdi50eXBlKCdjb2xsZWN0aW9uJywgZnVuY3Rpb24gKGQpe1xuICBpZiAoZCAmJiBkLmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xuICAgIHJldHVybiBkO1xuICB9IGVsc2UgdGhyb3cgJ25vdCBhbiBhcnJheSc7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgYXY7XG5cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlCQUFlLFNBQVMsR0FBRyxFQUFFLFFBQVEsRUFBRTtFQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7R0FDN0M7O0VBRUQsSUFBSSxPQUFPLFFBQVEsS0FBSyxR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 168 | -------------------------------------------------------------------------------- /build/avocado_es.js: -------------------------------------------------------------------------------- 1 | var findByType = function(arr, typeName) { 2 | if (!Array.isArray(arr)) { 3 | throw new Error('arr needs to be an array'); 4 | } 5 | 6 | if (typeof typeName !== 'string') { 7 | throw new Error('typeName needs to be string'); 8 | } 9 | 10 | for (var i = 0; i < arr.length; i++) { 11 | if (arr[i].typeName === typeName) { 12 | return i; 13 | } 14 | } 15 | 16 | return -1; 17 | }; 18 | 19 | var types = []; 20 | 21 | // av's main function is a getter-setter-combo 22 | // it expects a default value and a validation function 23 | // the validation function should return the validated value or throw an exception 24 | // it shouldn't return 'false' for non-validating values 25 | var av = function (i, validate){ 26 | // we offer a shortcut to get types when only one argument is provided 27 | if (arguments.length === 1) { 28 | return av.type(i); 29 | } 30 | 31 | // we store the value in private scope 32 | var _i; 33 | // our getter-setter-combo including validation 34 | var me = function (d){ 35 | if (!arguments.length) { 36 | if (typeof _i === 'object'){ 37 | var o = {}; 38 | for (var prop in _i){ 39 | o[prop] = _i[prop](); 40 | } 41 | return o; 42 | } else { 43 | return _i; 44 | } 45 | } 46 | _i = validate(d); 47 | // if _i is an object we expose the getter/setter methods of its attributes 48 | if (typeof _i === 'object'){ 49 | for (var prop_object in _i){ 50 | me[prop_object] = _i[prop_object]; 51 | } 52 | } 53 | }; 54 | // we initialize the getter-setter-combo with the provided value 55 | me(i); 56 | // return the getter-setter-combo (allows chaining, among other things) 57 | return me; 58 | }; 59 | 60 | av.type = function() { 61 | var typeIndex; 62 | var typeName; 63 | var typeData; 64 | 65 | if (arguments.length === 0) { 66 | throw new Error('av.type requires at least one argument.'); 67 | } 68 | 69 | typeName = arguments[0]; 70 | typeIndex = findByType(types, typeName); 71 | 72 | // get a type by name 73 | if (arguments.length === 1) { 74 | if (typeIndex === -1) { 75 | throw new Error('type not found'); 76 | } 77 | return types[typeIndex].type; 78 | // set a type by name 79 | } else if (arguments.length === 2) { 80 | typeData = arguments[1]; 81 | if (typeIndex !== -1) { 82 | throw new Error('type specification already exists.'); 83 | } 84 | if (typeof typeData === 'function') { 85 | types.push({ 86 | typeName: typeName, 87 | type: function(i) { 88 | return av(i, typeData); 89 | } 90 | }); 91 | } else if (typeof typeData === 'object') { 92 | types.push({ 93 | typeName: typeName, 94 | type: function(i) { 95 | return av(i, function(d) { 96 | if (typeof d === 'object'){ 97 | var _i = {}; 98 | for (var prop in typeData){ 99 | _i[prop] = av.type(typeData[prop])(d[prop]); 100 | } 101 | return _i; 102 | } else throw 'not a valid object'; 103 | }); 104 | } 105 | }); 106 | } else { 107 | throw new Error('argument 2 typeData must be either a function or object.'); 108 | } 109 | 110 | return av; 111 | } 112 | 113 | throw new Error('invalid amount of arguments for av.type()'); 114 | }; 115 | 116 | // isValid allows you to test if a value (v) is a valid type (t) 117 | av.isValid = function (t, v){ 118 | try { 119 | t(v); 120 | return true; 121 | } catch (err) { 122 | return false; 123 | } 124 | }; 125 | 126 | // a boolean type and its validation function 127 | av.type('boolean', function (d){ 128 | if (typeof d === 'boolean') { 129 | return d; 130 | } else throw new Error('d is not boolean'); 131 | }); 132 | 133 | // http://stackoverflow.com/a/20779354/2266116 134 | var isInteger = function (nVal){ 135 | return typeof nVal === 'number' && isFinite(nVal) && nVal > -9007199254740992 && nVal < 9007199254740992 && Math.floor(nVal) === nVal; 136 | }; 137 | 138 | av.type('int', function(d) { 139 | if(!isInteger(d)) { 140 | throw new Error('d is not an integer'); 141 | } 142 | return d; 143 | }); 144 | 145 | av.type('float', function(d){ 146 | if(typeof d !== 'number') { 147 | throw 'd is not a number'; 148 | } 149 | return d; 150 | }); 151 | 152 | av.type('string', function (d){ 153 | if (typeof d === 'string') { 154 | return d; 155 | } else throw 'd is not a string'; 156 | }); 157 | 158 | av.type('collection', function (d){ 159 | if (d && d.constructor === Array) { 160 | return d; 161 | } else throw 'not an array'; 162 | }); 163 | 164 | export default av; 165 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjpudWxsLCJzb3VyY2VzIjpbIi4uL3NyYy9maW5kQnlUeXBlLmpzIiwiLi4vc3JjL2F2b2NhZG8uanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYXJyLCB0eXBlTmFtZSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignYXJyIG5lZWRzIHRvIGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGVOYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcigndHlwZU5hbWUgbmVlZHMgdG8gYmUgc3RyaW5nJyk7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnJbaV0udHlwZU5hbWUgPT09IHR5cGVOYW1lKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG4iLCJpbXBvcnQgeyBkZWZhdWx0IGFzIGZpbmRCeVR5cGUgfSBmcm9tICcuL2ZpbmRCeVR5cGUnO1xuXG52YXIgdHlwZXMgPSBbXTtcblxuLy8gYXYncyBtYWluIGZ1bmN0aW9uIGlzIGEgZ2V0dGVyLXNldHRlci1jb21ib1xuLy8gaXQgZXhwZWN0cyBhIGRlZmF1bHQgdmFsdWUgYW5kIGEgdmFsaWRhdGlvbiBmdW5jdGlvblxuLy8gdGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0aGUgdmFsaWRhdGVkIHZhbHVlIG9yIHRocm93IGFuIGV4Y2VwdGlvblxuLy8gaXQgc2hvdWxkbid0IHJldHVybiAnZmFsc2UnIGZvciBub24tdmFsaWRhdGluZyB2YWx1ZXNcbnZhciBhdiA9IGZ1bmN0aW9uIChpLCB2YWxpZGF0ZSl7XG4gIC8vIHdlIG9mZmVyIGEgc2hvcnRjdXQgdG8gZ2V0IHR5cGVzIHdoZW4gb25seSBvbmUgYXJndW1lbnQgaXMgcHJvdmlkZWRcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gYXYudHlwZShpKTtcbiAgfVxuXG4gIC8vIHdlIHN0b3JlIHRoZSB2YWx1ZSBpbiBwcml2YXRlIHNjb3BlXG4gIHZhciBfaTtcbiAgLy8gb3VyIGdldHRlci1zZXR0ZXItY29tYm8gaW5jbHVkaW5nIHZhbGlkYXRpb25cbiAgdmFyIG1lID0gZnVuY3Rpb24gKGQpe1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgaWYgKHR5cGVvZiBfaSA9PT0gJ29iamVjdCcpe1xuICAgICAgICB2YXIgbyA9IHt9O1xuICAgICAgICBmb3IgKHZhciBwcm9wIGluIF9pKXtcbiAgICAgICAgICBvW3Byb3BdID0gX2lbcHJvcF0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBfaTtcbiAgICAgIH1cbiAgICB9XG4gICAgX2kgPSB2YWxpZGF0ZShkKTtcbiAgICAvLyBpZiBfaSBpcyBhbiBvYmplY3Qgd2UgZXhwb3NlIHRoZSBnZXR0ZXIvc2V0dGVyIG1ldGhvZHMgb2YgaXRzIGF0dHJpYnV0ZXNcbiAgICBpZiAodHlwZW9mIF9pID09PSAnb2JqZWN0Jyl7XG4gICAgICBmb3IgKHZhciBwcm9wX29iamVjdCBpbiBfaSl7XG4gICAgICAgIG1lW3Byb3Bfb2JqZWN0XSA9IF9pW3Byb3Bfb2JqZWN0XTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8vIHdlIGluaXRpYWxpemUgdGhlIGdldHRlci1zZXR0ZXItY29tYm8gd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWVcbiAgbWUoaSk7XG4gIC8vIHJldHVybiB0aGUgZ2V0dGVyLXNldHRlci1jb21ibyAoYWxsb3dzIGNoYWluaW5nLCBhbW9uZyBvdGhlciB0aGluZ3MpXG4gIHJldHVybiBtZTtcbn07XG5cbmF2LnR5cGUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHR5cGVJbmRleDtcbiAgdmFyIHR5cGVOYW1lO1xuICB2YXIgdHlwZURhdGE7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2F2LnR5cGUgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LicpO1xuICB9XG5cbiAgdHlwZU5hbWUgPSBhcmd1bWVudHNbMF07XG4gIHR5cGVJbmRleCA9IGZpbmRCeVR5cGUodHlwZXMsIHR5cGVOYW1lKTtcblxuICAvLyBnZXQgYSB0eXBlIGJ5IG5hbWVcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICBpZiAodHlwZUluZGV4ID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0eXBlIG5vdCBmb3VuZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZXNbdHlwZUluZGV4XS50eXBlO1xuICAvLyBzZXQgYSB0eXBlIGJ5IG5hbWVcbiAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgdHlwZURhdGEgPSBhcmd1bWVudHNbMV07XG4gICAgaWYgKHR5cGVJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHlwZSBzcGVjaWZpY2F0aW9uIGFscmVhZHkgZXhpc3RzLicpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHR5cGVEYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0eXBlcy5wdXNoKHtcbiAgICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lLFxuICAgICAgICB0eXBlOiBmdW5jdGlvbihpKSB7XG4gICAgICAgICAgcmV0dXJuIGF2KGksIHR5cGVEYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZURhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICB0eXBlcy5wdXNoKHtcbiAgICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lLFxuICAgICAgICB0eXBlOiBmdW5jdGlvbihpKSB7XG4gICAgICAgICAgcmV0dXJuIGF2KGksIGZ1bmN0aW9uKGQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZCA9PT0gJ29iamVjdCcpe1xuICAgICAgICAgICAgICB2YXIgX2kgPSB7fTtcbiAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiB0eXBlRGF0YSl7XG4gICAgICAgICAgICAgICAgX2lbcHJvcF0gPSBhdi50eXBlKHR5cGVEYXRhW3Byb3BdKShkW3Byb3BdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gX2k7XG4gICAgICAgICAgICB9IGVsc2UgdGhyb3cgJ25vdCBhIHZhbGlkIG9iamVjdCc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FyZ3VtZW50IDIgdHlwZURhdGEgbXVzdCBiZSBlaXRoZXIgYSBmdW5jdGlvbiBvciBvYmplY3QuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF2O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGFtb3VudCBvZiBhcmd1bWVudHMgZm9yIGF2LnR5cGUoKScpO1xufTtcblxuLy8gaXNWYWxpZCBhbGxvd3MgeW91IHRvIHRlc3QgaWYgYSB2YWx1ZSAodikgaXMgYSB2YWxpZCB0eXBlICh0KVxuYXYuaXNWYWxpZCA9IGZ1bmN0aW9uICh0LCB2KXtcbiAgdHJ5IHtcbiAgICB0KHYpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8vIGEgYm9vbGVhbiB0eXBlIGFuZCBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvblxuYXYudHlwZSgnYm9vbGVhbicsIGZ1bmN0aW9uIChkKXtcbiAgaWYgKHR5cGVvZiBkID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gZDtcbiAgfSBlbHNlIHRocm93IG5ldyBFcnJvcignZCBpcyBub3QgYm9vbGVhbicpO1xufSk7XG5cbi8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIwNzc5MzU0LzIyNjYxMTZcbnZhciBpc0ludGVnZXIgPSBmdW5jdGlvbiAoblZhbCl7XG4gIHJldHVybiB0eXBlb2YgblZhbCA9PT0gJ251bWJlcicgJiYgaXNGaW5pdGUoblZhbCkgJiYgblZhbCA+IC05MDA3MTk5MjU0NzQwOTkyICYmIG5WYWwgPCA5MDA3MTk5MjU0NzQwOTkyICYmIE1hdGguZmxvb3IoblZhbCkgPT09IG5WYWw7XG59O1xuXG5hdi50eXBlKCdpbnQnLCBmdW5jdGlvbihkKSB7XG4gIGlmKCFpc0ludGVnZXIoZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2QgaXMgbm90IGFuIGludGVnZXInKTtcbiAgfVxuICByZXR1cm4gZDtcbn0pO1xuXG5hdi50eXBlKCdmbG9hdCcsIGZ1bmN0aW9uKGQpe1xuICBpZih0eXBlb2YgZCAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyAnZCBpcyBub3QgYSBudW1iZXInO1xuICB9XG4gIHJldHVybiBkO1xufSk7XG5cbmF2LnR5cGUoJ3N0cmluZycsIGZ1bmN0aW9uIChkKXtcbiAgaWYgKHR5cGVvZiBkID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkO1xuICB9IGVsc2UgdGhyb3cgJ2QgaXMgbm90IGEgc3RyaW5nJztcbn0pO1xuXG5hdi50eXBlKCdjb2xsZWN0aW9uJywgZnVuY3Rpb24gKGQpe1xuICBpZiAoZCAmJiBkLmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xuICAgIHJldHVybiBkO1xuICB9IGVsc2UgdGhyb3cgJ25vdCBhbiBhcnJheSc7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgYXY7XG5cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBZSxTQUFTLEdBQUcsRUFBRSxRQUFRLEVBQUU7RUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0dBQzdDOztFQUVELElBQUksT0FBTyxRQUFRLEtBQUssUUFB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 166 | -------------------------------------------------------------------------------- /build/avocado_umd.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 3 | typeof define === 'function' && define.amd ? define(factory) : 4 | (global.avocado = factory()); 5 | }(this, (function () { 'use strict'; 6 | 7 | var findByType = function(arr, typeName) { 8 | if (!Array.isArray(arr)) { 9 | throw new Error('arr needs to be an array'); 10 | } 11 | 12 | if (typeof typeName !== 'string') { 13 | throw new Error('typeName needs to be string'); 14 | } 15 | 16 | for (var i = 0; i < arr.length; i++) { 17 | if (arr[i].typeName === typeName) { 18 | return i; 19 | } 20 | } 21 | 22 | return -1; 23 | }; 24 | 25 | var types = []; 26 | 27 | // av's main function is a getter-setter-combo 28 | // it expects a default value and a validation function 29 | // the validation function should return the validated value or throw an exception 30 | // it shouldn't return 'false' for non-validating values 31 | var av = function (i, validate){ 32 | // we offer a shortcut to get types when only one argument is provided 33 | if (arguments.length === 1) { 34 | return av.type(i); 35 | } 36 | 37 | // we store the value in private scope 38 | var _i; 39 | // our getter-setter-combo including validation 40 | var me = function (d){ 41 | if (!arguments.length) { 42 | if (typeof _i === 'object'){ 43 | var o = {}; 44 | for (var prop in _i){ 45 | o[prop] = _i[prop](); 46 | } 47 | return o; 48 | } else { 49 | return _i; 50 | } 51 | } 52 | _i = validate(d); 53 | // if _i is an object we expose the getter/setter methods of its attributes 54 | if (typeof _i === 'object'){ 55 | for (var prop_object in _i){ 56 | me[prop_object] = _i[prop_object]; 57 | } 58 | } 59 | }; 60 | // we initialize the getter-setter-combo with the provided value 61 | me(i); 62 | // return the getter-setter-combo (allows chaining, among other things) 63 | return me; 64 | }; 65 | 66 | av.type = function() { 67 | var typeIndex; 68 | var typeName; 69 | var typeData; 70 | 71 | if (arguments.length === 0) { 72 | throw new Error('av.type requires at least one argument.'); 73 | } 74 | 75 | typeName = arguments[0]; 76 | typeIndex = findByType(types, typeName); 77 | 78 | // get a type by name 79 | if (arguments.length === 1) { 80 | if (typeIndex === -1) { 81 | throw new Error('type not found'); 82 | } 83 | return types[typeIndex].type; 84 | // set a type by name 85 | } else if (arguments.length === 2) { 86 | typeData = arguments[1]; 87 | if (typeIndex !== -1) { 88 | throw new Error('type specification already exists.'); 89 | } 90 | if (typeof typeData === 'function') { 91 | types.push({ 92 | typeName: typeName, 93 | type: function(i) { 94 | return av(i, typeData); 95 | } 96 | }); 97 | } else if (typeof typeData === 'object') { 98 | types.push({ 99 | typeName: typeName, 100 | type: function(i) { 101 | return av(i, function(d) { 102 | if (typeof d === 'object'){ 103 | var _i = {}; 104 | for (var prop in typeData){ 105 | _i[prop] = av.type(typeData[prop])(d[prop]); 106 | } 107 | return _i; 108 | } else throw 'not a valid object'; 109 | }); 110 | } 111 | }); 112 | } else { 113 | throw new Error('argument 2 typeData must be either a function or object.'); 114 | } 115 | 116 | return av; 117 | } 118 | 119 | throw new Error('invalid amount of arguments for av.type()'); 120 | }; 121 | 122 | // isValid allows you to test if a value (v) is a valid type (t) 123 | av.isValid = function (t, v){ 124 | try { 125 | t(v); 126 | return true; 127 | } catch (err) { 128 | return false; 129 | } 130 | }; 131 | 132 | // a boolean type and its validation function 133 | av.type('boolean', function (d){ 134 | if (typeof d === 'boolean') { 135 | return d; 136 | } else throw new Error('d is not boolean'); 137 | }); 138 | 139 | // http://stackoverflow.com/a/20779354/2266116 140 | var isInteger = function (nVal){ 141 | return typeof nVal === 'number' && isFinite(nVal) && nVal > -9007199254740992 && nVal < 9007199254740992 && Math.floor(nVal) === nVal; 142 | }; 143 | 144 | av.type('int', function(d) { 145 | if(!isInteger(d)) { 146 | throw new Error('d is not an integer'); 147 | } 148 | return d; 149 | }); 150 | 151 | av.type('float', function(d){ 152 | if(typeof d !== 'number') { 153 | throw 'd is not a number'; 154 | } 155 | return d; 156 | }); 157 | 158 | av.type('string', function (d){ 159 | if (typeof d === 'string') { 160 | return d; 161 | } else throw 'd is not a string'; 162 | }); 163 | 164 | av.type('collection', function (d){ 165 | if (d && d.constructor === Array) { 166 | return d; 167 | } else throw 'not an array'; 168 | }); 169 | 170 | return av; 171 | 172 | }))); 173 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjpudWxsLCJzb3VyY2VzIjpbIi4uL3NyYy9maW5kQnlUeXBlLmpzIiwiLi4vc3JjL2F2b2NhZG8uanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYXJyLCB0eXBlTmFtZSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignYXJyIG5lZWRzIHRvIGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGVOYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcigndHlwZU5hbWUgbmVlZHMgdG8gYmUgc3RyaW5nJyk7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnJbaV0udHlwZU5hbWUgPT09IHR5cGVOYW1lKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG4iLCJpbXBvcnQgeyBkZWZhdWx0IGFzIGZpbmRCeVR5cGUgfSBmcm9tICcuL2ZpbmRCeVR5cGUnO1xuXG52YXIgdHlwZXMgPSBbXTtcblxuLy8gYXYncyBtYWluIGZ1bmN0aW9uIGlzIGEgZ2V0dGVyLXNldHRlci1jb21ib1xuLy8gaXQgZXhwZWN0cyBhIGRlZmF1bHQgdmFsdWUgYW5kIGEgdmFsaWRhdGlvbiBmdW5jdGlvblxuLy8gdGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0aGUgdmFsaWRhdGVkIHZhbHVlIG9yIHRocm93IGFuIGV4Y2VwdGlvblxuLy8gaXQgc2hvdWxkbid0IHJldHVybiAnZmFsc2UnIGZvciBub24tdmFsaWRhdGluZyB2YWx1ZXNcbnZhciBhdiA9IGZ1bmN0aW9uIChpLCB2YWxpZGF0ZSl7XG4gIC8vIHdlIG9mZmVyIGEgc2hvcnRjdXQgdG8gZ2V0IHR5cGVzIHdoZW4gb25seSBvbmUgYXJndW1lbnQgaXMgcHJvdmlkZWRcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gYXYudHlwZShpKTtcbiAgfVxuXG4gIC8vIHdlIHN0b3JlIHRoZSB2YWx1ZSBpbiBwcml2YXRlIHNjb3BlXG4gIHZhciBfaTtcbiAgLy8gb3VyIGdldHRlci1zZXR0ZXItY29tYm8gaW5jbHVkaW5nIHZhbGlkYXRpb25cbiAgdmFyIG1lID0gZnVuY3Rpb24gKGQpe1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgaWYgKHR5cGVvZiBfaSA9PT0gJ29iamVjdCcpe1xuICAgICAgICB2YXIgbyA9IHt9O1xuICAgICAgICBmb3IgKHZhciBwcm9wIGluIF9pKXtcbiAgICAgICAgICBvW3Byb3BdID0gX2lbcHJvcF0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBfaTtcbiAgICAgIH1cbiAgICB9XG4gICAgX2kgPSB2YWxpZGF0ZShkKTtcbiAgICAvLyBpZiBfaSBpcyBhbiBvYmplY3Qgd2UgZXhwb3NlIHRoZSBnZXR0ZXIvc2V0dGVyIG1ldGhvZHMgb2YgaXRzIGF0dHJpYnV0ZXNcbiAgICBpZiAodHlwZW9mIF9pID09PSAnb2JqZWN0Jyl7XG4gICAgICBmb3IgKHZhciBwcm9wX29iamVjdCBpbiBfaSl7XG4gICAgICAgIG1lW3Byb3Bfb2JqZWN0XSA9IF9pW3Byb3Bfb2JqZWN0XTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8vIHdlIGluaXRpYWxpemUgdGhlIGdldHRlci1zZXR0ZXItY29tYm8gd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWVcbiAgbWUoaSk7XG4gIC8vIHJldHVybiB0aGUgZ2V0dGVyLXNldHRlci1jb21ibyAoYWxsb3dzIGNoYWluaW5nLCBhbW9uZyBvdGhlciB0aGluZ3MpXG4gIHJldHVybiBtZTtcbn07XG5cbmF2LnR5cGUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHR5cGVJbmRleDtcbiAgdmFyIHR5cGVOYW1lO1xuICB2YXIgdHlwZURhdGE7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2F2LnR5cGUgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LicpO1xuICB9XG5cbiAgdHlwZU5hbWUgPSBhcmd1bWVudHNbMF07XG4gIHR5cGVJbmRleCA9IGZpbmRCeVR5cGUodHlwZXMsIHR5cGVOYW1lKTtcblxuICAvLyBnZXQgYSB0eXBlIGJ5IG5hbWVcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICBpZiAodHlwZUluZGV4ID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0eXBlIG5vdCBmb3VuZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZXNbdHlwZUluZGV4XS50eXBlO1xuICAvLyBzZXQgYSB0eXBlIGJ5IG5hbWVcbiAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgdHlwZURhdGEgPSBhcmd1bWVudHNbMV07XG4gICAgaWYgKHR5cGVJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHlwZSBzcGVjaWZpY2F0aW9uIGFscmVhZHkgZXhpc3RzLicpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHR5cGVEYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0eXBlcy5wdXNoKHtcbiAgICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lLFxuICAgICAgICB0eXBlOiBmdW5jdGlvbihpKSB7XG4gICAgICAgICAgcmV0dXJuIGF2KGksIHR5cGVEYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZURhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICB0eXBlcy5wdXNoKHtcbiAgICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lLFxuICAgICAgICB0eXBlOiBmdW5jdGlvbihpKSB7XG4gICAgICAgICAgcmV0dXJuIGF2KGksIGZ1bmN0aW9uKGQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZCA9PT0gJ29iamVjdCcpe1xuICAgICAgICAgICAgICB2YXIgX2kgPSB7fTtcbiAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiB0eXBlRGF0YSl7XG4gICAgICAgICAgICAgICAgX2lbcHJvcF0gPSBhdi50eXBlKHR5cGVEYXRhW3Byb3BdKShkW3Byb3BdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gX2k7XG4gICAgICAgICAgICB9IGVsc2UgdGhyb3cgJ25vdCBhIHZhbGlkIG9iamVjdCc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FyZ3VtZW50IDIgdHlwZURhdGEgbXVzdCBiZSBlaXRoZXIgYSBmdW5jdGlvbiBvciBvYmplY3QuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF2O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGFtb3VudCBvZiBhcmd1bWVudHMgZm9yIGF2LnR5cGUoKScpO1xufTtcblxuLy8gaXNWYWxpZCBhbGxvd3MgeW91IHRvIHRlc3QgaWYgYSB2YWx1ZSAodikgaXMgYSB2YWxpZCB0eXBlICh0KVxuYXYuaXNWYWxpZCA9IGZ1bmN0aW9uICh0LCB2KXtcbiAgdHJ5IHtcbiAgICB0KHYpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8vIGEgYm9vbGVhbiB0eXBlIGFuZCBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvblxuYXYudHlwZSgnYm9vbGVhbicsIGZ1bmN0aW9uIChkKXtcbiAgaWYgKHR5cGVvZiBkID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gZDtcbiAgfSBlbHNlIHRocm93IG5ldyBFcnJvcignZCBpcyBub3QgYm9vbGVhbicpO1xufSk7XG5cbi8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIwNzc5MzU0LzIyNjYxMTZcbnZhciBpc0ludGVnZXIgPSBmdW5jdGlvbiAoblZhbCl7XG4gIHJldHVybiB0eXBlb2YgblZhbCA9PT0gJ251bWJlcicgJiYgaXNGaW5pdGUoblZhbCkgJiYgblZhbCA+IC05MDA3MTk5MjU0NzQwOTkyICYmIG5WYWwgPCA5MDA3MTk5MjU0NzQwOTkyICYmIE1hdGguZmxvb3IoblZhbCkgPT09IG5WYWw7XG59O1xuXG5hdi50eXBlKCdpbnQnLCBmdW5jdGlvbihkKSB7XG4gIGlmKCFpc0ludGVnZXIoZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2QgaXMgbm90IGFuIGludGVnZXInKTtcbiAgfVxuICByZXR1cm4gZDtcbn0pO1xuXG5hdi50eXBlKCdmbG9hdCcsIGZ1bmN0aW9uKGQpe1xuICBpZih0eXBlb2YgZCAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyAnZCBpcyBub3QgYSBudW1iZXInO1xuICB9XG4gIHJldHVybiBkO1xufSk7XG5cbmF2LnR5cGUoJ3N0cmluZycsIGZ1bmN0aW9uIChkKXtcbiAgaWYgKHR5cGVvZiBkID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkO1xuICB9IGVsc2UgdGhyb3cgJ2QgaXMgbm90IGEgc3RyaW5nJztcbn0pO1xuXG5hdi50eXBlKCdjb2xsZWN0aW9uJywgZnVuY3Rpb24gKGQpe1xuICBpZiAoZCAmJiBkLmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xuICAgIHJldHVybiBkO1xuICB9IGVsc2UgdGhyb3cgJ25vdCBhbiBhcnJheSc7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgYXY7XG5cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpQkFBZSxTQUFTLEdBQUcsRUFBRSxRQUFRLEVBQUU7RUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0dBQzdDOztFQUVELElBQUksT0FBTyxRQUFRLEtB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 174 | -------------------------------------------------------------------------------- /build/avocado_umd.min.js: -------------------------------------------------------------------------------- 1 | !function(t,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):t.avocado=r()}(this,function(){"use strict";var t=function(t,r){if(!Array.isArray(t))throw new Error("arr needs to be an array");if("string"!=typeof r)throw new Error("typeName needs to be string");for(var e=0;e-9007199254740992&&t<9007199254740992&&Math.floor(t)===t};return e.type("int",function(t){if(!n(t))throw new Error("d is not an integer");return t}),e.type("float",function(t){if("number"!=typeof t)throw"d is not a number";return t}),e.type("string",function(t){if("string"==typeof t)return t;throw"d is not a string"}),e.type("collection",function(t){if(t&&t.constructor===Array)return t;throw"not an array"}),e}); -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | export {default} from './src/avocado'; 2 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "avocado-type-checker", 3 | "version": "1.0.0-alpha.7", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.0.0", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", 10 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.0.0" 14 | } 15 | }, 16 | "@babel/highlight": { 17 | "version": "7.0.0", 18 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", 19 | "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", 20 | "dev": true, 21 | "requires": { 22 | "chalk": "^2.0.0", 23 | "esutils": "^2.0.2", 24 | "js-tokens": "^4.0.0" 25 | } 26 | }, 27 | "acorn": { 28 | "version": "6.1.1", 29 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", 30 | "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", 31 | "dev": true 32 | }, 33 | "acorn-jsx": { 34 | "version": "5.0.1", 35 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", 36 | "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", 37 | "dev": true 38 | }, 39 | "ajv": { 40 | "version": "6.10.0", 41 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", 42 | "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", 43 | "dev": true, 44 | "requires": { 45 | "fast-deep-equal": "^2.0.1", 46 | "fast-json-stable-stringify": "^2.0.0", 47 | "json-schema-traverse": "^0.4.1", 48 | "uri-js": "^4.2.2" 49 | } 50 | }, 51 | "ajv-keywords": { 52 | "version": "1.5.1", 53 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", 54 | "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", 55 | "dev": true 56 | }, 57 | "align-text": { 58 | "version": "0.1.4", 59 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", 60 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", 61 | "dev": true, 62 | "requires": { 63 | "kind-of": "^3.0.2", 64 | "longest": "^1.0.1", 65 | "repeat-string": "^1.5.2" 66 | } 67 | }, 68 | "ansi-escapes": { 69 | "version": "3.2.0", 70 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 71 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 72 | "dev": true 73 | }, 74 | "ansi-regex": { 75 | "version": "3.0.0", 76 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 77 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 78 | "dev": true 79 | }, 80 | "ansi-styles": { 81 | "version": "3.2.1", 82 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 83 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 84 | "dev": true, 85 | "requires": { 86 | "color-convert": "^1.9.0" 87 | } 88 | }, 89 | "argparse": { 90 | "version": "1.0.10", 91 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 92 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 93 | "dev": true, 94 | "requires": { 95 | "sprintf-js": "~1.0.2" 96 | } 97 | }, 98 | "astral-regex": { 99 | "version": "1.0.0", 100 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 101 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 102 | "dev": true 103 | }, 104 | "babel-code-frame": { 105 | "version": "6.26.0", 106 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 107 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 108 | "dev": true, 109 | "requires": { 110 | "chalk": "^1.1.3", 111 | "esutils": "^2.0.2", 112 | "js-tokens": "^3.0.2" 113 | }, 114 | "dependencies": { 115 | "ansi-regex": { 116 | "version": "2.1.1", 117 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 118 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 119 | "dev": true 120 | }, 121 | "ansi-styles": { 122 | "version": "2.2.1", 123 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 124 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 125 | "dev": true 126 | }, 127 | "chalk": { 128 | "version": "1.1.3", 129 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 130 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 131 | "dev": true, 132 | "requires": { 133 | "ansi-styles": "^2.2.1", 134 | "escape-string-regexp": "^1.0.2", 135 | "has-ansi": "^2.0.0", 136 | "strip-ansi": "^3.0.0", 137 | "supports-color": "^2.0.0" 138 | } 139 | }, 140 | "js-tokens": { 141 | "version": "3.0.2", 142 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 143 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 144 | "dev": true 145 | }, 146 | "strip-ansi": { 147 | "version": "3.0.1", 148 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 149 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 150 | "dev": true, 151 | "requires": { 152 | "ansi-regex": "^2.0.0" 153 | } 154 | }, 155 | "supports-color": { 156 | "version": "2.0.0", 157 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 158 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 159 | "dev": true 160 | } 161 | } 162 | }, 163 | "balanced-match": { 164 | "version": "1.0.0", 165 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 166 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 167 | "dev": true 168 | }, 169 | "brace-expansion": { 170 | "version": "1.1.11", 171 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 172 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 173 | "dev": true, 174 | "requires": { 175 | "balanced-match": "^1.0.0", 176 | "concat-map": "0.0.1" 177 | } 178 | }, 179 | "browser-resolve": { 180 | "version": "1.11.3", 181 | "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", 182 | "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", 183 | "dev": true, 184 | "requires": { 185 | "resolve": "1.1.7" 186 | }, 187 | "dependencies": { 188 | "resolve": { 189 | "version": "1.1.7", 190 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", 191 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", 192 | "dev": true 193 | } 194 | } 195 | }, 196 | "buffer-from": { 197 | "version": "1.1.1", 198 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 199 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 200 | "dev": true 201 | }, 202 | "builtin-modules": { 203 | "version": "1.1.1", 204 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 205 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 206 | "dev": true 207 | }, 208 | "caller-path": { 209 | "version": "0.1.0", 210 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 211 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", 212 | "dev": true, 213 | "requires": { 214 | "callsites": "^0.2.0" 215 | }, 216 | "dependencies": { 217 | "callsites": { 218 | "version": "0.2.0", 219 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 220 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 221 | "dev": true 222 | } 223 | } 224 | }, 225 | "callsites": { 226 | "version": "3.1.0", 227 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 228 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 229 | "dev": true 230 | }, 231 | "camelcase": { 232 | "version": "1.2.1", 233 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 234 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", 235 | "dev": true 236 | }, 237 | "center-align": { 238 | "version": "0.1.3", 239 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", 240 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", 241 | "dev": true, 242 | "requires": { 243 | "align-text": "^0.1.3", 244 | "lazy-cache": "^1.0.3" 245 | } 246 | }, 247 | "chalk": { 248 | "version": "2.4.2", 249 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 250 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 251 | "dev": true, 252 | "requires": { 253 | "ansi-styles": "^3.2.1", 254 | "escape-string-regexp": "^1.0.5", 255 | "supports-color": "^5.3.0" 256 | } 257 | }, 258 | "chardet": { 259 | "version": "0.7.0", 260 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 261 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 262 | "dev": true 263 | }, 264 | "circular-json": { 265 | "version": "0.3.3", 266 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", 267 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", 268 | "dev": true 269 | }, 270 | "cli-cursor": { 271 | "version": "2.1.0", 272 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 273 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 274 | "dev": true, 275 | "requires": { 276 | "restore-cursor": "^2.0.0" 277 | } 278 | }, 279 | "cli-width": { 280 | "version": "2.2.0", 281 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 282 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 283 | "dev": true 284 | }, 285 | "cliui": { 286 | "version": "2.1.0", 287 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", 288 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", 289 | "dev": true, 290 | "requires": { 291 | "center-align": "^0.1.1", 292 | "right-align": "^0.1.1", 293 | "wordwrap": "0.0.2" 294 | }, 295 | "dependencies": { 296 | "wordwrap": { 297 | "version": "0.0.2", 298 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 299 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", 300 | "dev": true 301 | } 302 | } 303 | }, 304 | "co": { 305 | "version": "4.6.0", 306 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 307 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 308 | "dev": true 309 | }, 310 | "code-point-at": { 311 | "version": "1.1.0", 312 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 313 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 314 | "dev": true 315 | }, 316 | "color-convert": { 317 | "version": "1.9.3", 318 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 319 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 320 | "dev": true, 321 | "requires": { 322 | "color-name": "1.1.3" 323 | } 324 | }, 325 | "color-name": { 326 | "version": "1.1.3", 327 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 328 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 329 | "dev": true 330 | }, 331 | "concat-map": { 332 | "version": "0.0.1", 333 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 334 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 335 | "dev": true 336 | }, 337 | "concat-stream": { 338 | "version": "1.6.2", 339 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 340 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 341 | "dev": true, 342 | "requires": { 343 | "buffer-from": "^1.0.0", 344 | "inherits": "^2.0.3", 345 | "readable-stream": "^2.2.2", 346 | "typedarray": "^0.0.6" 347 | } 348 | }, 349 | "core-util-is": { 350 | "version": "1.0.2", 351 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 352 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 353 | "dev": true 354 | }, 355 | "cross-spawn": { 356 | "version": "6.0.5", 357 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 358 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 359 | "dev": true, 360 | "requires": { 361 | "nice-try": "^1.0.4", 362 | "path-key": "^2.0.1", 363 | "semver": "^5.5.0", 364 | "shebang-command": "^1.2.0", 365 | "which": "^1.2.9" 366 | } 367 | }, 368 | "d": { 369 | "version": "1.0.1", 370 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", 371 | "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", 372 | "dev": true, 373 | "requires": { 374 | "es5-ext": "^0.10.50", 375 | "type": "^1.0.1" 376 | } 377 | }, 378 | "debug": { 379 | "version": "4.1.1", 380 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 381 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 382 | "dev": true, 383 | "requires": { 384 | "ms": "^2.1.1" 385 | } 386 | }, 387 | "decamelize": { 388 | "version": "1.2.0", 389 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 390 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 391 | "dev": true 392 | }, 393 | "deep-equal": { 394 | "version": "1.0.1", 395 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 396 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", 397 | "dev": true 398 | }, 399 | "deep-is": { 400 | "version": "0.1.3", 401 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 402 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 403 | "dev": true 404 | }, 405 | "define-properties": { 406 | "version": "1.1.3", 407 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 408 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 409 | "dev": true, 410 | "requires": { 411 | "object-keys": "^1.0.12" 412 | } 413 | }, 414 | "doctrine": { 415 | "version": "3.0.0", 416 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 417 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 418 | "dev": true, 419 | "requires": { 420 | "esutils": "^2.0.2" 421 | } 422 | }, 423 | "emoji-regex": { 424 | "version": "7.0.3", 425 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 426 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 427 | "dev": true 428 | }, 429 | "es-abstract": { 430 | "version": "1.12.0", 431 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", 432 | "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", 433 | "dev": true, 434 | "requires": { 435 | "es-to-primitive": "^1.1.1", 436 | "function-bind": "^1.1.1", 437 | "has": "^1.0.1", 438 | "is-callable": "^1.1.3", 439 | "is-regex": "^1.0.4" 440 | } 441 | }, 442 | "es-to-primitive": { 443 | "version": "1.2.0", 444 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", 445 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", 446 | "dev": true, 447 | "requires": { 448 | "is-callable": "^1.1.4", 449 | "is-date-object": "^1.0.1", 450 | "is-symbol": "^1.0.2" 451 | } 452 | }, 453 | "es5-ext": { 454 | "version": "0.10.50", 455 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", 456 | "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", 457 | "dev": true, 458 | "requires": { 459 | "es6-iterator": "~2.0.3", 460 | "es6-symbol": "~3.1.1", 461 | "next-tick": "^1.0.0" 462 | } 463 | }, 464 | "es6-iterator": { 465 | "version": "2.0.3", 466 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 467 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 468 | "dev": true, 469 | "requires": { 470 | "d": "1", 471 | "es5-ext": "^0.10.35", 472 | "es6-symbol": "^3.1.1" 473 | } 474 | }, 475 | "es6-map": { 476 | "version": "0.1.5", 477 | "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", 478 | "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", 479 | "dev": true, 480 | "requires": { 481 | "d": "1", 482 | "es5-ext": "~0.10.14", 483 | "es6-iterator": "~2.0.1", 484 | "es6-set": "~0.1.5", 485 | "es6-symbol": "~3.1.1", 486 | "event-emitter": "~0.3.5" 487 | } 488 | }, 489 | "es6-set": { 490 | "version": "0.1.5", 491 | "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", 492 | "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", 493 | "dev": true, 494 | "requires": { 495 | "d": "1", 496 | "es5-ext": "~0.10.14", 497 | "es6-iterator": "~2.0.1", 498 | "es6-symbol": "3.1.1", 499 | "event-emitter": "~0.3.5" 500 | } 501 | }, 502 | "es6-symbol": { 503 | "version": "3.1.1", 504 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", 505 | "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", 506 | "dev": true, 507 | "requires": { 508 | "d": "1", 509 | "es5-ext": "~0.10.14" 510 | } 511 | }, 512 | "es6-weak-map": { 513 | "version": "2.0.3", 514 | "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", 515 | "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", 516 | "dev": true, 517 | "requires": { 518 | "d": "1", 519 | "es5-ext": "^0.10.46", 520 | "es6-iterator": "^2.0.3", 521 | "es6-symbol": "^3.1.1" 522 | } 523 | }, 524 | "escape-string-regexp": { 525 | "version": "1.0.5", 526 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 527 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 528 | "dev": true 529 | }, 530 | "escope": { 531 | "version": "3.6.0", 532 | "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", 533 | "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", 534 | "dev": true, 535 | "requires": { 536 | "es6-map": "^0.1.3", 537 | "es6-weak-map": "^2.0.1", 538 | "esrecurse": "^4.1.0", 539 | "estraverse": "^4.1.1" 540 | } 541 | }, 542 | "eslint": { 543 | "version": "6.0.1", 544 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.0.1.tgz", 545 | "integrity": "sha512-DyQRaMmORQ+JsWShYsSg4OPTjY56u1nCjAmICrE8vLWqyLKxhFXOthwMj1SA8xwfrv0CofLNVnqbfyhwCkaO0w==", 546 | "dev": true, 547 | "requires": { 548 | "@babel/code-frame": "^7.0.0", 549 | "ajv": "^6.10.0", 550 | "chalk": "^2.1.0", 551 | "cross-spawn": "^6.0.5", 552 | "debug": "^4.0.1", 553 | "doctrine": "^3.0.0", 554 | "eslint-scope": "^4.0.3", 555 | "eslint-utils": "^1.3.1", 556 | "eslint-visitor-keys": "^1.0.0", 557 | "espree": "^6.0.0", 558 | "esquery": "^1.0.1", 559 | "esutils": "^2.0.2", 560 | "file-entry-cache": "^5.0.1", 561 | "functional-red-black-tree": "^1.0.1", 562 | "glob-parent": "^3.1.0", 563 | "globals": "^11.7.0", 564 | "ignore": "^4.0.6", 565 | "import-fresh": "^3.0.0", 566 | "imurmurhash": "^0.1.4", 567 | "inquirer": "^6.2.2", 568 | "is-glob": "^4.0.0", 569 | "js-yaml": "^3.13.1", 570 | "json-stable-stringify-without-jsonify": "^1.0.1", 571 | "levn": "^0.3.0", 572 | "lodash": "^4.17.11", 573 | "minimatch": "^3.0.4", 574 | "mkdirp": "^0.5.1", 575 | "natural-compare": "^1.4.0", 576 | "optionator": "^0.8.2", 577 | "progress": "^2.0.0", 578 | "regexpp": "^2.0.1", 579 | "semver": "^5.5.1", 580 | "strip-ansi": "^4.0.0", 581 | "strip-json-comments": "^2.0.1", 582 | "table": "^5.2.3", 583 | "text-table": "^0.2.0" 584 | } 585 | }, 586 | "eslint-config-es5": { 587 | "version": "0.5.0", 588 | "resolved": "https://registry.npmjs.org/eslint-config-es5/-/eslint-config-es5-0.5.0.tgz", 589 | "integrity": "sha1-rDAPX3XEVpk62ry1zLTSjM8A4XU=", 590 | "dev": true 591 | }, 592 | "eslint-scope": { 593 | "version": "4.0.3", 594 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", 595 | "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", 596 | "dev": true, 597 | "requires": { 598 | "esrecurse": "^4.1.0", 599 | "estraverse": "^4.1.1" 600 | } 601 | }, 602 | "eslint-utils": { 603 | "version": "1.3.1", 604 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", 605 | "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", 606 | "dev": true 607 | }, 608 | "eslint-visitor-keys": { 609 | "version": "1.0.0", 610 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 611 | "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", 612 | "dev": true 613 | }, 614 | "espree": { 615 | "version": "6.0.0", 616 | "resolved": "https://registry.npmjs.org/espree/-/espree-6.0.0.tgz", 617 | "integrity": "sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==", 618 | "dev": true, 619 | "requires": { 620 | "acorn": "^6.0.7", 621 | "acorn-jsx": "^5.0.0", 622 | "eslint-visitor-keys": "^1.0.0" 623 | } 624 | }, 625 | "esprima": { 626 | "version": "4.0.1", 627 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 628 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 629 | "dev": true 630 | }, 631 | "esquery": { 632 | "version": "1.0.1", 633 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", 634 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", 635 | "dev": true, 636 | "requires": { 637 | "estraverse": "^4.0.0" 638 | } 639 | }, 640 | "esrecurse": { 641 | "version": "4.2.1", 642 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 643 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 644 | "dev": true, 645 | "requires": { 646 | "estraverse": "^4.1.0" 647 | } 648 | }, 649 | "estraverse": { 650 | "version": "4.2.0", 651 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 652 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 653 | "dev": true 654 | }, 655 | "estree-walker": { 656 | "version": "0.2.1", 657 | "resolved": "http://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", 658 | "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", 659 | "dev": true 660 | }, 661 | "esutils": { 662 | "version": "2.0.2", 663 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 664 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 665 | "dev": true 666 | }, 667 | "event-emitter": { 668 | "version": "0.3.5", 669 | "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", 670 | "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", 671 | "dev": true, 672 | "requires": { 673 | "d": "1", 674 | "es5-ext": "~0.10.14" 675 | } 676 | }, 677 | "exit-hook": { 678 | "version": "1.1.1", 679 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", 680 | "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", 681 | "dev": true 682 | }, 683 | "external-editor": { 684 | "version": "3.0.3", 685 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", 686 | "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", 687 | "dev": true, 688 | "requires": { 689 | "chardet": "^0.7.0", 690 | "iconv-lite": "^0.4.24", 691 | "tmp": "^0.0.33" 692 | } 693 | }, 694 | "fast-deep-equal": { 695 | "version": "2.0.1", 696 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 697 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", 698 | "dev": true 699 | }, 700 | "fast-json-stable-stringify": { 701 | "version": "2.0.0", 702 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 703 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 704 | "dev": true 705 | }, 706 | "fast-levenshtein": { 707 | "version": "2.0.6", 708 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 709 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 710 | "dev": true 711 | }, 712 | "figures": { 713 | "version": "2.0.0", 714 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 715 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 716 | "dev": true, 717 | "requires": { 718 | "escape-string-regexp": "^1.0.5" 719 | } 720 | }, 721 | "file-entry-cache": { 722 | "version": "5.0.1", 723 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 724 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 725 | "dev": true, 726 | "requires": { 727 | "flat-cache": "^2.0.1" 728 | } 729 | }, 730 | "flat-cache": { 731 | "version": "2.0.1", 732 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 733 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 734 | "dev": true, 735 | "requires": { 736 | "flatted": "^2.0.0", 737 | "rimraf": "2.6.3", 738 | "write": "1.0.3" 739 | } 740 | }, 741 | "flatted": { 742 | "version": "2.0.0", 743 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", 744 | "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", 745 | "dev": true 746 | }, 747 | "for-each": { 748 | "version": "0.3.3", 749 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 750 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 751 | "dev": true, 752 | "requires": { 753 | "is-callable": "^1.1.3" 754 | } 755 | }, 756 | "fs.realpath": { 757 | "version": "1.0.0", 758 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 759 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 760 | "dev": true 761 | }, 762 | "function-bind": { 763 | "version": "1.1.1", 764 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 765 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 766 | "dev": true 767 | }, 768 | "functional-red-black-tree": { 769 | "version": "1.0.1", 770 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 771 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 772 | "dev": true 773 | }, 774 | "generate-function": { 775 | "version": "2.3.1", 776 | "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", 777 | "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", 778 | "dev": true, 779 | "requires": { 780 | "is-property": "^1.0.2" 781 | } 782 | }, 783 | "generate-object-property": { 784 | "version": "1.2.0", 785 | "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", 786 | "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", 787 | "dev": true, 788 | "requires": { 789 | "is-property": "^1.0.0" 790 | } 791 | }, 792 | "glob": { 793 | "version": "7.1.4", 794 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", 795 | "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", 796 | "dev": true, 797 | "requires": { 798 | "fs.realpath": "^1.0.0", 799 | "inflight": "^1.0.4", 800 | "inherits": "2", 801 | "minimatch": "^3.0.4", 802 | "once": "^1.3.0", 803 | "path-is-absolute": "^1.0.0" 804 | } 805 | }, 806 | "glob-parent": { 807 | "version": "3.1.0", 808 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 809 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 810 | "dev": true, 811 | "requires": { 812 | "is-glob": "^3.1.0", 813 | "path-dirname": "^1.0.0" 814 | }, 815 | "dependencies": { 816 | "is-glob": { 817 | "version": "3.1.0", 818 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 819 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 820 | "dev": true, 821 | "requires": { 822 | "is-extglob": "^2.1.0" 823 | } 824 | } 825 | } 826 | }, 827 | "globals": { 828 | "version": "11.12.0", 829 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 830 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 831 | "dev": true 832 | }, 833 | "graceful-fs": { 834 | "version": "4.1.15", 835 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", 836 | "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", 837 | "dev": true 838 | }, 839 | "has": { 840 | "version": "1.0.3", 841 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 842 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 843 | "dev": true, 844 | "requires": { 845 | "function-bind": "^1.1.1" 846 | } 847 | }, 848 | "has-ansi": { 849 | "version": "2.0.0", 850 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 851 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 852 | "dev": true, 853 | "requires": { 854 | "ansi-regex": "^2.0.0" 855 | }, 856 | "dependencies": { 857 | "ansi-regex": { 858 | "version": "2.1.1", 859 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 860 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 861 | "dev": true 862 | } 863 | } 864 | }, 865 | "has-flag": { 866 | "version": "3.0.0", 867 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 868 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 869 | "dev": true 870 | }, 871 | "has-symbols": { 872 | "version": "1.0.0", 873 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", 874 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", 875 | "dev": true 876 | }, 877 | "iconv-lite": { 878 | "version": "0.4.24", 879 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 880 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 881 | "dev": true, 882 | "requires": { 883 | "safer-buffer": ">= 2.1.2 < 3" 884 | } 885 | }, 886 | "ignore": { 887 | "version": "4.0.6", 888 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 889 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 890 | "dev": true 891 | }, 892 | "import-fresh": { 893 | "version": "3.0.0", 894 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", 895 | "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", 896 | "dev": true, 897 | "requires": { 898 | "parent-module": "^1.0.0", 899 | "resolve-from": "^4.0.0" 900 | } 901 | }, 902 | "imurmurhash": { 903 | "version": "0.1.4", 904 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 905 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 906 | "dev": true 907 | }, 908 | "inflight": { 909 | "version": "1.0.6", 910 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 911 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 912 | "dev": true, 913 | "requires": { 914 | "once": "^1.3.0", 915 | "wrappy": "1" 916 | } 917 | }, 918 | "inherits": { 919 | "version": "2.0.3", 920 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 921 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 922 | "dev": true 923 | }, 924 | "inquirer": { 925 | "version": "6.4.1", 926 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", 927 | "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", 928 | "dev": true, 929 | "requires": { 930 | "ansi-escapes": "^3.2.0", 931 | "chalk": "^2.4.2", 932 | "cli-cursor": "^2.1.0", 933 | "cli-width": "^2.0.0", 934 | "external-editor": "^3.0.3", 935 | "figures": "^2.0.0", 936 | "lodash": "^4.17.11", 937 | "mute-stream": "0.0.7", 938 | "run-async": "^2.2.0", 939 | "rxjs": "^6.4.0", 940 | "string-width": "^2.1.0", 941 | "strip-ansi": "^5.1.0", 942 | "through": "^2.3.6" 943 | }, 944 | "dependencies": { 945 | "ansi-regex": { 946 | "version": "4.1.0", 947 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 948 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 949 | "dev": true 950 | }, 951 | "strip-ansi": { 952 | "version": "5.2.0", 953 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 954 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 955 | "dev": true, 956 | "requires": { 957 | "ansi-regex": "^4.1.0" 958 | } 959 | } 960 | } 961 | }, 962 | "interpret": { 963 | "version": "1.2.0", 964 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", 965 | "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", 966 | "dev": true 967 | }, 968 | "is-buffer": { 969 | "version": "1.1.6", 970 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 971 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 972 | "dev": true 973 | }, 974 | "is-callable": { 975 | "version": "1.1.4", 976 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 977 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", 978 | "dev": true 979 | }, 980 | "is-date-object": { 981 | "version": "1.0.1", 982 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 983 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 984 | "dev": true 985 | }, 986 | "is-extglob": { 987 | "version": "2.1.1", 988 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 989 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 990 | "dev": true 991 | }, 992 | "is-fullwidth-code-point": { 993 | "version": "2.0.0", 994 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 995 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 996 | "dev": true 997 | }, 998 | "is-glob": { 999 | "version": "4.0.1", 1000 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1001 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1002 | "dev": true, 1003 | "requires": { 1004 | "is-extglob": "^2.1.1" 1005 | } 1006 | }, 1007 | "is-my-ip-valid": { 1008 | "version": "1.0.0", 1009 | "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", 1010 | "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", 1011 | "dev": true 1012 | }, 1013 | "is-my-json-valid": { 1014 | "version": "2.20.0", 1015 | "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz", 1016 | "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==", 1017 | "dev": true, 1018 | "requires": { 1019 | "generate-function": "^2.0.0", 1020 | "generate-object-property": "^1.1.0", 1021 | "is-my-ip-valid": "^1.0.0", 1022 | "jsonpointer": "^4.0.0", 1023 | "xtend": "^4.0.0" 1024 | } 1025 | }, 1026 | "is-promise": { 1027 | "version": "2.1.0", 1028 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1029 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 1030 | "dev": true 1031 | }, 1032 | "is-property": { 1033 | "version": "1.0.2", 1034 | "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", 1035 | "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", 1036 | "dev": true 1037 | }, 1038 | "is-regex": { 1039 | "version": "1.0.4", 1040 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1041 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1042 | "dev": true, 1043 | "requires": { 1044 | "has": "^1.0.1" 1045 | } 1046 | }, 1047 | "is-resolvable": { 1048 | "version": "1.1.0", 1049 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", 1050 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", 1051 | "dev": true 1052 | }, 1053 | "is-symbol": { 1054 | "version": "1.0.2", 1055 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 1056 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", 1057 | "dev": true, 1058 | "requires": { 1059 | "has-symbols": "^1.0.0" 1060 | } 1061 | }, 1062 | "isarray": { 1063 | "version": "1.0.0", 1064 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1065 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1066 | "dev": true 1067 | }, 1068 | "isexe": { 1069 | "version": "2.0.0", 1070 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1071 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1072 | "dev": true 1073 | }, 1074 | "js-tokens": { 1075 | "version": "4.0.0", 1076 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1077 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1078 | "dev": true 1079 | }, 1080 | "js-yaml": { 1081 | "version": "3.13.1", 1082 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 1083 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 1084 | "dev": true, 1085 | "requires": { 1086 | "argparse": "^1.0.7", 1087 | "esprima": "^4.0.0" 1088 | } 1089 | }, 1090 | "json-schema-traverse": { 1091 | "version": "0.4.1", 1092 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1093 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1094 | "dev": true 1095 | }, 1096 | "json-stable-stringify": { 1097 | "version": "1.0.1", 1098 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 1099 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 1100 | "dev": true, 1101 | "requires": { 1102 | "jsonify": "~0.0.0" 1103 | } 1104 | }, 1105 | "json-stable-stringify-without-jsonify": { 1106 | "version": "1.0.1", 1107 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1108 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1109 | "dev": true 1110 | }, 1111 | "jsonify": { 1112 | "version": "0.0.0", 1113 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 1114 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 1115 | "dev": true 1116 | }, 1117 | "jsonpointer": { 1118 | "version": "4.0.1", 1119 | "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", 1120 | "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", 1121 | "dev": true 1122 | }, 1123 | "kind-of": { 1124 | "version": "3.2.2", 1125 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1126 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1127 | "dev": true, 1128 | "requires": { 1129 | "is-buffer": "^1.1.5" 1130 | } 1131 | }, 1132 | "lazy-cache": { 1133 | "version": "1.0.4", 1134 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", 1135 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", 1136 | "dev": true 1137 | }, 1138 | "levn": { 1139 | "version": "0.3.0", 1140 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1141 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1142 | "dev": true, 1143 | "requires": { 1144 | "prelude-ls": "~1.1.2", 1145 | "type-check": "~0.3.2" 1146 | } 1147 | }, 1148 | "lodash": { 1149 | "version": "4.17.11", 1150 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", 1151 | "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", 1152 | "dev": true 1153 | }, 1154 | "longest": { 1155 | "version": "1.0.1", 1156 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", 1157 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", 1158 | "dev": true 1159 | }, 1160 | "mimic-fn": { 1161 | "version": "1.2.0", 1162 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 1163 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 1164 | "dev": true 1165 | }, 1166 | "minimatch": { 1167 | "version": "3.0.4", 1168 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1169 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1170 | "dev": true, 1171 | "requires": { 1172 | "brace-expansion": "^1.1.7" 1173 | } 1174 | }, 1175 | "minimist": { 1176 | "version": "0.0.8", 1177 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1178 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1179 | "dev": true 1180 | }, 1181 | "mkdirp": { 1182 | "version": "0.5.1", 1183 | "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1184 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1185 | "dev": true, 1186 | "requires": { 1187 | "minimist": "0.0.8" 1188 | } 1189 | }, 1190 | "ms": { 1191 | "version": "2.1.2", 1192 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1193 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1194 | "dev": true 1195 | }, 1196 | "mute-stream": { 1197 | "version": "0.0.7", 1198 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 1199 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 1200 | "dev": true 1201 | }, 1202 | "natural-compare": { 1203 | "version": "1.4.0", 1204 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1205 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1206 | "dev": true 1207 | }, 1208 | "next-tick": { 1209 | "version": "1.0.0", 1210 | "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", 1211 | "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", 1212 | "dev": true 1213 | }, 1214 | "nice-try": { 1215 | "version": "1.0.5", 1216 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 1217 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 1218 | "dev": true 1219 | }, 1220 | "number-is-nan": { 1221 | "version": "1.0.1", 1222 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 1223 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 1224 | "dev": true 1225 | }, 1226 | "object-assign": { 1227 | "version": "4.1.1", 1228 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1229 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1230 | "dev": true 1231 | }, 1232 | "object-inspect": { 1233 | "version": "1.6.0", 1234 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", 1235 | "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", 1236 | "dev": true 1237 | }, 1238 | "object-keys": { 1239 | "version": "1.0.12", 1240 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", 1241 | "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", 1242 | "dev": true 1243 | }, 1244 | "once": { 1245 | "version": "1.4.0", 1246 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1247 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1248 | "dev": true, 1249 | "requires": { 1250 | "wrappy": "1" 1251 | } 1252 | }, 1253 | "onetime": { 1254 | "version": "2.0.1", 1255 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 1256 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 1257 | "dev": true, 1258 | "requires": { 1259 | "mimic-fn": "^1.0.0" 1260 | } 1261 | }, 1262 | "optionator": { 1263 | "version": "0.8.2", 1264 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 1265 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 1266 | "dev": true, 1267 | "requires": { 1268 | "deep-is": "~0.1.3", 1269 | "fast-levenshtein": "~2.0.4", 1270 | "levn": "~0.3.0", 1271 | "prelude-ls": "~1.1.2", 1272 | "type-check": "~0.3.2", 1273 | "wordwrap": "~1.0.0" 1274 | } 1275 | }, 1276 | "os-homedir": { 1277 | "version": "1.0.2", 1278 | "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1279 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 1280 | "dev": true 1281 | }, 1282 | "os-tmpdir": { 1283 | "version": "1.0.2", 1284 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1285 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1286 | "dev": true 1287 | }, 1288 | "parent-module": { 1289 | "version": "1.0.1", 1290 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1291 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1292 | "dev": true, 1293 | "requires": { 1294 | "callsites": "^3.0.0" 1295 | } 1296 | }, 1297 | "path-dirname": { 1298 | "version": "1.0.2", 1299 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 1300 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 1301 | "dev": true 1302 | }, 1303 | "path-is-absolute": { 1304 | "version": "1.0.1", 1305 | "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1306 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1307 | "dev": true 1308 | }, 1309 | "path-is-inside": { 1310 | "version": "1.0.2", 1311 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1312 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 1313 | "dev": true 1314 | }, 1315 | "path-key": { 1316 | "version": "2.0.1", 1317 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1318 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1319 | "dev": true 1320 | }, 1321 | "path-parse": { 1322 | "version": "1.0.6", 1323 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1324 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1325 | "dev": true 1326 | }, 1327 | "pluralize": { 1328 | "version": "1.2.1", 1329 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", 1330 | "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", 1331 | "dev": true 1332 | }, 1333 | "prelude-ls": { 1334 | "version": "1.1.2", 1335 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1336 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1337 | "dev": true 1338 | }, 1339 | "process-nextick-args": { 1340 | "version": "2.0.1", 1341 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1342 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1343 | "dev": true 1344 | }, 1345 | "progress": { 1346 | "version": "2.0.3", 1347 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1348 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1349 | "dev": true 1350 | }, 1351 | "punycode": { 1352 | "version": "2.1.1", 1353 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1354 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1355 | "dev": true 1356 | }, 1357 | "readable-stream": { 1358 | "version": "2.3.6", 1359 | "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 1360 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 1361 | "dev": true, 1362 | "requires": { 1363 | "core-util-is": "~1.0.0", 1364 | "inherits": "~2.0.3", 1365 | "isarray": "~1.0.0", 1366 | "process-nextick-args": "~2.0.0", 1367 | "safe-buffer": "~5.1.1", 1368 | "string_decoder": "~1.1.1", 1369 | "util-deprecate": "~1.0.1" 1370 | } 1371 | }, 1372 | "readline2": { 1373 | "version": "1.0.1", 1374 | "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", 1375 | "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", 1376 | "dev": true, 1377 | "requires": { 1378 | "code-point-at": "^1.0.0", 1379 | "is-fullwidth-code-point": "^1.0.0", 1380 | "mute-stream": "0.0.5" 1381 | }, 1382 | "dependencies": { 1383 | "is-fullwidth-code-point": { 1384 | "version": "1.0.0", 1385 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1386 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1387 | "dev": true, 1388 | "requires": { 1389 | "number-is-nan": "^1.0.0" 1390 | } 1391 | }, 1392 | "mute-stream": { 1393 | "version": "0.0.5", 1394 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", 1395 | "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", 1396 | "dev": true 1397 | } 1398 | } 1399 | }, 1400 | "rechoir": { 1401 | "version": "0.6.2", 1402 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 1403 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 1404 | "dev": true, 1405 | "requires": { 1406 | "resolve": "^1.1.6" 1407 | } 1408 | }, 1409 | "regexpp": { 1410 | "version": "2.0.1", 1411 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 1412 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 1413 | "dev": true 1414 | }, 1415 | "repeat-string": { 1416 | "version": "1.6.1", 1417 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1418 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 1419 | "dev": true 1420 | }, 1421 | "require-uncached": { 1422 | "version": "1.0.3", 1423 | "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 1424 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", 1425 | "dev": true, 1426 | "requires": { 1427 | "caller-path": "^0.1.0", 1428 | "resolve-from": "^1.0.0" 1429 | }, 1430 | "dependencies": { 1431 | "resolve-from": { 1432 | "version": "1.0.1", 1433 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 1434 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", 1435 | "dev": true 1436 | } 1437 | } 1438 | }, 1439 | "resolve": { 1440 | "version": "1.11.1", 1441 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", 1442 | "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", 1443 | "dev": true, 1444 | "requires": { 1445 | "path-parse": "^1.0.6" 1446 | } 1447 | }, 1448 | "resolve-from": { 1449 | "version": "4.0.0", 1450 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1451 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1452 | "dev": true 1453 | }, 1454 | "restore-cursor": { 1455 | "version": "2.0.0", 1456 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 1457 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 1458 | "dev": true, 1459 | "requires": { 1460 | "onetime": "^2.0.0", 1461 | "signal-exit": "^3.0.2" 1462 | } 1463 | }, 1464 | "resumer": { 1465 | "version": "0.0.0", 1466 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", 1467 | "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", 1468 | "dev": true, 1469 | "requires": { 1470 | "through": "~2.3.4" 1471 | } 1472 | }, 1473 | "right-align": { 1474 | "version": "0.1.3", 1475 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", 1476 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", 1477 | "dev": true, 1478 | "requires": { 1479 | "align-text": "^0.1.1" 1480 | } 1481 | }, 1482 | "rimraf": { 1483 | "version": "2.6.3", 1484 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1485 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1486 | "dev": true, 1487 | "requires": { 1488 | "glob": "^7.1.3" 1489 | } 1490 | }, 1491 | "rollup": { 1492 | "version": "0.36.4", 1493 | "resolved": "http://registry.npmjs.org/rollup/-/rollup-0.36.4.tgz", 1494 | "integrity": "sha1-oiRJTFOGwdc9OPe7hvafXrARo9I=", 1495 | "dev": true, 1496 | "requires": { 1497 | "source-map-support": "^0.4.0" 1498 | } 1499 | }, 1500 | "rollup-plugin-eslint": { 1501 | "version": "3.0.0", 1502 | "resolved": "https://registry.npmjs.org/rollup-plugin-eslint/-/rollup-plugin-eslint-3.0.0.tgz", 1503 | "integrity": "sha1-Q1TE5YXg0r2SWBTj38hky3kuyaQ=", 1504 | "dev": true, 1505 | "requires": { 1506 | "eslint": "^3.4.0", 1507 | "rollup-pluginutils": "^1.3.1" 1508 | }, 1509 | "dependencies": { 1510 | "acorn": { 1511 | "version": "5.7.3", 1512 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", 1513 | "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", 1514 | "dev": true 1515 | }, 1516 | "acorn-jsx": { 1517 | "version": "3.0.1", 1518 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", 1519 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", 1520 | "dev": true, 1521 | "requires": { 1522 | "acorn": "^3.0.4" 1523 | }, 1524 | "dependencies": { 1525 | "acorn": { 1526 | "version": "3.3.0", 1527 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 1528 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", 1529 | "dev": true 1530 | } 1531 | } 1532 | }, 1533 | "ajv": { 1534 | "version": "4.11.8", 1535 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", 1536 | "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", 1537 | "dev": true, 1538 | "requires": { 1539 | "co": "^4.6.0", 1540 | "json-stable-stringify": "^1.0.1" 1541 | } 1542 | }, 1543 | "ansi-escapes": { 1544 | "version": "1.4.0", 1545 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", 1546 | "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", 1547 | "dev": true 1548 | }, 1549 | "ansi-regex": { 1550 | "version": "2.1.1", 1551 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1552 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 1553 | "dev": true 1554 | }, 1555 | "ansi-styles": { 1556 | "version": "2.2.1", 1557 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1558 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 1559 | "dev": true 1560 | }, 1561 | "chalk": { 1562 | "version": "1.1.3", 1563 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1564 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1565 | "dev": true, 1566 | "requires": { 1567 | "ansi-styles": "^2.2.1", 1568 | "escape-string-regexp": "^1.0.2", 1569 | "has-ansi": "^2.0.0", 1570 | "strip-ansi": "^3.0.0", 1571 | "supports-color": "^2.0.0" 1572 | } 1573 | }, 1574 | "cli-cursor": { 1575 | "version": "1.0.2", 1576 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", 1577 | "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", 1578 | "dev": true, 1579 | "requires": { 1580 | "restore-cursor": "^1.0.1" 1581 | } 1582 | }, 1583 | "debug": { 1584 | "version": "2.6.9", 1585 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1586 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1587 | "dev": true, 1588 | "requires": { 1589 | "ms": "2.0.0" 1590 | } 1591 | }, 1592 | "doctrine": { 1593 | "version": "2.1.0", 1594 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 1595 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 1596 | "dev": true, 1597 | "requires": { 1598 | "esutils": "^2.0.2" 1599 | } 1600 | }, 1601 | "eslint": { 1602 | "version": "3.19.0", 1603 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", 1604 | "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", 1605 | "dev": true, 1606 | "requires": { 1607 | "babel-code-frame": "^6.16.0", 1608 | "chalk": "^1.1.3", 1609 | "concat-stream": "^1.5.2", 1610 | "debug": "^2.1.1", 1611 | "doctrine": "^2.0.0", 1612 | "escope": "^3.6.0", 1613 | "espree": "^3.4.0", 1614 | "esquery": "^1.0.0", 1615 | "estraverse": "^4.2.0", 1616 | "esutils": "^2.0.2", 1617 | "file-entry-cache": "^2.0.0", 1618 | "glob": "^7.0.3", 1619 | "globals": "^9.14.0", 1620 | "ignore": "^3.2.0", 1621 | "imurmurhash": "^0.1.4", 1622 | "inquirer": "^0.12.0", 1623 | "is-my-json-valid": "^2.10.0", 1624 | "is-resolvable": "^1.0.0", 1625 | "js-yaml": "^3.5.1", 1626 | "json-stable-stringify": "^1.0.0", 1627 | "levn": "^0.3.0", 1628 | "lodash": "^4.0.0", 1629 | "mkdirp": "^0.5.0", 1630 | "natural-compare": "^1.4.0", 1631 | "optionator": "^0.8.2", 1632 | "path-is-inside": "^1.0.1", 1633 | "pluralize": "^1.2.1", 1634 | "progress": "^1.1.8", 1635 | "require-uncached": "^1.0.2", 1636 | "shelljs": "^0.7.5", 1637 | "strip-bom": "^3.0.0", 1638 | "strip-json-comments": "~2.0.1", 1639 | "table": "^3.7.8", 1640 | "text-table": "~0.2.0", 1641 | "user-home": "^2.0.0" 1642 | }, 1643 | "dependencies": { 1644 | "shelljs": { 1645 | "version": "0.7.8", 1646 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", 1647 | "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", 1648 | "dev": true, 1649 | "requires": { 1650 | "glob": "^7.0.0", 1651 | "interpret": "^1.0.0", 1652 | "rechoir": "^0.6.2" 1653 | } 1654 | } 1655 | } 1656 | }, 1657 | "espree": { 1658 | "version": "3.5.4", 1659 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", 1660 | "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", 1661 | "dev": true, 1662 | "requires": { 1663 | "acorn": "^5.5.0", 1664 | "acorn-jsx": "^3.0.0" 1665 | } 1666 | }, 1667 | "figures": { 1668 | "version": "1.7.0", 1669 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", 1670 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", 1671 | "dev": true, 1672 | "requires": { 1673 | "escape-string-regexp": "^1.0.5", 1674 | "object-assign": "^4.1.0" 1675 | } 1676 | }, 1677 | "file-entry-cache": { 1678 | "version": "2.0.0", 1679 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 1680 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", 1681 | "dev": true, 1682 | "requires": { 1683 | "flat-cache": "^1.2.1", 1684 | "object-assign": "^4.0.1" 1685 | } 1686 | }, 1687 | "flat-cache": { 1688 | "version": "1.3.4", 1689 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", 1690 | "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", 1691 | "dev": true, 1692 | "requires": { 1693 | "circular-json": "^0.3.1", 1694 | "graceful-fs": "^4.1.2", 1695 | "rimraf": "~2.6.2", 1696 | "write": "^0.2.1" 1697 | } 1698 | }, 1699 | "globals": { 1700 | "version": "9.18.0", 1701 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 1702 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 1703 | "dev": true 1704 | }, 1705 | "ignore": { 1706 | "version": "3.3.10", 1707 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", 1708 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", 1709 | "dev": true 1710 | }, 1711 | "inquirer": { 1712 | "version": "0.12.0", 1713 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", 1714 | "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", 1715 | "dev": true, 1716 | "requires": { 1717 | "ansi-escapes": "^1.1.0", 1718 | "ansi-regex": "^2.0.0", 1719 | "chalk": "^1.0.0", 1720 | "cli-cursor": "^1.0.1", 1721 | "cli-width": "^2.0.0", 1722 | "figures": "^1.3.5", 1723 | "lodash": "^4.3.0", 1724 | "readline2": "^1.0.1", 1725 | "run-async": "^0.1.0", 1726 | "rx-lite": "^3.1.2", 1727 | "string-width": "^1.0.1", 1728 | "strip-ansi": "^3.0.0", 1729 | "through": "^2.3.6" 1730 | } 1731 | }, 1732 | "is-fullwidth-code-point": { 1733 | "version": "1.0.0", 1734 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1735 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1736 | "dev": true, 1737 | "requires": { 1738 | "number-is-nan": "^1.0.0" 1739 | } 1740 | }, 1741 | "ms": { 1742 | "version": "2.0.0", 1743 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1744 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1745 | "dev": true 1746 | }, 1747 | "onetime": { 1748 | "version": "1.1.0", 1749 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", 1750 | "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", 1751 | "dev": true 1752 | }, 1753 | "progress": { 1754 | "version": "1.1.8", 1755 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", 1756 | "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", 1757 | "dev": true 1758 | }, 1759 | "restore-cursor": { 1760 | "version": "1.0.1", 1761 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", 1762 | "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", 1763 | "dev": true, 1764 | "requires": { 1765 | "exit-hook": "^1.0.0", 1766 | "onetime": "^1.0.0" 1767 | } 1768 | }, 1769 | "run-async": { 1770 | "version": "0.1.0", 1771 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", 1772 | "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", 1773 | "dev": true, 1774 | "requires": { 1775 | "once": "^1.3.0" 1776 | } 1777 | }, 1778 | "slice-ansi": { 1779 | "version": "0.0.4", 1780 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", 1781 | "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", 1782 | "dev": true 1783 | }, 1784 | "string-width": { 1785 | "version": "1.0.2", 1786 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 1787 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 1788 | "dev": true, 1789 | "requires": { 1790 | "code-point-at": "^1.0.0", 1791 | "is-fullwidth-code-point": "^1.0.0", 1792 | "strip-ansi": "^3.0.0" 1793 | } 1794 | }, 1795 | "strip-ansi": { 1796 | "version": "3.0.1", 1797 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1798 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1799 | "dev": true, 1800 | "requires": { 1801 | "ansi-regex": "^2.0.0" 1802 | } 1803 | }, 1804 | "supports-color": { 1805 | "version": "2.0.0", 1806 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1807 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1808 | "dev": true 1809 | }, 1810 | "table": { 1811 | "version": "3.8.3", 1812 | "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", 1813 | "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", 1814 | "dev": true, 1815 | "requires": { 1816 | "ajv": "^4.7.0", 1817 | "ajv-keywords": "^1.0.0", 1818 | "chalk": "^1.1.1", 1819 | "lodash": "^4.0.0", 1820 | "slice-ansi": "0.0.4", 1821 | "string-width": "^2.0.0" 1822 | }, 1823 | "dependencies": { 1824 | "ansi-regex": { 1825 | "version": "3.0.0", 1826 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 1827 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 1828 | "dev": true 1829 | }, 1830 | "is-fullwidth-code-point": { 1831 | "version": "2.0.0", 1832 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1833 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1834 | "dev": true 1835 | }, 1836 | "string-width": { 1837 | "version": "2.1.1", 1838 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1839 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1840 | "dev": true, 1841 | "requires": { 1842 | "is-fullwidth-code-point": "^2.0.0", 1843 | "strip-ansi": "^4.0.0" 1844 | } 1845 | }, 1846 | "strip-ansi": { 1847 | "version": "4.0.0", 1848 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1849 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1850 | "dev": true, 1851 | "requires": { 1852 | "ansi-regex": "^3.0.0" 1853 | } 1854 | } 1855 | } 1856 | }, 1857 | "write": { 1858 | "version": "0.2.1", 1859 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 1860 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", 1861 | "dev": true, 1862 | "requires": { 1863 | "mkdirp": "^0.5.1" 1864 | } 1865 | } 1866 | } 1867 | }, 1868 | "rollup-plugin-node-resolve": { 1869 | "version": "2.1.1", 1870 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-2.1.1.tgz", 1871 | "integrity": "sha1-y7eDsNFbAnlNWJFTULLw2QK43cg=", 1872 | "dev": true, 1873 | "requires": { 1874 | "browser-resolve": "^1.11.0", 1875 | "builtin-modules": "^1.1.0", 1876 | "resolve": "^1.1.6" 1877 | }, 1878 | "dependencies": { 1879 | "resolve": { 1880 | "version": "1.8.1", 1881 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", 1882 | "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", 1883 | "dev": true, 1884 | "requires": { 1885 | "path-parse": "^1.0.5" 1886 | } 1887 | } 1888 | } 1889 | }, 1890 | "rollup-pluginutils": { 1891 | "version": "1.5.2", 1892 | "resolved": "http://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", 1893 | "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", 1894 | "dev": true, 1895 | "requires": { 1896 | "estree-walker": "^0.2.1", 1897 | "minimatch": "^3.0.2" 1898 | }, 1899 | "dependencies": { 1900 | "minimatch": { 1901 | "version": "3.0.4", 1902 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1903 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1904 | "dev": true, 1905 | "requires": { 1906 | "brace-expansion": "^1.1.7" 1907 | } 1908 | } 1909 | } 1910 | }, 1911 | "rollup-watch": { 1912 | "version": "2.5.0", 1913 | "resolved": "https://registry.npmjs.org/rollup-watch/-/rollup-watch-2.5.0.tgz", 1914 | "integrity": "sha1-hS1mDd7MUWlokKqMIule1FWMxfc=", 1915 | "dev": true, 1916 | "requires": { 1917 | "semver": "^5.1.0" 1918 | } 1919 | }, 1920 | "run-async": { 1921 | "version": "2.3.0", 1922 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 1923 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 1924 | "dev": true, 1925 | "requires": { 1926 | "is-promise": "^2.1.0" 1927 | } 1928 | }, 1929 | "rx-lite": { 1930 | "version": "3.1.2", 1931 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", 1932 | "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", 1933 | "dev": true 1934 | }, 1935 | "rxjs": { 1936 | "version": "6.5.2", 1937 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", 1938 | "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", 1939 | "dev": true, 1940 | "requires": { 1941 | "tslib": "^1.9.0" 1942 | } 1943 | }, 1944 | "safe-buffer": { 1945 | "version": "5.1.2", 1946 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1947 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1948 | "dev": true 1949 | }, 1950 | "safer-buffer": { 1951 | "version": "2.1.2", 1952 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1953 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1954 | "dev": true 1955 | }, 1956 | "semver": { 1957 | "version": "5.6.0", 1958 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", 1959 | "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", 1960 | "dev": true 1961 | }, 1962 | "shebang-command": { 1963 | "version": "1.2.0", 1964 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1965 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1966 | "dev": true, 1967 | "requires": { 1968 | "shebang-regex": "^1.0.0" 1969 | } 1970 | }, 1971 | "shebang-regex": { 1972 | "version": "1.0.0", 1973 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1974 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1975 | "dev": true 1976 | }, 1977 | "signal-exit": { 1978 | "version": "3.0.2", 1979 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1980 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 1981 | "dev": true 1982 | }, 1983 | "slice-ansi": { 1984 | "version": "2.1.0", 1985 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 1986 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 1987 | "dev": true, 1988 | "requires": { 1989 | "ansi-styles": "^3.2.0", 1990 | "astral-regex": "^1.0.0", 1991 | "is-fullwidth-code-point": "^2.0.0" 1992 | } 1993 | }, 1994 | "source-map": { 1995 | "version": "0.5.7", 1996 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1997 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1998 | "dev": true 1999 | }, 2000 | "source-map-support": { 2001 | "version": "0.4.18", 2002 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 2003 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 2004 | "dev": true, 2005 | "requires": { 2006 | "source-map": "^0.5.6" 2007 | } 2008 | }, 2009 | "sprintf-js": { 2010 | "version": "1.0.3", 2011 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2012 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2013 | "dev": true 2014 | }, 2015 | "string-width": { 2016 | "version": "2.1.1", 2017 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 2018 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 2019 | "dev": true, 2020 | "requires": { 2021 | "is-fullwidth-code-point": "^2.0.0", 2022 | "strip-ansi": "^4.0.0" 2023 | } 2024 | }, 2025 | "string.prototype.trim": { 2026 | "version": "1.1.2", 2027 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", 2028 | "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", 2029 | "dev": true, 2030 | "requires": { 2031 | "define-properties": "^1.1.2", 2032 | "es-abstract": "^1.5.0", 2033 | "function-bind": "^1.0.2" 2034 | } 2035 | }, 2036 | "string_decoder": { 2037 | "version": "1.1.1", 2038 | "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2039 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2040 | "dev": true, 2041 | "requires": { 2042 | "safe-buffer": "~5.1.0" 2043 | } 2044 | }, 2045 | "strip-ansi": { 2046 | "version": "4.0.0", 2047 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 2048 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 2049 | "dev": true, 2050 | "requires": { 2051 | "ansi-regex": "^3.0.0" 2052 | } 2053 | }, 2054 | "strip-bom": { 2055 | "version": "3.0.0", 2056 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2057 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 2058 | "dev": true 2059 | }, 2060 | "strip-json-comments": { 2061 | "version": "2.0.1", 2062 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2063 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 2064 | "dev": true 2065 | }, 2066 | "supports-color": { 2067 | "version": "5.5.0", 2068 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2069 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2070 | "dev": true, 2071 | "requires": { 2072 | "has-flag": "^3.0.0" 2073 | } 2074 | }, 2075 | "table": { 2076 | "version": "5.4.1", 2077 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.1.tgz", 2078 | "integrity": "sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w==", 2079 | "dev": true, 2080 | "requires": { 2081 | "ajv": "^6.9.1", 2082 | "lodash": "^4.17.11", 2083 | "slice-ansi": "^2.1.0", 2084 | "string-width": "^3.0.0" 2085 | }, 2086 | "dependencies": { 2087 | "ansi-regex": { 2088 | "version": "4.1.0", 2089 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 2090 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 2091 | "dev": true 2092 | }, 2093 | "string-width": { 2094 | "version": "3.1.0", 2095 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 2096 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 2097 | "dev": true, 2098 | "requires": { 2099 | "emoji-regex": "^7.0.1", 2100 | "is-fullwidth-code-point": "^2.0.0", 2101 | "strip-ansi": "^5.1.0" 2102 | } 2103 | }, 2104 | "strip-ansi": { 2105 | "version": "5.2.0", 2106 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2107 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2108 | "dev": true, 2109 | "requires": { 2110 | "ansi-regex": "^4.1.0" 2111 | } 2112 | } 2113 | } 2114 | }, 2115 | "tape": { 2116 | "version": "4.9.1", 2117 | "resolved": "https://registry.npmjs.org/tape/-/tape-4.9.1.tgz", 2118 | "integrity": "sha512-6fKIXknLpoe/Jp4rzHKFPpJUHDHDqn8jus99IfPnHIjyz78HYlefTGD3b5EkbQzuLfaEvmfPK3IolLgq2xT3kw==", 2119 | "dev": true, 2120 | "requires": { 2121 | "deep-equal": "~1.0.1", 2122 | "defined": "~1.0.0", 2123 | "for-each": "~0.3.3", 2124 | "function-bind": "~1.1.1", 2125 | "glob": "~7.1.2", 2126 | "has": "~1.0.3", 2127 | "inherits": "~2.0.3", 2128 | "minimist": "~1.2.0", 2129 | "object-inspect": "~1.6.0", 2130 | "resolve": "~1.7.1", 2131 | "resumer": "~0.0.0", 2132 | "string.prototype.trim": "~1.1.2", 2133 | "through": "~2.3.8" 2134 | }, 2135 | "dependencies": { 2136 | "defined": { 2137 | "version": "1.0.0", 2138 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 2139 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", 2140 | "dev": true 2141 | }, 2142 | "glob": { 2143 | "version": "7.1.3", 2144 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 2145 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 2146 | "dev": true, 2147 | "requires": { 2148 | "fs.realpath": "^1.0.0", 2149 | "inflight": "^1.0.4", 2150 | "inherits": "2", 2151 | "minimatch": "^3.0.4", 2152 | "once": "^1.3.0", 2153 | "path-is-absolute": "^1.0.0" 2154 | } 2155 | }, 2156 | "minimatch": { 2157 | "version": "3.0.4", 2158 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2159 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2160 | "dev": true, 2161 | "requires": { 2162 | "brace-expansion": "^1.1.7" 2163 | } 2164 | }, 2165 | "minimist": { 2166 | "version": "1.2.0", 2167 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2168 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 2169 | "dev": true 2170 | }, 2171 | "resolve": { 2172 | "version": "1.7.1", 2173 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", 2174 | "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", 2175 | "dev": true, 2176 | "requires": { 2177 | "path-parse": "^1.0.5" 2178 | } 2179 | } 2180 | } 2181 | }, 2182 | "text-table": { 2183 | "version": "0.2.0", 2184 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2185 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2186 | "dev": true 2187 | }, 2188 | "through": { 2189 | "version": "2.3.8", 2190 | "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", 2191 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 2192 | "dev": true 2193 | }, 2194 | "tmp": { 2195 | "version": "0.0.33", 2196 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 2197 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 2198 | "dev": true, 2199 | "requires": { 2200 | "os-tmpdir": "~1.0.2" 2201 | } 2202 | }, 2203 | "tslib": { 2204 | "version": "1.10.0", 2205 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", 2206 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", 2207 | "dev": true 2208 | }, 2209 | "type": { 2210 | "version": "1.0.1", 2211 | "resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz", 2212 | "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==", 2213 | "dev": true 2214 | }, 2215 | "type-check": { 2216 | "version": "0.3.2", 2217 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 2218 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 2219 | "dev": true, 2220 | "requires": { 2221 | "prelude-ls": "~1.1.2" 2222 | } 2223 | }, 2224 | "typedarray": { 2225 | "version": "0.0.6", 2226 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 2227 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 2228 | "dev": true 2229 | }, 2230 | "uglify-js": { 2231 | "version": "2.8.29", 2232 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", 2233 | "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", 2234 | "dev": true, 2235 | "requires": { 2236 | "source-map": "~0.5.1", 2237 | "uglify-to-browserify": "~1.0.0", 2238 | "yargs": "~3.10.0" 2239 | } 2240 | }, 2241 | "uglify-to-browserify": { 2242 | "version": "1.0.2", 2243 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 2244 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", 2245 | "dev": true, 2246 | "optional": true 2247 | }, 2248 | "uri-js": { 2249 | "version": "4.2.2", 2250 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 2251 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 2252 | "dev": true, 2253 | "requires": { 2254 | "punycode": "^2.1.0" 2255 | } 2256 | }, 2257 | "user-home": { 2258 | "version": "2.0.0", 2259 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", 2260 | "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", 2261 | "dev": true, 2262 | "requires": { 2263 | "os-homedir": "^1.0.0" 2264 | } 2265 | }, 2266 | "util-deprecate": { 2267 | "version": "1.0.2", 2268 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2269 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2270 | "dev": true 2271 | }, 2272 | "which": { 2273 | "version": "1.3.1", 2274 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2275 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2276 | "dev": true, 2277 | "requires": { 2278 | "isexe": "^2.0.0" 2279 | } 2280 | }, 2281 | "window-size": { 2282 | "version": "0.1.0", 2283 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", 2284 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", 2285 | "dev": true 2286 | }, 2287 | "wordwrap": { 2288 | "version": "1.0.0", 2289 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 2290 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 2291 | "dev": true 2292 | }, 2293 | "wrappy": { 2294 | "version": "1.0.2", 2295 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2296 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2297 | "dev": true 2298 | }, 2299 | "write": { 2300 | "version": "1.0.3", 2301 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 2302 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 2303 | "dev": true, 2304 | "requires": { 2305 | "mkdirp": "^0.5.1" 2306 | } 2307 | }, 2308 | "xtend": { 2309 | "version": "4.0.1", 2310 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 2311 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 2312 | "dev": true 2313 | }, 2314 | "yargs": { 2315 | "version": "3.10.0", 2316 | "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", 2317 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", 2318 | "dev": true, 2319 | "requires": { 2320 | "camelcase": "^1.0.2", 2321 | "cliui": "^2.1.0", 2322 | "decamelize": "^1.0.0", 2323 | "window-size": "0.1.0" 2324 | } 2325 | } 2326 | } 2327 | } 2328 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "avocado-type-checker", 3 | "version": "1.0.0-alpha.7", 4 | "description": "A javascript type checker. Also a tasty fruit with megafauna dispersal syndrome, leading to an evolutionary anachronism.", 5 | "main": "build/avocado.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/walterra/avocado.git" 9 | }, 10 | "keywords": [ 11 | "javascript", 12 | "types" 13 | ], 14 | "author": "Walter Rafelsberger", 15 | "license": "MIT", 16 | "bugs": { 17 | "url": "https://github.com/walterra/avocado/issues" 18 | }, 19 | "scripts": { 20 | "pretest": "rm -rf build && mkdir build && rollup -c rollup_umd.config.js && rollup -c rollup_es.config.js && rollup -c rollup.config.js", 21 | "test": "tape 'test/**/*-test.js'", 22 | "prepare": "npm run test && uglifyjs build/avocado_umd.js -c -m -o build/avocado_umd.min.js", 23 | "postpublish": "zip -j build/avocado.zip -- LICENSE README.md build/avocado.js build/avocado_es.js build/avocado_umd.js build/avocado_umd.min.js" 24 | }, 25 | "devDependencies": { 26 | "eslint": ">=4.18.2", 27 | "eslint-config-es5": "^0.5.0", 28 | "rollup": "^0.36.3", 29 | "rollup-plugin-eslint": "^3.0.0", 30 | "rollup-plugin-node-resolve": "^2.0.0", 31 | "rollup-watch": "^2.5.0", 32 | "tape": "4", 33 | "uglify-js": ">=2.6.0" 34 | }, 35 | "homepage": "https://github.com/walterra/avocado#readme" 36 | } 37 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import eslint from 'rollup-plugin-eslint'; 2 | import nodeResolve from 'rollup-plugin-node-resolve'; 3 | 4 | export default { 5 | entry: 'index.js', 6 | dest: 'build/avocado.js', 7 | format: 'cjs', 8 | moduleName: 'avocado', 9 | sourceMap: 'inline', 10 | plugins: [ 11 | eslint(), 12 | nodeResolve({ 13 | jsnext: true 14 | }) 15 | ] 16 | }; -------------------------------------------------------------------------------- /rollup_es.config.js: -------------------------------------------------------------------------------- 1 | import eslint from 'rollup-plugin-eslint'; 2 | import nodeResolve from 'rollup-plugin-node-resolve'; 3 | 4 | export default { 5 | entry: 'index.js', 6 | dest: 'build/avocado_es.js', 7 | format: 'es', 8 | moduleName: 'avocado', 9 | sourceMap: 'inline', 10 | plugins: [ 11 | eslint(), 12 | nodeResolve({ 13 | jsnext: true 14 | }) 15 | ] 16 | }; -------------------------------------------------------------------------------- /rollup_umd.config.js: -------------------------------------------------------------------------------- 1 | import eslint from 'rollup-plugin-eslint'; 2 | import nodeResolve from 'rollup-plugin-node-resolve'; 3 | 4 | export default { 5 | entry: 'index.js', 6 | dest: 'build/avocado_umd.js', 7 | format: 'umd', 8 | moduleName: 'avocado', 9 | sourceMap: 'inline', 10 | plugins: [ 11 | eslint(), 12 | nodeResolve({ 13 | jsnext: true, 14 | browser: true 15 | }) 16 | ] 17 | }; -------------------------------------------------------------------------------- /src/avocado.js: -------------------------------------------------------------------------------- 1 | import { default as findByType } from './findByType'; 2 | 3 | var types = []; 4 | 5 | // av's main function is a getter-setter-combo 6 | // it expects a default value and a validation function 7 | // the validation function should return the validated value or throw an exception 8 | // it shouldn't return 'false' for non-validating values 9 | var av = function (i, validate){ 10 | // we offer a shortcut to get types when only one argument is provided 11 | if (arguments.length === 1) { 12 | return av.type(i); 13 | } 14 | 15 | // we store the value in private scope 16 | var _i; 17 | // our getter-setter-combo including validation 18 | var me = function (d){ 19 | if (!arguments.length) { 20 | if (typeof _i === 'object'){ 21 | var o = {}; 22 | for (var prop in _i){ 23 | o[prop] = _i[prop](); 24 | } 25 | return o; 26 | } else { 27 | return _i; 28 | } 29 | } 30 | _i = validate(d); 31 | // if _i is an object we expose the getter/setter methods of its attributes 32 | if (typeof _i === 'object'){ 33 | for (var prop_object in _i){ 34 | me[prop_object] = _i[prop_object]; 35 | } 36 | } 37 | }; 38 | // we initialize the getter-setter-combo with the provided value 39 | me(i); 40 | // return the getter-setter-combo (allows chaining, among other things) 41 | return me; 42 | }; 43 | 44 | av.type = function() { 45 | var typeIndex; 46 | var typeName; 47 | var typeData; 48 | 49 | if (arguments.length === 0) { 50 | throw new Error('av.type requires at least one argument.'); 51 | } 52 | 53 | typeName = arguments[0]; 54 | typeIndex = findByType(types, typeName); 55 | 56 | // get a type by name 57 | if (arguments.length === 1) { 58 | if (typeIndex === -1) { 59 | throw new Error('type not found'); 60 | } 61 | return types[typeIndex].type; 62 | // set a type by name 63 | } else if (arguments.length === 2) { 64 | typeData = arguments[1]; 65 | if (typeIndex !== -1) { 66 | throw new Error('type specification already exists.'); 67 | } 68 | if (typeof typeData === 'function') { 69 | types.push({ 70 | typeName: typeName, 71 | type: function(i) { 72 | return av(i, typeData); 73 | } 74 | }); 75 | } else if (typeof typeData === 'object') { 76 | types.push({ 77 | typeName: typeName, 78 | type: function(i) { 79 | return av(i, function(d) { 80 | if (typeof d === 'object'){ 81 | var _i = {}; 82 | for (var prop in typeData){ 83 | _i[prop] = av.type(typeData[prop])(d[prop]); 84 | } 85 | return _i; 86 | } else throw 'not a valid object'; 87 | }); 88 | } 89 | }); 90 | } else { 91 | throw new Error('argument 2 typeData must be either a function or object.'); 92 | } 93 | 94 | return av; 95 | } 96 | 97 | throw new Error('invalid amount of arguments for av.type()'); 98 | }; 99 | 100 | // isValid allows you to test if a value (v) is a valid type (t) 101 | av.isValid = function (t, v){ 102 | try { 103 | t(v); 104 | return true; 105 | } catch (err) { 106 | return false; 107 | } 108 | }; 109 | 110 | // a boolean type and its validation function 111 | av.type('boolean', function (d){ 112 | if (typeof d === 'boolean') { 113 | return d; 114 | } else throw new Error('d is not boolean'); 115 | }); 116 | 117 | // http://stackoverflow.com/a/20779354/2266116 118 | var isInteger = function (nVal){ 119 | return typeof nVal === 'number' && isFinite(nVal) && nVal > -9007199254740992 && nVal < 9007199254740992 && Math.floor(nVal) === nVal; 120 | }; 121 | 122 | av.type('int', function(d) { 123 | if(!isInteger(d)) { 124 | throw new Error('d is not an integer'); 125 | } 126 | return d; 127 | }); 128 | 129 | av.type('float', function(d){ 130 | if(typeof d !== 'number') { 131 | throw 'd is not a number'; 132 | } 133 | return d; 134 | }); 135 | 136 | av.type('string', function (d){ 137 | if (typeof d === 'string') { 138 | return d; 139 | } else throw 'd is not a string'; 140 | }); 141 | 142 | av.type('collection', function (d){ 143 | if (d && d.constructor === Array) { 144 | return d; 145 | } else throw 'not an array'; 146 | }); 147 | 148 | export default av; 149 | 150 | -------------------------------------------------------------------------------- /src/findByType.js: -------------------------------------------------------------------------------- 1 | export default function(arr, typeName) { 2 | if (!Array.isArray(arr)) { 3 | throw new Error('arr needs to be an array'); 4 | } 5 | 6 | if (typeof typeName !== 'string') { 7 | throw new Error('typeName needs to be string'); 8 | } 9 | 10 | for (var i = 0; i < arr.length; i++) { 11 | if (arr[i].typeName === typeName) { 12 | return i; 13 | } 14 | } 15 | 16 | return -1; 17 | } 18 | -------------------------------------------------------------------------------- /test/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extent": "../eslintrc.json", 3 | "globals": { 4 | "require": true 5 | } 6 | } -------------------------------------------------------------------------------- /test/avocado-test.js: -------------------------------------------------------------------------------- 1 | var test = require('tape'); 2 | var av = require('../build/avocado'); 3 | 4 | test('av.type', function(t) { 5 | t.doesNotThrow(function() { 6 | av.type('int'); 7 | av('int'); 8 | }); 9 | 10 | t.throws(function() { 11 | av.type('nonExistingType'); 12 | av('nonExistingType'); 13 | }); 14 | 15 | // creating a new type 16 | t.doesNotThrow(function() { 17 | av.type('newType', function(d) { 18 | return d; 19 | }); 20 | av.type('newType'); 21 | av('newType'); 22 | }); 23 | 24 | // creating a type with the same name twice shouldn't work 25 | t.throws(function() { 26 | av.type('newType', function(d) { 27 | return d; 28 | }); 29 | }); 30 | 31 | t.end(); 32 | }); 33 | 34 | test('av.int', function(t) { 35 | var i; 36 | 37 | var v = 1; 38 | t.doesNotThrow(function() { 39 | i = av('int')(v); 40 | }, 'Initializing integer 1.'); 41 | t.equals(i(), v, 'Integer returns 1.'); 42 | 43 | v = 1.1; 44 | t.throws(function() { 45 | i = av('int')(v); 46 | }, 'Initializing integer with float 1.1 throws an error.'); 47 | 48 | t.throws(function() { 49 | i = av('int')('1'); 50 | }, 'Initializing integer with String \'1\' throws an error.'); 51 | 52 | t.end(); 53 | }); 54 | 55 | test('av.float', function(t) { 56 | var i; 57 | 58 | var v = 1; 59 | t.doesNotThrow(function() { 60 | i = av('float')(v); 61 | }, 'Initializing float 1.'); 62 | t.equals(i(), v, 'Float returns 1.'); 63 | 64 | v = 0.1; 65 | t.doesNotThrow(function() { 66 | i = av('float')(v); 67 | }, 'Initializing float 1.1.'); 68 | t.equals(i(), v, 'Float returns 1.1'); 69 | 70 | t.throws(function() { 71 | i = av('float')('1'); 72 | }, 'Initializing float with String \'1\' throws an error.'); 73 | 74 | t.end(); 75 | }); 76 | 77 | test('av.map', function(t) { 78 | var Weapon; 79 | var Person; 80 | var Gandalf; 81 | 82 | t.doesNotThrow(function() { 83 | av.type('weapon', { 84 | wName: 'string', 85 | wType: 'string', 86 | hitPoints: 'int', 87 | speed: 'int', 88 | isDrawn: 'boolean' 89 | }); 90 | 91 | Weapon = function(i) { 92 | var w = av('weapon')(i); 93 | 94 | w.status = function (){ 95 | return 'Weapon Status.'; 96 | }; 97 | 98 | return w; 99 | }; 100 | }, 'Creating Weapon.'); 101 | 102 | t.doesNotThrow(function() { 103 | av.type('person', { 104 | fullName: 'string', 105 | age: 'int', 106 | walk: 'boolean', 107 | weapon: 'weapon' 108 | }); 109 | 110 | Person = function (i){ 111 | var p = av('person')(i); 112 | 113 | p.status = function (){ 114 | return p.fullName() + ', age ' + p.age() + ', ' + ((p.walk()) ? 'is' : 'isn\'t') + ' walking towards Mordor.'; 115 | }; 116 | 117 | return p; 118 | }; 119 | }, 'Creating Person.'); 120 | 121 | 122 | var weaponData = { 123 | wName: 'Staff of Power', 124 | wType: 'staff', 125 | hitPoints: 65, 126 | speed: 3, 127 | isDrawn: false 128 | }; 129 | 130 | var gandalfData = { 131 | fullName: 'Gandalf the Grey', 132 | age: 2019, 133 | walk: false, 134 | weapon: weaponData 135 | }; 136 | 137 | t.ok(av.isValid(Weapon, weaponData), 'Check if weaponData is a valid Weapon.'); 138 | t.ok(av.isValid(Person, gandalfData), 'Check if Gandalf is a valid Person.'); 139 | 140 | t.doesNotThrow(function() { 141 | Gandalf = new Person(gandalfData); 142 | }, 'Initialize Gandalf.'); 143 | 144 | t.equals(Gandalf.status(), 'Gandalf the Grey, age 2019, isn\'t walking towards Mordor.', 'Check Gandalf\'s status.'); 145 | 146 | t.doesNotThrow(function() { 147 | Gandalf.walk(true); 148 | Gandalf.fullName('Gandalf the White'); 149 | }, 'Updating Gandalf.'); 150 | 151 | t.equals(Gandalf.status(), 'Gandalf the White, age 2019, is walking towards Mordor.', 'Check Gandalf\'s updated status.'); 152 | 153 | t.deepEqual(Gandalf.weapon(), weaponData, 'Gandalf\'s weapon and the original data are matching.'); 154 | 155 | t.notDeepEqual(Gandalf(), gandalfData, 'Gandalf is not matching the original data because he\'s now white and marching towards Mordor.'); 156 | 157 | t.end(); 158 | }); 159 | --------------------------------------------------------------------------------