├── .gitignore ├── 01-getting-started ├── 01-what is OOP.md ├── 02-4 Pillars of OOP.md ├── 03-benefits of OOP.md └── 04-procedural-oop.js ├── 02-objects ├── 01-object-literals.js ├── 02-factories.js ├── 03-constructors.js ├── 04-constructor-property.js ├── 05-functions-are-objects.js ├── 06-value-reference-types.js ├── 07-adding-removing-prop.js ├── 08-enumerating-prop.js ├── 09-private-prop-and-methods.js ├── 10-getters-and-setters.js └── 11-stopwatch.js ├── 03-prototypes ├── 01-inheritance.js ├── 02-prototypes-and-prototypical.js ├── 03-multilevel-inheritace.js ├── 04-property-descriptors.js ├── 05-constructor-prototypes.js ├── 06-prototype-instance-members.js ├── 07-iterating-instance-and-prototype-members.js ├── 08-built-in-methods-tip.js └── 09-premature-optimization.js ├── 04-prototypical-inheritance ├── 01-creating-your-own-prototypical-instance.js ├── 02-resetting-the-constructor.js ├── 03-calling-the-super-constructor.js ├── 04-intermediate-function-Inheritance.js ├── 05-method-overriding.js ├── 06-polymorphism.js ├── 07-mixins.js ├── 08-prototypical-inheritance.js └── 09-exercise-polymorphism.js ├── 05-es6-classes ├── 01-es6-classes.js ├── 02-hoisting.js ├── 03-static-methods.js ├── 04-the-this-keyword.js ├── 05-private-members-using-symbols.js ├── 06-private-members-using-weakmaps.js ├── 07-private-members-using-hash.js ├── 08-getters-setters.js ├── 09-inheritance.js ├── 10-exercise-stack.js └── 11-method-overidding.js ├── 06-es6-tooling ├── 01-modules.js ├── 02-es6-tooling.js ├── commonjs-modules │ ├── circle.js │ └── index.js ├── es6-modules │ ├── circle.js │ ├── index.html │ └── index.js └── es6-tooling │ ├── babel-demo │ ├── .babelrc │ ├── build │ │ ├── circle.js │ │ └── index.js │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── circle.js │ │ └── index.js │ └── steps.md │ └── webpack-demo │ ├── circle.js │ ├── index.html │ └── index.js ├── LICENSE ├── README.md ├── _config.yml ├── cheat-sheets ├── classes-cheat-sheet.js ├── inheritance-cheat-sheet.js ├── modules-cheat-sheet.js ├── object-cheat-sheet.js └── prototypes-cheat-sheet.js ├── index.html └── main.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /01-getting-started/01-what is OOP.md: -------------------------------------------------------------------------------- 1 | # What is Object Oriented Programming? 2 | 3 | Object Orinted Programming is a programming paradign or style centered around OBJECTS rather than FUNCTIONS 4 | 5 | Languages that support it; 6 | C#, Java, Ruby, Python, JAVASCRIPT. . 7 | 8 | Most JavaScript Frameworks and Libraries are built with OOP paradigm. 9 | -------------------------------------------------------------------------------- /01-getting-started/02-4 Pillars of OOP.md: -------------------------------------------------------------------------------- 1 | # The four pillars of OOP 2 | 3 | - ENCAPSULATION 4 | - ABSTRACTION 5 | - INHERITANCE 6 | - POLYMORPHISM 7 | 8 | ## ENCAPSULATION 9 | This is basically grouping related variables and functions that operate on them into Objects. 10 | 11 | ## ABSTRACTION 12 | Helps to reduce the impact of change, hides complexity and chuns a simpler interface. 13 | 14 | ## INHERITANCE 15 | A mechanism that helps to eliminate redundant code. 16 | 17 | ## POLYMORPHISM 18 | Poly means many, morphism mean forms 19 | A technique that helps to get ride of long if and else statements and switch cases. 20 | -------------------------------------------------------------------------------- /01-getting-started/03-benefits of OOP.md: -------------------------------------------------------------------------------- 1 | # Benefits of OOP 2 | 3 | ## Encapsulation 4 | - Group related variables and functions together. 5 | - Reduce complexity. 6 | - Increase reusability. 7 | 8 | ## Abstraction 9 | - Hide complexity and show only essentials. 10 | - Reduce complexity. 11 | - Isolates the impact of change. 12 | 13 | ## Inheritance 14 | - Eliminate redundant code 15 | 16 | ## Polymorphism 17 | - Refactor ugly if/else statements and switch cases. 18 | -------------------------------------------------------------------------------- /01-getting-started/04-procedural-oop.js: -------------------------------------------------------------------------------- 1 | // Procedural style vs OOP 2 | 3 | // PROCEDURAL 4 | let baseSalary = 30000; 5 | let overTime = 10; 6 | let rate = 20; 7 | 8 | function getWage(baseSalary, overTime, rate) { 9 | return baseSalary + (overTime * rate); 10 | } 11 | console.log('PROCEDURAL => ' + getWage(baseSalary, overTime, rate)); 12 | 13 | // OOP 14 | let employee = { 15 | baseSalary: 30000, 16 | overTime: 10, 17 | rate: 20, 18 | getWage: function() { 19 | return this.baseSalary + (this.overTime * this.rate); 20 | } 21 | }; 22 | console.log('OOP => ' + employee.getWage()); 23 | -------------------------------------------------------------------------------- /02-objects/01-object-literals.js: -------------------------------------------------------------------------------- 1 | 2 | const circle = { 3 | radius: 1, 4 | location: { 5 | x: 1, 6 | y: 1 7 | }, 8 | draw: function() { 9 | console.log('draw'); 10 | } 11 | }; 12 | 13 | // call this function 14 | circle.draw(); 15 | -------------------------------------------------------------------------------- /02-objects/02-factories.js: -------------------------------------------------------------------------------- 1 | // Factory function 2 | function createCircle(radius) { 3 | return { 4 | radius, 5 | draw: function() { 6 | console.log('draw'); 7 | } 8 | }; 9 | } 10 | 11 | const circle = createCircle(1); 12 | circle.draw(); 13 | -------------------------------------------------------------------------------- /02-objects/03-constructors.js: -------------------------------------------------------------------------------- 1 | 2 | // Constructor function 3 | function Circle(radius) { 4 | this.radius = radius; 5 | this.draw = function() { 6 | console.log('draw'); 7 | } 8 | } 9 | 10 | const circle = new Circle(1); 11 | circle.draw(); 12 | -------------------------------------------------------------------------------- /02-objects/04-constructor-property.js: -------------------------------------------------------------------------------- 1 | 2 | // Factory function 3 | function createCircle(radius) { 4 | return { 5 | radius, 6 | draw: function() { 7 | console.log('draw'); 8 | } 9 | }; 10 | } 11 | const circleFac = createCircle(1); 12 | console.log(circleFac.constructor); 13 | // Check console 14 | 15 | // Constructor function 16 | function Circle(radius) { 17 | this.radius = radius; 18 | this.draw = function() { 19 | console.log('draw'); 20 | } 21 | } 22 | const circleCon = new Circle(1); 23 | console.log(circleCon.constructor); 24 | // Check console 25 | 26 | 27 | // Other properties 28 | new String() // '', "", `` 29 | new Boolean() // true, false 30 | new Number() // 1, 2, 3, ... 31 | -------------------------------------------------------------------------------- /02-objects/05-functions-are-objects.js: -------------------------------------------------------------------------------- 1 | 2 | function Circle(radius) { 3 | this.radius = radius; 4 | this.draw = function() { 5 | console.log('draw'); 6 | } 7 | } 8 | const circle = new Circle(1); 9 | 10 | console.log( 11 | Circle.name, 12 | Circle.length, 13 | Circle.constructor, 14 | Circle.call({}, 1, 2, 3), 15 | Circle.apply({}, [1, 2 , 3]) 16 | ); 17 | 18 | const Circle2 = new Function('radius', ` 19 | this.radius = radius; 20 | this.draw = function() { 21 | console.log('draw'); 22 | } 23 | `); 24 | const circle2 = new Circle2(3); 25 | -------------------------------------------------------------------------------- /02-objects/06-value-reference-types.js: -------------------------------------------------------------------------------- 1 | 2 | // Value types (Primitives) 3 | Number 4 | String 5 | Boolean 6 | Symbol 7 | undefined 8 | null 9 | 10 | // Reference types 11 | Object 12 | Function 13 | Array 14 | 15 | /////////////////////////////// 16 | 17 | let a = 10; 18 | let b = a; 19 | a = 20; 20 | console.log(a, b); 21 | 22 | 23 | let c = {value: 10}; 24 | let d = c; 25 | c.value = 20; 26 | console.log(c, d); 27 | 28 | //////////////////////////////// 29 | 30 | let num = 10; 31 | 32 | function increase(num) { 33 | num++ 34 | } 35 | increase(num); 36 | console.log(num); 37 | 38 | 39 | let obj = {value: 10}; 40 | 41 | function increase(obj) { 42 | obj.value++ 43 | } 44 | increase(obj); 45 | console.log(obj) 46 | 47 | // Primitives are copied by their value 48 | // Objects are copied by their reference 49 | -------------------------------------------------------------------------------- /02-objects/07-adding-removing-prop.js: -------------------------------------------------------------------------------- 1 | 2 | function Circle(radius) { 3 | this.radius = radius; 4 | this.draw = function() { 5 | console.log('draw'); 6 | } 7 | } 8 | 9 | const circle = new Circle(10); 10 | console.log(circle); 11 | 12 | // ADD 13 | circle.location = {x: 1, y: 2}; 14 | 15 | const propName = 'location2'; 16 | circle[propName] = {x: 1, y: 2}; 17 | 18 | // DELETE 19 | delete circle.location; 20 | 21 | delete circle['location2']; 22 | -------------------------------------------------------------------------------- /02-objects/08-enumerating-prop.js: -------------------------------------------------------------------------------- 1 | 2 | function Circle(radius) { 3 | this.radius = radius; 4 | this.draw = function() { 5 | console.log('draw'); 6 | } 7 | } 8 | 9 | const circle = new Circle(10); 10 | 11 | // for in loop 12 | for (let key in circle) { 13 | if(typeof circle[key] !== 'function') 14 | console.log(key, circle[key]); 15 | } 16 | 17 | // Object.keys 18 | const keys = Object.keys(circle) 19 | console.log(keys); 20 | keys.map(k => { 21 | console.log(k, circle[k]); 22 | }); 23 | 24 | // Object.values 25 | const values = Object.values(circle) 26 | console.log(values); 27 | values.map(v => { 28 | console.log(v); 29 | }); 30 | 31 | // Object.entries 32 | const entry = Object.entries(circle) 33 | console.log(entry); 34 | entry.map(items =>{ 35 | let k = items[0]; 36 | let v = items[1]; 37 | console.log(k, v); 38 | }); 39 | 40 | // In operator 41 | if ('radius' in circle) { 42 | console.log('Circle has a radius'); 43 | } 44 | -------------------------------------------------------------------------------- /02-objects/09-private-prop-and-methods.js: -------------------------------------------------------------------------------- 1 | 2 | function Circle(radius) { 3 | this.radius = radius; 4 | 5 | let defaultLocation = { x: 0, y: 0}; 6 | 7 | let computeOptimumLocation = function() { 8 | // ... 9 | } 10 | 11 | this.draw = function() { 12 | computeOptimumLocation(); 13 | // defaultLocation 14 | // this.radius 15 | 16 | console.log('draw'); 17 | } 18 | } 19 | 20 | const circle = new Circle(10); 21 | circle.draw() 22 | -------------------------------------------------------------------------------- /02-objects/10-getters-and-setters.js: -------------------------------------------------------------------------------- 1 | 2 | function Circle(radius) { 3 | this.radius = radius; 4 | 5 | let defaultLocation = { x: 0, y: 0}; 6 | 7 | this.getDefaultLocation = function() { 8 | return defaultLocation; 9 | }; 10 | 11 | this.draw = function() { 12 | console.log('draw'); 13 | }; 14 | 15 | Object.defineProperty(this, 'defaultLocation', { 16 | get: function() { 17 | return defaultLocation; 18 | }, 19 | set: function(value) { 20 | if(!value.x || !value.y) { 21 | throw new Error('Invalid location'); 22 | } 23 | defaultLocation = value; 24 | } 25 | }) 26 | } 27 | 28 | const circle = new Circle(10); 29 | circle.defaultLocation = {x: 3, y: 5}; 30 | // circle.defaultLocation = 3; // error 31 | 32 | console.log(circle.defaultLocation); 33 | -------------------------------------------------------------------------------- /02-objects/11-stopwatch.js: -------------------------------------------------------------------------------- 1 | 2 | function Stopwatch() { 3 | let startTime, endTime, running, duration = 0; 4 | 5 | this.start = function() { 6 | if (running) { 7 | throw new Error('Stopwatch has already started!'); 8 | } else { 9 | running = true; 10 | startTime = new Date(); 11 | } 12 | }; 13 | 14 | this.stop = function() { 15 | if (!running) { 16 | throw new Error('Stopwatch is not started!'); 17 | } else { 18 | running = false; 19 | endTime = new Date(); 20 | 21 | const seconds = (endTime.getTime() - startTime.getTime()) / 1000; 22 | duration += seconds; 23 | } 24 | }; 25 | 26 | this.reset = function() { 27 | startTime = null; 28 | endTime = null; 29 | running = false; 30 | duration = 0; 31 | }; 32 | 33 | Object.defineProperty(this, 'duration', { 34 | get: function() { 35 | return duration; 36 | } 37 | }); 38 | } 39 | 40 | const sw = new Stopwatch(); 41 | 42 | // Test these in your console 43 | sw.start() // start stopwatch 44 | sw.stop() // stop stopwatch 45 | sw.reset // resets stopwatch 46 | sw.duration // check count time 47 | -------------------------------------------------------------------------------- /03-prototypes/01-inheritance.js: -------------------------------------------------------------------------------- 1 | 2 | // Types of Inheritance 3 | 4 | // Classical (In JavaScript, we don't have classes, we only have Objects). 5 | // Prototypical 6 | 7 | // It's important to note that there are no classes in JavaScript. 8 | // Functions can be used to somewhat simulate classes, but in general JavaScript is a class-less language. 9 | // Everything is an object. 10 | // When it comes to inheritance, objects inherit from objects, not classes from classes as in the "class"-ical languages. 11 | -------------------------------------------------------------------------------- /03-prototypes/02-prototypes-and-prototypical.js: -------------------------------------------------------------------------------- 1 | 2 | // A prototpye is the parent or base of another Object 3 | // Every Object EXCEPT A SINGLE OBJECT has a Prototype and inherits all the actions in its prototype. 4 | 5 | let x = {} 6 | console.log(x); // __proto__: Object 7 | 8 | // constructor: ƒ Object() 9 | // hasOwnProperty: ƒ hasOwnProperty() 10 | // isPrototypeOf: ƒ isPrototypeOf() 11 | // propertyIsEnumerable: ƒ propertyIsEnumerable() 12 | // toLocaleString: ƒ toLocaleString() 13 | // toString: ƒ toString() 14 | // valueOf: ƒ valueOf() 15 | // __defineGetter__: ƒ __defineGetter__() 16 | // __defineSetter__: ƒ __defineSetter__() 17 | // __lookupGetter__: ƒ __lookupGetter__() 18 | // __lookupSetter__: ƒ __lookupSetter__() 19 | // get __proto__: ƒ __proto__() 20 | // set __proto__: ƒ __proto__() 21 | 22 | 23 | let y = {} 24 | console.log(y); // __proto__: Object 25 | 26 | // constructor: ƒ Object() 27 | // hasOwnProperty: ƒ hasOwnProperty() 28 | // isPrototypeOf: ƒ isPrototypeOf() 29 | // p ropertyIsEnumerable: ƒ propertyIsEnumerable() 30 | // toLocaleString: ƒ toLocaleString() 31 | // toString: ƒ toString() 32 | // valueOf: ƒ valueOf() 33 | // __defineGetter__: ƒ __defineGetter__() 34 | // __defineSetter__: ƒ __defineSetter__() 35 | // __lookupGetter__: ƒ __lookupGetter__() 36 | // __lookupSetter__: ƒ __lookupSetter__() 37 | // get __proto__: ƒ __proto__() 38 | // set __proto__: ƒ __proto__() 39 | 40 | console.log(Object.getPrototypeOf(x)); 41 | console.log(Object.getPrototypeOf(y)); 42 | 43 | console.log(Object.getPrototypeOf(x) === Object.getPrototypeOf(y)); 44 | // true 45 | // x and y have the same protoype 46 | 47 | console.log(x.__proto__ === y.__proto__); 48 | // true 49 | // This style is deprecated, but you can use in console to debug 50 | 51 | 52 | // Prototypical Inheritance 53 | // when you access a property or method on an Object, JavaScript engine first checks if the method/property belongs to the Object, 54 | // else it checks the prototype down to the root till it finds it and inherits it. 55 | 56 | x.toString(); 57 | -------------------------------------------------------------------------------- /03-prototypes/03-multilevel-inheritace.js: -------------------------------------------------------------------------------- 1 | 2 | let myArray = [] 3 | console.log(myArray); // __proto__: Array(0) 4 | 5 | // concat: ƒ concat() 6 | // constructor: ƒ Array() 7 | // copyWithin: ƒ copyWithin() 8 | // entries: ƒ entries() 9 | // every: ƒ every() 10 | // fill: ƒ fill() 11 | // filter: ƒ filter() 12 | // find: ƒ find() 13 | // findIndex: ƒ findIndex() 14 | // flat: ƒ flat() 15 | // flatMap: ƒ flatMap() 16 | // forEach: ƒ forEach() 17 | // includes: ƒ includes() 18 | // indexOf: ƒ indexOf() 19 | // join: ƒ join() 20 | // keys: ƒ keys() 21 | // lastIndexOf: ƒ lastIndexOf() 22 | // length: 0 23 | // map: ƒ map() 24 | // pop: ƒ pop() 25 | // push: ƒ push() 26 | // reduce: ƒ reduce() 27 | // reduceRight: ƒ reduceRight() 28 | // reverse: ƒ reverse() 29 | // shift: ƒ shift() 30 | // slice: ƒ slice() 31 | // some: ƒ some() 32 | // sort: ƒ sort() 33 | // splice: ƒ splice() 34 | // toLocaleString: ƒ toLocaleString() 35 | // toString: ƒ toString() 36 | // unshift: ƒ unshift() 37 | // values: ƒ values() 38 | // Symbol(Symbol.iterator): ƒ values() 39 | // Symbol(Symbol.unscopables): {copyWithin: true, entries: true, fill: true, find: true, findIndex: true, …} 40 | // __proto__: Object 41 | 42 | // constructor: ƒ Object() 43 | // hasOwnProperty: ƒ hasOwnProperty() 44 | // isPrototypeOf: ƒ isPrototypeOf() 45 | // propertyIsEnumerable: ƒ propertyIsEnumerable() 46 | // toLocaleString: ƒ toLocaleString() 47 | // toString: ƒ toString() 48 | // valueOf: ƒ valueOf() 49 | // __defineGetter__: ƒ __defineGetter__() 50 | // __defineSetter__: ƒ __defineSetter__() 51 | // __lookupGetter__: ƒ __lookupGetter__() 52 | // __lookupSetter__: ƒ __lookupSetter__() 53 | // get __proto__: ƒ __proto__() 54 | // set __proto__: ƒ __proto__() 55 | 56 | 57 | // myArray inherits from the ARRAY base which inherits from the Object root. 58 | 59 | function Circle(radius) { 60 | this.radius = radius; 61 | this.draw = function() { 62 | console.log('draw'); 63 | }; 64 | } 65 | 66 | const circle = new Circle(12); 67 | console.log(circle) 68 | 69 | // Objects created by a given constructor will have the same prototypes. 70 | -------------------------------------------------------------------------------- /03-prototypes/04-property-descriptors.js: -------------------------------------------------------------------------------- 1 | 2 | let person = { name: 'Bolaji' }; 3 | console.log(person); 4 | 5 | for (let key in person) { 6 | console.log(key, person[key]) 7 | } 8 | 9 | console.log(Object.keys(person)); 10 | 11 | // In JavaScript our properties have attributes attached to them and this sometimes prevent them from being enumerated. 12 | 13 | let objectBase = Object.getPrototypeOf(person) 14 | let descriptor1 = Object.getOwnPropertyDescriptor(objectBase, 'toString'); 15 | // configurable: true 16 | // enumerable: false 17 | // value: ƒ toString() 18 | // writable: true 19 | // __proto__: Object 20 | 21 | let descriptor2 = Object.getOwnPropertyDescriptor(person, 'name'); 22 | // configurable: true 23 | // enumerable: true 24 | // value: "Bolaji" 25 | // writable: true 26 | // __proto__: Object 27 | 28 | console.log(descriptor1); 29 | console.log(descriptor2); 30 | 31 | ////////////////////////////////////////////// 32 | 33 | Object.defineProperty(person, 'name', { 34 | writable: false, 35 | enumerable: false, 36 | configurable: false 37 | }) 38 | person.name = 'Bale'; // won't work 39 | delete person.name // won't work 40 | Object.keys(person) // won't work 41 | 42 | console.log(person) 43 | 44 | -------------------------------------------------------------------------------- /03-prototypes/05-constructor-prototypes.js: -------------------------------------------------------------------------------- 1 | 2 | function Circle(radius) { 3 | this.radius = radius 4 | } 5 | const circle = new Circle(8); 6 | 7 | Circle.prototype 8 | 9 | 10 | let obj = {} 11 | console.log(Object.getPrototypeOf(obj)) // parent of obj 12 | 13 | // constructor: ƒ Object() 14 | // hasOwnProperty: ƒ hasOwnProperty() 15 | // isPrototypeOf: ƒ isPrototypeOf() 16 | // propertyIsEnumerable: ƒ propertyIsEnumerable() 17 | // toLocaleString: ƒ toLocaleString() 18 | // toString: ƒ toString() 19 | // valueOf: ƒ valueOf() 20 | // __defineGetter__: ƒ __defineGetter__() 21 | // __defineSetter__: ƒ __defineSetter__() 22 | // __lookupGetter__: ƒ __lookupGetter__() 23 | // __lookupSetter__: ƒ __lookupSetter__() 24 | // get __proto__: ƒ __proto__() 25 | // set __proto__: ƒ __proto__() 26 | 27 | Object.prototype // same Object base 28 | 29 | //////////////////////////////////////////// 30 | 31 | let array = []; 32 | 33 | console.log(Object.getPrototypeOf(array)) 34 | 35 | // concat: ƒ concat() 36 | // constructor: ƒ Array() 37 | // copyWithin: ƒ copyWithin() 38 | // entries: ƒ entries() 39 | // every: ƒ every() 40 | // fill: ƒ fill() 41 | // filter: ƒ filter() 42 | // find: ƒ find() 43 | // findIndex: ƒ findIndex() 44 | // flat: ƒ flat() 45 | // flatMap: ƒ flatMap() 46 | // forEach: ƒ forEach() 47 | // includes: ƒ includes() 48 | // indexOf: ƒ indexOf() 49 | // join: ƒ join() 50 | // keys: ƒ keys() 51 | // lastIndexOf: ƒ lastIndexOf() 52 | // length: 0 53 | // map: ƒ map() 54 | // pop: ƒ pop() 55 | // push: ƒ push() 56 | // reduce: ƒ reduce() 57 | // reduceRight: ƒ reduceRight() 58 | // reverse: ƒ reverse() 59 | // shift: ƒ shift() 60 | // slice: ƒ slice() 61 | // some: ƒ some() 62 | // sort: ƒ sort() 63 | // splice: ƒ splice() 64 | // toLocaleString: ƒ toLocaleString() 65 | // toString: ƒ toString() 66 | // unshift: ƒ unshift() 67 | // values: ƒ values() 68 | // Symbol(Symbol.iterator): ƒ values() 69 | // Symbol(Symbol.unscopables): {copyWithin: true, entries: true, fill: true, find: true, findIndex: true, …} 70 | // __proto__: Object 71 | 72 | Array.prototype // Same array base 73 | -------------------------------------------------------------------------------- /03-prototypes/06-prototype-instance-members.js: -------------------------------------------------------------------------------- 1 | 2 | function Circle(radius) { 3 | // Instance members 4 | this.radius = radius; 5 | 6 | this.move = function() { 7 | this.draw(); 8 | console.log('moving'); 9 | } 10 | } 11 | 12 | // Prototype members 13 | Circle.prototype.draw = function () { 14 | console.log('draw'); 15 | } 16 | 17 | const circle1 = new Circle(3); 18 | const circle2 = new Circle(5); 19 | 20 | console.log(circle1); 21 | console.log(circle2); 22 | 23 | circle1.move(); 24 | 25 | circle1.toString() // "[object Object]" 26 | 27 | // You can change the behaviour of root prototype methods. 28 | 29 | Circle.prototype.toString = function() { 30 | return 'Circle with radius ' + this.radius; 31 | } 32 | 33 | console.log(circle1.toString()) 34 | // Circle with radius 3 35 | -------------------------------------------------------------------------------- /03-prototypes/07-iterating-instance-and-prototype-members.js: -------------------------------------------------------------------------------- 1 | 2 | function Circle(radius) { 3 | // Instance members 4 | this.radius = radius; 5 | 6 | this.move = function() {; 7 | console.log('moving'); 8 | } 9 | } 10 | 11 | const circle1 = new Circle(3); 12 | 13 | // Prototype members 14 | Circle.prototype.draw = function () { 15 | console.log('draw'); 16 | } 17 | 18 | console.log(circle1); 19 | 20 | // Only returns instance memebers 21 | console.log(Object.keys(circle1)); 22 | // (2) ["radius", "move"] 23 | 24 | 25 | // Returns all members (instance + prototype) 26 | for (let key in circle1) { 27 | console.log(key); 28 | } 29 | // radius 30 | // move 31 | // draw 32 | 33 | let c = circle1.hasOwnProperty('radius'); // true 34 | let d = circle1.hasOwnProperty('draw'); // false 35 | 36 | console.log(c) 37 | console.log(d) 38 | -------------------------------------------------------------------------------- /03-prototypes/08-built-in-methods-tip.js: -------------------------------------------------------------------------------- 1 | 2 | Array.prototype.shuffle = function() { 3 | // .. 4 | }; 5 | 6 | const array = []; 7 | array.shuffle(); 8 | 9 | // DON'T MODIFY OBJECTS YOU DON'T OWN 10 | // DON'T OVERWRITE, ADD OR REMOVE EXISTING METHODS IN THE BUILT IN OBJECTS 11 | // Some framework might have used that method already, in future versions of JavaScript, that method might be added to the built in methods. 12 | // To play safe and avoid unnessesary bugs, avoid modifying built in objects. 13 | -------------------------------------------------------------------------------- /03-prototypes/09-premature-optimization.js: -------------------------------------------------------------------------------- 1 | 2 | function Stopwatch() { 3 | let startTime, endTime, running, duration = 0; 4 | 5 | Object.defineProperty(this, 'duration', { 6 | get: function() { 7 | return duration; 8 | }, 9 | set: function(value) { 10 | duration = value; 11 | } 12 | }); 13 | Object.defineProperty(this, 'startTime', { 14 | get: function() { 15 | return startTime; 16 | } 17 | }); 18 | Object.defineProperty(this, 'endTime', { 19 | get: function() { 20 | return endTime; 21 | } 22 | }); 23 | Object.defineProperty(this, 'running', { 24 | get: function() { 25 | return running; 26 | } 27 | }); 28 | } 29 | 30 | Stopwatch.prototype.start = function() { 31 | if (this.running) { 32 | throw new Error('Stopwatch has already started!'); 33 | } else { 34 | this.running = true; 35 | this.startTime = new Date(); 36 | } 37 | }; 38 | 39 | Stopwatch.prototype.stop = function() { 40 | if (!this.running) { 41 | throw new Error('Stopwatch is not started!'); 42 | } else { 43 | this.running = false; 44 | this.endTime = new Date(); 45 | 46 | const seconds = (endTime.getTime() - startTime.getTime()) / 1000; 47 | this.duration += seconds; 48 | } 49 | }; 50 | 51 | Stopwatch.prototype.reset = function() { 52 | this.startTime = null; 53 | this.endTime = null; 54 | this.running = false; 55 | this.duration = 0; 56 | }; 57 | 58 | const sw = new Stopwatch(); 59 | 60 | 61 | // Premature optimization is the root of all evil 62 | -------------------------------------------------------------------------------- /04-prototypical-inheritance/01-creating-your-own-prototypical-instance.js: -------------------------------------------------------------------------------- 1 | 2 | function Shape() { 3 | 4 | } 5 | 6 | Shape.prototype.duplicate = function() { 7 | console.log('duplicate'); 8 | } 9 | 10 | function Circle(radius) { 11 | this.radius = radius; 12 | } 13 | 14 | Circle.prototype = Object.create(Shape.prototype) 15 | 16 | Circle.prototype.draw = function() { 17 | console.log('draw'); 18 | } 19 | 20 | const s = new Shape(); 21 | const c = new Circle(1); 22 | -------------------------------------------------------------------------------- /04-prototypical-inheritance/02-resetting-the-constructor.js: -------------------------------------------------------------------------------- 1 | 2 | function Shape() { 3 | 4 | } 5 | 6 | Shape.prototype.duplicate = function() { 7 | console.log('duplicate'); 8 | } 9 | 10 | function Circle(radius) { 11 | this.radius = radius; 12 | } 13 | 14 | // Circle.prototype.constructor = Circle; 15 | // new Circle.prototype.constructor() => new Circle(); 16 | 17 | Circle.prototype = Object.create(Shape.prototype) 18 | Circle.prototype.constructor = Circle; 19 | 20 | Circle.prototype.draw = function() { 21 | console.log('draw'); 22 | } 23 | 24 | const s = new Shape(); 25 | const c = new Circle(1); 26 | -------------------------------------------------------------------------------- /04-prototypical-inheritance/03-calling-the-super-constructor.js: -------------------------------------------------------------------------------- 1 | 2 | function Shape(color) { 3 | this.color = color; 4 | } 5 | 6 | Shape.prototype.duplicate = function() { 7 | console.log('duplicate'); 8 | } 9 | 10 | function Circle(radius, color) { 11 | Shape.call(this, color); 12 | this.radius = radius; 13 | } 14 | 15 | Circle.prototype = Object.create(Shape.prototype) 16 | Circle.prototype.constructor = Circle; 17 | 18 | Circle.prototype.draw = function() { 19 | console.log('draw'); 20 | } 21 | 22 | const s = new Shape('green'); 23 | const c = new Circle(1, 'red'); 24 | -------------------------------------------------------------------------------- /04-prototypical-inheritance/04-intermediate-function-Inheritance.js: -------------------------------------------------------------------------------- 1 | 2 | function Shape(color) { 3 | this.color = color; 4 | } 5 | 6 | Shape.prototype.duplicate = function() { 7 | console.log('duplicate'); 8 | } 9 | 10 | function extend(Child, Parent) { 11 | Child.prototype = Object.create(Parent.prototype) 12 | Child.prototype.constructor = Child; 13 | } 14 | 15 | function Circle(radius, color) { 16 | Shape.call(this, color); 17 | this.radius = radius; 18 | } 19 | extend(Circle, Shape) 20 | 21 | Circle.prototype.draw = function() { 22 | console.log('draw'); 23 | } 24 | 25 | function Square(size) { 26 | this.size = size; 27 | } 28 | 29 | extend(Square, Shape); 30 | 31 | 32 | const s = new Shape('green'); 33 | const c = new Circle(1, 'red'); 34 | const sq = new Square(10) 35 | -------------------------------------------------------------------------------- /04-prototypical-inheritance/05-method-overriding.js: -------------------------------------------------------------------------------- 1 | 2 | function extend(Child, Parent) { 3 | Child.prototype = Object.create(Parent.prototype) 4 | Child.prototype.constructor = Child; 5 | } 6 | 7 | function Shape() { 8 | } 9 | 10 | Shape.prototype.duplicate = function() { 11 | console.log('duplicate shape'); 12 | } 13 | 14 | function Circle() { 15 | } 16 | 17 | extend(Circle, Shape); 18 | 19 | Circle.prototype.duplicate = function() { 20 | Shape.prototype.duplicate.call(this); 21 | 22 | console.log('duplicate circle'); 23 | } 24 | 25 | const c = new Circle(); 26 | -------------------------------------------------------------------------------- /04-prototypical-inheritance/06-polymorphism.js: -------------------------------------------------------------------------------- 1 | 2 | function extend(Child, Parent) { 3 | Child.prototype = Object.create(Parent.prototype) 4 | Child.prototype.constructor = Child; 5 | } 6 | 7 | function Shape() { 8 | } 9 | 10 | Shape.prototype.duplicate = function() { 11 | console.log('duplicate shape'); 12 | } 13 | 14 | function Circle() { 15 | } 16 | extend(Circle, Shape); 17 | 18 | Circle.prototype.duplicate = function() { 19 | console.log('duplicate circle'); 20 | } 21 | 22 | function Square() { 23 | } 24 | extend(Square, Shape) 25 | 26 | Square.prototype.duplicate = function() { 27 | console.log('duplicate square'); 28 | } 29 | 30 | const shapes = [ 31 | new Circle(), 32 | new Square(), 33 | new Circle(), 34 | new Square 35 | ]; 36 | 37 | shapes.map(shape => { 38 | shape.duplicate(); 39 | }) 40 | -------------------------------------------------------------------------------- /04-prototypical-inheritance/07-mixins.js: -------------------------------------------------------------------------------- 1 | 2 | function mixin(target, ...sources) { 3 | Object.assign(target, ...sources); 4 | } 5 | 6 | const canEat = { 7 | eat: function() { 8 | this.hunger--; 9 | console.log('eating'); 10 | } 11 | }; 12 | 13 | const canWalk = { 14 | walk: function() { 15 | console.log('walking'); 16 | } 17 | }; 18 | 19 | const canSwim = { 20 | swim: function() { 21 | console.log('swimming'); 22 | } 23 | }; 24 | 25 | function Person() { 26 | } 27 | 28 | mixin(Person.prototype, canEat, canWalk); 29 | 30 | const person = new Person() 31 | console.log(person); 32 | 33 | function Goldfish() { 34 | } 35 | 36 | mixin(Goldfish.prototype, canEat, canSwim); 37 | 38 | const fish = new Goldfish() 39 | console.log(fish) 40 | -------------------------------------------------------------------------------- /04-prototypical-inheritance/08-prototypical-inheritance.js: -------------------------------------------------------------------------------- 1 | 2 | function HtmlElement() { 3 | this.click = function() { 4 | console.log('clicked') 5 | } 6 | } 7 | 8 | HtmlElement.prototype.focus = function() { 9 | console.log('focused') 10 | } 11 | 12 | function HtmlSelectElement(items = []) { 13 | this.items = items; 14 | 15 | this.addItem = function(item) { 16 | this.items.push(item); 17 | } 18 | 19 | this.removeItem = function(item) { 20 | this.items.splice(this.items.indexOf(item), 1); 21 | } 22 | } 23 | 24 | HtmlSelectElement.prototype = new HtmlElement(); 25 | HtmlSelectElement.prototype.constructor = HtmlElement; 26 | 27 | const e = new HtmlElement(); 28 | const s = new HtmlSelectElement([1, 3, 6]); 29 | -------------------------------------------------------------------------------- /04-prototypical-inheritance/09-exercise-polymorphism.js: -------------------------------------------------------------------------------- 1 | 2 | function HtmlElement() { 3 | this.click = function() { 4 | console.log('clicked') 5 | } 6 | } 7 | 8 | HtmlElement.prototype.focus = function() { 9 | console.log('focused') 10 | } 11 | 12 | function HtmlSelectElement(items = []) { 13 | this.items = items; 14 | 15 | this.addItem = function(item) { 16 | this.items.push(item); 17 | } 18 | 19 | this.removeItem = function(item) { 20 | this.items.splice(this.items.indexOf(item), 1); 21 | } 22 | 23 | this.render = function() { 24 | return document.write(` 25 | `); 28 | } 29 | } 30 | 31 | HtmlSelectElement.prototype = new HtmlElement(); 32 | HtmlSelectElement.prototype.constructor = HtmlElement; 33 | 34 | function HtmlImageElement(src) { 35 | this.src = src; 36 | 37 | this.render = function() { 38 | return document.write(``); 39 | } 40 | } 41 | HtmlImageElement.prototype = new HtmlElement(); 42 | HtmlImageElement.prototype.constructor = HtmlImageElement; 43 | 44 | const e = new HtmlElement(); 45 | const s = new HtmlSelectElement([1, 3, 6]); 46 | const img = new HtmlImageElement('https://res.cloudinary.com/iambeejayayo/image/upload/v1547954566/fav-500.png'); 47 | 48 | // run img.render() in console to load image 49 | -------------------------------------------------------------------------------- /05-es6-classes/01-es6-classes.js: -------------------------------------------------------------------------------- 1 | 2 | // function Circle(radius) { 3 | // this.radius = radius; 4 | 5 | // this.draw = function() { 6 | // console.log('drawing'); 7 | // } 8 | // } 9 | 10 | class Circle { 11 | constructor(radius) { 12 | this.radius = radius; 13 | this.move = function() { 14 | console.log('moving'); 15 | } 16 | } 17 | 18 | draw() { 19 | console.log('drawing'); 20 | } 21 | } 22 | 23 | const c = new Circle(2); 24 | -------------------------------------------------------------------------------- /05-es6-classes/02-hoisting.js: -------------------------------------------------------------------------------- 1 | 2 | sayHello() //valid 3 | sayGoodBye() //error 4 | 5 | // Function Declaration 6 | function sayHello() { 7 | console.log('hello'); 8 | } 9 | 10 | // Function Expression 11 | const sayGoodBye = function() { 12 | console.log('goodbye') 13 | }; 14 | 15 | //Function declarations are hoisted [Moved to the top of the JavaScript file 16 | //before runtime and will run first before others] 17 | 18 | //Function Expression are not hoisted 19 | 20 | //Class Declaration 21 | class Circle { 22 | } 23 | 24 | //Class Expression 25 | const square = class { 26 | } 27 | 28 | //Class declaration are not hoisted 29 | -------------------------------------------------------------------------------- /05-es6-classes/03-static-methods.js: -------------------------------------------------------------------------------- 1 | 2 | class Circle { 3 | constructor(radius) { 4 | this.radius = radius; 5 | } 6 | 7 | // Instance method 8 | draw() { 9 | console.log('drawing'); 10 | } 11 | 12 | // Static method 13 | static parse(str) { 14 | const radius = JSON.parse(str).radius; 15 | return new Circle(radius); 16 | } 17 | } 18 | 19 | const c = Circle.parse('{ "radius": 2 }'); 20 | console.log(c); 21 | 22 | class Math2 { 23 | static abs(value) { 24 | // .. 25 | } 26 | } 27 | 28 | Math2.abs 29 | -------------------------------------------------------------------------------- /05-es6-classes/04-the-this-keyword.js: -------------------------------------------------------------------------------- 1 | 2 | // 'use strict'; 3 | 4 | // const Circle = function() { 5 | // this.draw = function() { 6 | // console.log(this); 7 | // } 8 | // }; 9 | 10 | // const c = new Circle(); 11 | // // Method call 12 | // c.draw(); 13 | 14 | // const draw = c.draw; 15 | 16 | // // Function call 17 | // draw(); 18 | 19 | 20 | class Circle { 21 | draw() { 22 | console.log(this); 23 | } 24 | } 25 | 26 | const c = new Circle(); 27 | const draw = c.draw; 28 | draw(); 29 | -------------------------------------------------------------------------------- /05-es6-classes/05-private-members-using-symbols.js: -------------------------------------------------------------------------------- 1 | 2 | const _radius = Symbol(); 3 | const _draw = Symbol(); 4 | 5 | class Circle { 6 | constructor(radius) { 7 | this[_radius] = radius; 8 | } 9 | [_draw]() { 10 | console.log('drawing') 11 | } 12 | } 13 | 14 | const c = new Circle(3); 15 | -------------------------------------------------------------------------------- /05-es6-classes/06-private-members-using-weakmaps.js: -------------------------------------------------------------------------------- 1 | 2 | const _radius = new WeakMap(); 3 | const _move = new WeakMap(); 4 | 5 | class Circle { 6 | constructor(radius) { 7 | _radius.set(this, radius); 8 | 9 | _move.set(this, () => { 10 | console.log('moving!', this); 11 | }) 12 | } 13 | draw() { 14 | _move.get(this)(); 15 | console.log('drawing!'); 16 | } 17 | } 18 | 19 | const c = new Circle(3); 20 | c.draw(); 21 | -------------------------------------------------------------------------------- /05-es6-classes/07-private-members-using-hash.js: -------------------------------------------------------------------------------- 1 | class Account { 2 | #balance = 0; 3 | constructor(name) { 4 | this.name = name; 5 | } 6 | 7 | getBalance() { 8 | console.log(this.#balance); 9 | } 10 | } 11 | 12 | const account = new Account("Alex"); 13 | // You can't access private members of a class using the dot operator. 14 | // Only the class itself can access private members. 15 | console.log(account.balance); // undefined 16 | account.getBalance(); // 0 17 | -------------------------------------------------------------------------------- /05-es6-classes/08-getters-setters.js: -------------------------------------------------------------------------------- 1 | 2 | const _radius = new WeakMap(); 3 | 4 | class Circle { 5 | constructor(radius) { 6 | _radius.set(this, radius); 7 | } 8 | 9 | get radius() { 10 | return _radius.get(this); 11 | } 12 | set radius(value) { 13 | if(value <=0) { 14 | throw new Error('Invalid radius'); 15 | } 16 | else { 17 | _radius.set(this, value); 18 | } 19 | } 20 | } 21 | 22 | const c = new Circle(3); 23 | c.radius 24 | -------------------------------------------------------------------------------- /05-es6-classes/09-inheritance.js: -------------------------------------------------------------------------------- 1 | 2 | class Shape { 3 | constructor(color) { 4 | this.color = color; 5 | } 6 | 7 | move() { 8 | console.log('moving'); 9 | } 10 | } 11 | 12 | class Circle extends Shape{ 13 | constructor(color, radius) { 14 | super(color); 15 | this.radius = radius; 16 | } 17 | 18 | draw() { 19 | console.log('drawing'); 20 | } 21 | } 22 | 23 | const c = new Circle('red', 5); 24 | -------------------------------------------------------------------------------- /05-es6-classes/10-exercise-stack.js: -------------------------------------------------------------------------------- 1 | 2 | const _items = new WeakMap(); 3 | 4 | class Stack { 5 | constructor() { 6 | _items.set(this, []); 7 | } 8 | 9 | push(obj) { 10 | _items.get(this).push(obj); 11 | } 12 | 13 | pop() { 14 | const items = _items.get(this); 15 | 16 | if(items.length === 0) { 17 | throw new Error('Stack is empty') 18 | } 19 | else { 20 | return items.pop(); 21 | } 22 | } 23 | 24 | peek() { 25 | const items = _items.get(this); 26 | 27 | if(items.length === 0) { 28 | throw new Error('Stack is empty') 29 | } 30 | else { 31 | return items[items.length - 1]; 32 | } 33 | } 34 | 35 | get count() { 36 | return _items.get(this).length; 37 | } 38 | } 39 | 40 | const stack = new Stack(); 41 | 42 | // test in console 43 | stack.count // to view stacks lenght 44 | stack.peek(); // to view top item in stack 45 | stack.push('a'); // to add item to stack 46 | stack.pop(); // to remove top item from stack 47 | -------------------------------------------------------------------------------- /05-es6-classes/11-method-overidding.js: -------------------------------------------------------------------------------- 1 | 2 | class Shape { 3 | move() { 4 | console.log('moving'); 5 | } 6 | } 7 | 8 | class Circle extends Shape { 9 | move() { 10 | super.move() 11 | console.log('Circle moving') 12 | } 13 | } 14 | 15 | const c = new Circle(); 16 | -------------------------------------------------------------------------------- /06-es6-tooling/01-modules.js: -------------------------------------------------------------------------------- 1 | 2 | // In JavaScript, the word “modules” refers to small units of independent, reusable code. 3 | // They are the foundation of many JavaScript design patterns and are critically necessary 4 | // when building any substantial JavaScript-based application. 5 | 6 | // In simpler terms, modules help you to write code in your module and expose only 7 | // those parts of the code that should be accessed by other parts of your code. 8 | 9 | // Read more here: https://bolajiayodeji.com/introduction-to-es6-modules/ 10 | 11 | // Maintain 12 | // Reuse 13 | // Abstract 14 | 15 | 16 | // AMD (Browser apps) 17 | // Common JS (Node.js) * 18 | // UMD (Both) 19 | // ES6 Modules (All) * 20 | -------------------------------------------------------------------------------- /06-es6-tooling/02-es6-tooling.js: -------------------------------------------------------------------------------- 1 | 2 | // Transpiler (Transpile and compile js into all browser compatible code) -> BABEL 3 | // Bundler (Combiles all JS files into a bundle) -> WEBPACK 4 | -------------------------------------------------------------------------------- /06-es6-tooling/commonjs-modules/circle.js: -------------------------------------------------------------------------------- 1 | // Implementation detail 2 | const _radius = new WeakMap(); 3 | 4 | // Public interface 5 | class Circle { 6 | constructor(radius) { 7 | _radius.set(this, radius); 8 | } 9 | 10 | draw() { 11 | console.log('Circle with radius ' + _radius.get(this)); 12 | } 13 | } 14 | 15 | module.exports = Circle; 16 | -------------------------------------------------------------------------------- /06-es6-tooling/commonjs-modules/index.js: -------------------------------------------------------------------------------- 1 | 2 | const Circle = require('./circle'); 3 | 4 | const c = new Circle(11); 5 | c.draw(); 6 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-modules/circle.js: -------------------------------------------------------------------------------- 1 | 2 | const _radius = new WeakMap(); 3 | 4 | export class Circle { 5 | constructor(radius) { 6 | _radius.set(this, radius); 7 | } 8 | 9 | draw() { 10 | console.log('Circle with radius ' + _radius.get(this)); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-modules/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | OOP JavaScript - Getting Started 9 | 10 | 11 | 12 | 13 |

OOP JavaScript

14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-modules/index.js: -------------------------------------------------------------------------------- 1 | 2 | import {Circle} from './circle.js'; 3 | 4 | const c = new Circle(11); 5 | c.draw(); 6 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/babel-demo/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/babel-demo/build/circle.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.Circle = void 0; 7 | 8 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 9 | 10 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 11 | 12 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 13 | 14 | var _radius = new WeakMap(); 15 | 16 | var Circle = 17 | /*#__PURE__*/ 18 | function () { 19 | function Circle(radius) { 20 | _classCallCheck(this, Circle); 21 | 22 | _radius.set(this, radius); 23 | } 24 | 25 | _createClass(Circle, [{ 26 | key: "draw", 27 | value: function draw() { 28 | console.log('Circle with radius ' + _radius.get(this)); 29 | } 30 | }]); 31 | 32 | return Circle; 33 | }(); 34 | 35 | exports.Circle = Circle; -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/babel-demo/build/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var _circle = require("./circle.js"); 4 | 5 | var c = new _circle.Circle(11); 6 | c.draw(); -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/babel-demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | OOP JavaScript - Getting Started 9 | 10 | 11 | 12 | 13 |

OOP JavaScript

14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/babel-demo/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es6-tooling", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/cli": { 8 | "version": "7.2.3", 9 | "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.2.3.tgz", 10 | "integrity": "sha512-bfna97nmJV6nDJhXNPeEfxyMjWnt6+IjUAaDPiYRTBlm8L41n8nvw6UAqUCbvpFfU246gHPxW7sfWwqtF4FcYA==", 11 | "dev": true, 12 | "requires": { 13 | "chokidar": "^2.0.3", 14 | "commander": "^2.8.1", 15 | "convert-source-map": "^1.1.0", 16 | "fs-readdir-recursive": "^1.1.0", 17 | "glob": "^7.0.0", 18 | "lodash": "^4.17.10", 19 | "mkdirp": "^0.5.1", 20 | "output-file-sync": "^2.0.0", 21 | "slash": "^2.0.0", 22 | "source-map": "^0.5.0" 23 | }, 24 | "dependencies": { 25 | "anymatch": { 26 | "version": "2.0.0", 27 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", 28 | "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", 29 | "dev": true, 30 | "optional": true, 31 | "requires": { 32 | "micromatch": "^3.1.4", 33 | "normalize-path": "^2.1.1" 34 | }, 35 | "dependencies": { 36 | "normalize-path": { 37 | "version": "2.1.1", 38 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 39 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 40 | "dev": true, 41 | "optional": true, 42 | "requires": { 43 | "remove-trailing-separator": "^1.0.1" 44 | } 45 | } 46 | } 47 | }, 48 | "arr-diff": { 49 | "version": "4.0.0", 50 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 51 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 52 | "dev": true, 53 | "optional": true 54 | }, 55 | "array-unique": { 56 | "version": "0.3.2", 57 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 58 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 59 | "dev": true, 60 | "optional": true 61 | }, 62 | "braces": { 63 | "version": "2.3.2", 64 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 65 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 66 | "dev": true, 67 | "optional": true, 68 | "requires": { 69 | "arr-flatten": "^1.1.0", 70 | "array-unique": "^0.3.2", 71 | "extend-shallow": "^2.0.1", 72 | "fill-range": "^4.0.0", 73 | "isobject": "^3.0.1", 74 | "repeat-element": "^1.1.2", 75 | "snapdragon": "^0.8.1", 76 | "snapdragon-node": "^2.0.1", 77 | "split-string": "^3.0.2", 78 | "to-regex": "^3.0.1" 79 | }, 80 | "dependencies": { 81 | "extend-shallow": { 82 | "version": "2.0.1", 83 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 84 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 85 | "dev": true, 86 | "optional": true, 87 | "requires": { 88 | "is-extendable": "^0.1.0" 89 | } 90 | } 91 | } 92 | }, 93 | "chokidar": { 94 | "version": "2.1.5", 95 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", 96 | "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", 97 | "dev": true, 98 | "optional": true, 99 | "requires": { 100 | "anymatch": "^2.0.0", 101 | "async-each": "^1.0.1", 102 | "braces": "^2.3.2", 103 | "fsevents": "^1.2.7", 104 | "glob-parent": "^3.1.0", 105 | "inherits": "^2.0.3", 106 | "is-binary-path": "^1.0.0", 107 | "is-glob": "^4.0.0", 108 | "normalize-path": "^3.0.0", 109 | "path-is-absolute": "^1.0.0", 110 | "readdirp": "^2.2.1", 111 | "upath": "^1.1.1" 112 | } 113 | }, 114 | "expand-brackets": { 115 | "version": "2.1.4", 116 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 117 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 118 | "dev": true, 119 | "optional": true, 120 | "requires": { 121 | "debug": "^2.3.3", 122 | "define-property": "^0.2.5", 123 | "extend-shallow": "^2.0.1", 124 | "posix-character-classes": "^0.1.0", 125 | "regex-not": "^1.0.0", 126 | "snapdragon": "^0.8.1", 127 | "to-regex": "^3.0.1" 128 | }, 129 | "dependencies": { 130 | "define-property": { 131 | "version": "0.2.5", 132 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 133 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 134 | "dev": true, 135 | "optional": true, 136 | "requires": { 137 | "is-descriptor": "^0.1.0" 138 | } 139 | }, 140 | "extend-shallow": { 141 | "version": "2.0.1", 142 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 143 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 144 | "dev": true, 145 | "optional": true, 146 | "requires": { 147 | "is-extendable": "^0.1.0" 148 | } 149 | }, 150 | "is-accessor-descriptor": { 151 | "version": "0.1.6", 152 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 153 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 154 | "dev": true, 155 | "optional": true, 156 | "requires": { 157 | "kind-of": "^3.0.2" 158 | }, 159 | "dependencies": { 160 | "kind-of": { 161 | "version": "3.2.2", 162 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 163 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 164 | "dev": true, 165 | "optional": true, 166 | "requires": { 167 | "is-buffer": "^1.1.5" 168 | } 169 | } 170 | } 171 | }, 172 | "is-data-descriptor": { 173 | "version": "0.1.4", 174 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 175 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 176 | "dev": true, 177 | "optional": true, 178 | "requires": { 179 | "kind-of": "^3.0.2" 180 | }, 181 | "dependencies": { 182 | "kind-of": { 183 | "version": "3.2.2", 184 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 185 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 186 | "dev": true, 187 | "optional": true, 188 | "requires": { 189 | "is-buffer": "^1.1.5" 190 | } 191 | } 192 | } 193 | }, 194 | "is-descriptor": { 195 | "version": "0.1.6", 196 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 197 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 198 | "dev": true, 199 | "optional": true, 200 | "requires": { 201 | "is-accessor-descriptor": "^0.1.6", 202 | "is-data-descriptor": "^0.1.4", 203 | "kind-of": "^5.0.0" 204 | } 205 | }, 206 | "kind-of": { 207 | "version": "5.1.0", 208 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 209 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 210 | "dev": true, 211 | "optional": true 212 | } 213 | } 214 | }, 215 | "extglob": { 216 | "version": "2.0.4", 217 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 218 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 219 | "dev": true, 220 | "optional": true, 221 | "requires": { 222 | "array-unique": "^0.3.2", 223 | "define-property": "^1.0.0", 224 | "expand-brackets": "^2.1.4", 225 | "extend-shallow": "^2.0.1", 226 | "fragment-cache": "^0.2.1", 227 | "regex-not": "^1.0.0", 228 | "snapdragon": "^0.8.1", 229 | "to-regex": "^3.0.1" 230 | }, 231 | "dependencies": { 232 | "define-property": { 233 | "version": "1.0.0", 234 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 235 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 236 | "dev": true, 237 | "optional": true, 238 | "requires": { 239 | "is-descriptor": "^1.0.0" 240 | } 241 | }, 242 | "extend-shallow": { 243 | "version": "2.0.1", 244 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 245 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 246 | "dev": true, 247 | "optional": true, 248 | "requires": { 249 | "is-extendable": "^0.1.0" 250 | } 251 | } 252 | } 253 | }, 254 | "fill-range": { 255 | "version": "4.0.0", 256 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 257 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 258 | "dev": true, 259 | "optional": true, 260 | "requires": { 261 | "extend-shallow": "^2.0.1", 262 | "is-number": "^3.0.0", 263 | "repeat-string": "^1.6.1", 264 | "to-regex-range": "^2.1.0" 265 | }, 266 | "dependencies": { 267 | "extend-shallow": { 268 | "version": "2.0.1", 269 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 270 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 271 | "dev": true, 272 | "optional": true, 273 | "requires": { 274 | "is-extendable": "^0.1.0" 275 | } 276 | } 277 | } 278 | }, 279 | "glob-parent": { 280 | "version": "3.1.0", 281 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 282 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 283 | "dev": true, 284 | "optional": true, 285 | "requires": { 286 | "is-glob": "^3.1.0", 287 | "path-dirname": "^1.0.0" 288 | }, 289 | "dependencies": { 290 | "is-glob": { 291 | "version": "3.1.0", 292 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 293 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 294 | "dev": true, 295 | "optional": true, 296 | "requires": { 297 | "is-extglob": "^2.1.0" 298 | } 299 | } 300 | } 301 | }, 302 | "is-accessor-descriptor": { 303 | "version": "1.0.0", 304 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 305 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 306 | "dev": true, 307 | "optional": true, 308 | "requires": { 309 | "kind-of": "^6.0.0" 310 | } 311 | }, 312 | "is-data-descriptor": { 313 | "version": "1.0.0", 314 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 315 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 316 | "dev": true, 317 | "optional": true, 318 | "requires": { 319 | "kind-of": "^6.0.0" 320 | } 321 | }, 322 | "is-descriptor": { 323 | "version": "1.0.2", 324 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 325 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 326 | "dev": true, 327 | "optional": true, 328 | "requires": { 329 | "is-accessor-descriptor": "^1.0.0", 330 | "is-data-descriptor": "^1.0.0", 331 | "kind-of": "^6.0.2" 332 | } 333 | }, 334 | "is-extglob": { 335 | "version": "2.1.1", 336 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 337 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 338 | "dev": true, 339 | "optional": true 340 | }, 341 | "is-glob": { 342 | "version": "4.0.1", 343 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 344 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 345 | "dev": true, 346 | "optional": true, 347 | "requires": { 348 | "is-extglob": "^2.1.1" 349 | } 350 | }, 351 | "is-number": { 352 | "version": "3.0.0", 353 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 354 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 355 | "dev": true, 356 | "optional": true, 357 | "requires": { 358 | "kind-of": "^3.0.2" 359 | }, 360 | "dependencies": { 361 | "kind-of": { 362 | "version": "3.2.2", 363 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 364 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 365 | "dev": true, 366 | "optional": true, 367 | "requires": { 368 | "is-buffer": "^1.1.5" 369 | } 370 | } 371 | } 372 | }, 373 | "isobject": { 374 | "version": "3.0.1", 375 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 376 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 377 | "dev": true, 378 | "optional": true 379 | }, 380 | "kind-of": { 381 | "version": "6.0.2", 382 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 383 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 384 | "dev": true, 385 | "optional": true 386 | }, 387 | "micromatch": { 388 | "version": "3.1.10", 389 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 390 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 391 | "dev": true, 392 | "optional": true, 393 | "requires": { 394 | "arr-diff": "^4.0.0", 395 | "array-unique": "^0.3.2", 396 | "braces": "^2.3.1", 397 | "define-property": "^2.0.2", 398 | "extend-shallow": "^3.0.2", 399 | "extglob": "^2.0.4", 400 | "fragment-cache": "^0.2.1", 401 | "kind-of": "^6.0.2", 402 | "nanomatch": "^1.2.9", 403 | "object.pick": "^1.3.0", 404 | "regex-not": "^1.0.0", 405 | "snapdragon": "^0.8.1", 406 | "to-regex": "^3.0.2" 407 | } 408 | }, 409 | "normalize-path": { 410 | "version": "3.0.0", 411 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 412 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 413 | "dev": true, 414 | "optional": true 415 | }, 416 | "output-file-sync": { 417 | "version": "2.0.1", 418 | "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", 419 | "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", 420 | "dev": true, 421 | "requires": { 422 | "graceful-fs": "^4.1.11", 423 | "is-plain-obj": "^1.1.0", 424 | "mkdirp": "^0.5.1" 425 | } 426 | }, 427 | "slash": { 428 | "version": "2.0.0", 429 | "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", 430 | "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", 431 | "dev": true 432 | } 433 | } 434 | }, 435 | "@babel/code-frame": { 436 | "version": "7.0.0", 437 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", 438 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", 439 | "dev": true, 440 | "requires": { 441 | "@babel/highlight": "^7.0.0" 442 | } 443 | }, 444 | "@babel/core": { 445 | "version": "7.4.0", 446 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.0.tgz", 447 | "integrity": "sha512-Dzl7U0/T69DFOTwqz/FJdnOSWS57NpjNfCwMKHABr589Lg8uX1RrlBIJ7L5Dubt/xkLsx0xH5EBFzlBVes1ayA==", 448 | "dev": true, 449 | "requires": { 450 | "@babel/code-frame": "^7.0.0", 451 | "@babel/generator": "^7.4.0", 452 | "@babel/helpers": "^7.4.0", 453 | "@babel/parser": "^7.4.0", 454 | "@babel/template": "^7.4.0", 455 | "@babel/traverse": "^7.4.0", 456 | "@babel/types": "^7.4.0", 457 | "convert-source-map": "^1.1.0", 458 | "debug": "^4.1.0", 459 | "json5": "^2.1.0", 460 | "lodash": "^4.17.11", 461 | "resolve": "^1.3.2", 462 | "semver": "^5.4.1", 463 | "source-map": "^0.5.0" 464 | }, 465 | "dependencies": { 466 | "debug": { 467 | "version": "4.1.1", 468 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 469 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 470 | "dev": true, 471 | "requires": { 472 | "ms": "^2.1.1" 473 | } 474 | }, 475 | "json5": { 476 | "version": "2.1.0", 477 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", 478 | "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", 479 | "dev": true, 480 | "requires": { 481 | "minimist": "^1.2.0" 482 | } 483 | }, 484 | "minimist": { 485 | "version": "1.2.0", 486 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 487 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 488 | "dev": true 489 | }, 490 | "ms": { 491 | "version": "2.1.1", 492 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 493 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 494 | "dev": true 495 | } 496 | } 497 | }, 498 | "@babel/generator": { 499 | "version": "7.4.0", 500 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", 501 | "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", 502 | "dev": true, 503 | "requires": { 504 | "@babel/types": "^7.4.0", 505 | "jsesc": "^2.5.1", 506 | "lodash": "^4.17.11", 507 | "source-map": "^0.5.0", 508 | "trim-right": "^1.0.1" 509 | }, 510 | "dependencies": { 511 | "jsesc": { 512 | "version": "2.5.2", 513 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 514 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 515 | "dev": true 516 | } 517 | } 518 | }, 519 | "@babel/helper-annotate-as-pure": { 520 | "version": "7.0.0", 521 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", 522 | "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", 523 | "dev": true, 524 | "requires": { 525 | "@babel/types": "^7.0.0" 526 | } 527 | }, 528 | "@babel/helper-builder-binary-assignment-operator-visitor": { 529 | "version": "7.1.0", 530 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", 531 | "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", 532 | "dev": true, 533 | "requires": { 534 | "@babel/helper-explode-assignable-expression": "^7.1.0", 535 | "@babel/types": "^7.0.0" 536 | } 537 | }, 538 | "@babel/helper-call-delegate": { 539 | "version": "7.4.0", 540 | "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz", 541 | "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==", 542 | "dev": true, 543 | "requires": { 544 | "@babel/helper-hoist-variables": "^7.4.0", 545 | "@babel/traverse": "^7.4.0", 546 | "@babel/types": "^7.4.0" 547 | } 548 | }, 549 | "@babel/helper-define-map": { 550 | "version": "7.4.0", 551 | "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz", 552 | "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==", 553 | "dev": true, 554 | "requires": { 555 | "@babel/helper-function-name": "^7.1.0", 556 | "@babel/types": "^7.4.0", 557 | "lodash": "^4.17.11" 558 | } 559 | }, 560 | "@babel/helper-explode-assignable-expression": { 561 | "version": "7.1.0", 562 | "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", 563 | "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", 564 | "dev": true, 565 | "requires": { 566 | "@babel/traverse": "^7.1.0", 567 | "@babel/types": "^7.0.0" 568 | } 569 | }, 570 | "@babel/helper-function-name": { 571 | "version": "7.1.0", 572 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", 573 | "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", 574 | "dev": true, 575 | "requires": { 576 | "@babel/helper-get-function-arity": "^7.0.0", 577 | "@babel/template": "^7.1.0", 578 | "@babel/types": "^7.0.0" 579 | } 580 | }, 581 | "@babel/helper-get-function-arity": { 582 | "version": "7.0.0", 583 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", 584 | "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", 585 | "dev": true, 586 | "requires": { 587 | "@babel/types": "^7.0.0" 588 | } 589 | }, 590 | "@babel/helper-hoist-variables": { 591 | "version": "7.4.0", 592 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz", 593 | "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==", 594 | "dev": true, 595 | "requires": { 596 | "@babel/types": "^7.4.0" 597 | } 598 | }, 599 | "@babel/helper-member-expression-to-functions": { 600 | "version": "7.0.0", 601 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", 602 | "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", 603 | "dev": true, 604 | "requires": { 605 | "@babel/types": "^7.0.0" 606 | } 607 | }, 608 | "@babel/helper-module-imports": { 609 | "version": "7.0.0", 610 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", 611 | "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", 612 | "dev": true, 613 | "requires": { 614 | "@babel/types": "^7.0.0" 615 | } 616 | }, 617 | "@babel/helper-module-transforms": { 618 | "version": "7.2.2", 619 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", 620 | "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", 621 | "dev": true, 622 | "requires": { 623 | "@babel/helper-module-imports": "^7.0.0", 624 | "@babel/helper-simple-access": "^7.1.0", 625 | "@babel/helper-split-export-declaration": "^7.0.0", 626 | "@babel/template": "^7.2.2", 627 | "@babel/types": "^7.2.2", 628 | "lodash": "^4.17.10" 629 | } 630 | }, 631 | "@babel/helper-optimise-call-expression": { 632 | "version": "7.0.0", 633 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", 634 | "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", 635 | "dev": true, 636 | "requires": { 637 | "@babel/types": "^7.0.0" 638 | } 639 | }, 640 | "@babel/helper-plugin-utils": { 641 | "version": "7.0.0", 642 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", 643 | "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", 644 | "dev": true 645 | }, 646 | "@babel/helper-regex": { 647 | "version": "7.0.0", 648 | "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", 649 | "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", 650 | "dev": true, 651 | "requires": { 652 | "lodash": "^4.17.10" 653 | } 654 | }, 655 | "@babel/helper-remap-async-to-generator": { 656 | "version": "7.1.0", 657 | "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", 658 | "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", 659 | "dev": true, 660 | "requires": { 661 | "@babel/helper-annotate-as-pure": "^7.0.0", 662 | "@babel/helper-wrap-function": "^7.1.0", 663 | "@babel/template": "^7.1.0", 664 | "@babel/traverse": "^7.1.0", 665 | "@babel/types": "^7.0.0" 666 | } 667 | }, 668 | "@babel/helper-replace-supers": { 669 | "version": "7.4.0", 670 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz", 671 | "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==", 672 | "dev": true, 673 | "requires": { 674 | "@babel/helper-member-expression-to-functions": "^7.0.0", 675 | "@babel/helper-optimise-call-expression": "^7.0.0", 676 | "@babel/traverse": "^7.4.0", 677 | "@babel/types": "^7.4.0" 678 | } 679 | }, 680 | "@babel/helper-simple-access": { 681 | "version": "7.1.0", 682 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", 683 | "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", 684 | "dev": true, 685 | "requires": { 686 | "@babel/template": "^7.1.0", 687 | "@babel/types": "^7.0.0" 688 | } 689 | }, 690 | "@babel/helper-split-export-declaration": { 691 | "version": "7.4.0", 692 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", 693 | "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", 694 | "dev": true, 695 | "requires": { 696 | "@babel/types": "^7.4.0" 697 | } 698 | }, 699 | "@babel/helper-wrap-function": { 700 | "version": "7.2.0", 701 | "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", 702 | "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", 703 | "dev": true, 704 | "requires": { 705 | "@babel/helper-function-name": "^7.1.0", 706 | "@babel/template": "^7.1.0", 707 | "@babel/traverse": "^7.1.0", 708 | "@babel/types": "^7.2.0" 709 | } 710 | }, 711 | "@babel/helpers": { 712 | "version": "7.4.2", 713 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.2.tgz", 714 | "integrity": "sha512-gQR1eQeroDzFBikhrCccm5Gs2xBjZ57DNjGbqTaHo911IpmSxflOQWMAHPw/TXk8L3isv7s9lYzUkexOeTQUYg==", 715 | "dev": true, 716 | "requires": { 717 | "@babel/template": "^7.4.0", 718 | "@babel/traverse": "^7.4.0", 719 | "@babel/types": "^7.4.0" 720 | } 721 | }, 722 | "@babel/highlight": { 723 | "version": "7.0.0", 724 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", 725 | "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", 726 | "dev": true, 727 | "requires": { 728 | "chalk": "^2.0.0", 729 | "esutils": "^2.0.2", 730 | "js-tokens": "^4.0.0" 731 | }, 732 | "dependencies": { 733 | "ansi-styles": { 734 | "version": "3.2.1", 735 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 736 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 737 | "dev": true, 738 | "requires": { 739 | "color-convert": "^1.9.0" 740 | } 741 | }, 742 | "chalk": { 743 | "version": "2.4.2", 744 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 745 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 746 | "dev": true, 747 | "requires": { 748 | "ansi-styles": "^3.2.1", 749 | "escape-string-regexp": "^1.0.5", 750 | "supports-color": "^5.3.0" 751 | } 752 | }, 753 | "js-tokens": { 754 | "version": "4.0.0", 755 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 756 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 757 | "dev": true 758 | }, 759 | "supports-color": { 760 | "version": "5.5.0", 761 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 762 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 763 | "dev": true, 764 | "requires": { 765 | "has-flag": "^3.0.0" 766 | } 767 | } 768 | } 769 | }, 770 | "@babel/parser": { 771 | "version": "7.4.2", 772 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", 773 | "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", 774 | "dev": true 775 | }, 776 | "@babel/plugin-proposal-async-generator-functions": { 777 | "version": "7.2.0", 778 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", 779 | "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", 780 | "dev": true, 781 | "requires": { 782 | "@babel/helper-plugin-utils": "^7.0.0", 783 | "@babel/helper-remap-async-to-generator": "^7.1.0", 784 | "@babel/plugin-syntax-async-generators": "^7.2.0" 785 | } 786 | }, 787 | "@babel/plugin-proposal-json-strings": { 788 | "version": "7.2.0", 789 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", 790 | "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", 791 | "dev": true, 792 | "requires": { 793 | "@babel/helper-plugin-utils": "^7.0.0", 794 | "@babel/plugin-syntax-json-strings": "^7.2.0" 795 | } 796 | }, 797 | "@babel/plugin-proposal-object-rest-spread": { 798 | "version": "7.4.0", 799 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.0.tgz", 800 | "integrity": "sha512-uTNi8pPYyUH2eWHyYWWSYJKwKg34hhgl4/dbejEjL+64OhbHjTX7wEVWMQl82tEmdDsGeu77+s8HHLS627h6OQ==", 801 | "dev": true, 802 | "requires": { 803 | "@babel/helper-plugin-utils": "^7.0.0", 804 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0" 805 | } 806 | }, 807 | "@babel/plugin-proposal-optional-catch-binding": { 808 | "version": "7.2.0", 809 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", 810 | "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", 811 | "dev": true, 812 | "requires": { 813 | "@babel/helper-plugin-utils": "^7.0.0", 814 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" 815 | } 816 | }, 817 | "@babel/plugin-proposal-unicode-property-regex": { 818 | "version": "7.4.0", 819 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz", 820 | "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==", 821 | "dev": true, 822 | "requires": { 823 | "@babel/helper-plugin-utils": "^7.0.0", 824 | "@babel/helper-regex": "^7.0.0", 825 | "regexpu-core": "^4.5.4" 826 | } 827 | }, 828 | "@babel/plugin-syntax-async-generators": { 829 | "version": "7.2.0", 830 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", 831 | "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", 832 | "dev": true, 833 | "requires": { 834 | "@babel/helper-plugin-utils": "^7.0.0" 835 | } 836 | }, 837 | "@babel/plugin-syntax-json-strings": { 838 | "version": "7.2.0", 839 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", 840 | "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", 841 | "dev": true, 842 | "requires": { 843 | "@babel/helper-plugin-utils": "^7.0.0" 844 | } 845 | }, 846 | "@babel/plugin-syntax-object-rest-spread": { 847 | "version": "7.2.0", 848 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", 849 | "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", 850 | "dev": true, 851 | "requires": { 852 | "@babel/helper-plugin-utils": "^7.0.0" 853 | } 854 | }, 855 | "@babel/plugin-syntax-optional-catch-binding": { 856 | "version": "7.2.0", 857 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", 858 | "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", 859 | "dev": true, 860 | "requires": { 861 | "@babel/helper-plugin-utils": "^7.0.0" 862 | } 863 | }, 864 | "@babel/plugin-transform-arrow-functions": { 865 | "version": "7.2.0", 866 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", 867 | "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", 868 | "dev": true, 869 | "requires": { 870 | "@babel/helper-plugin-utils": "^7.0.0" 871 | } 872 | }, 873 | "@babel/plugin-transform-async-to-generator": { 874 | "version": "7.4.0", 875 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz", 876 | "integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==", 877 | "dev": true, 878 | "requires": { 879 | "@babel/helper-module-imports": "^7.0.0", 880 | "@babel/helper-plugin-utils": "^7.0.0", 881 | "@babel/helper-remap-async-to-generator": "^7.1.0" 882 | } 883 | }, 884 | "@babel/plugin-transform-block-scoped-functions": { 885 | "version": "7.2.0", 886 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", 887 | "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", 888 | "dev": true, 889 | "requires": { 890 | "@babel/helper-plugin-utils": "^7.0.0" 891 | } 892 | }, 893 | "@babel/plugin-transform-block-scoping": { 894 | "version": "7.4.0", 895 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz", 896 | "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==", 897 | "dev": true, 898 | "requires": { 899 | "@babel/helper-plugin-utils": "^7.0.0", 900 | "lodash": "^4.17.11" 901 | } 902 | }, 903 | "@babel/plugin-transform-classes": { 904 | "version": "7.4.0", 905 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.0.tgz", 906 | "integrity": "sha512-XGg1Mhbw4LDmrO9rSTNe+uI79tQPdGs0YASlxgweYRLZqo/EQktjaOV4tchL/UZbM0F+/94uOipmdNGoaGOEYg==", 907 | "dev": true, 908 | "requires": { 909 | "@babel/helper-annotate-as-pure": "^7.0.0", 910 | "@babel/helper-define-map": "^7.4.0", 911 | "@babel/helper-function-name": "^7.1.0", 912 | "@babel/helper-optimise-call-expression": "^7.0.0", 913 | "@babel/helper-plugin-utils": "^7.0.0", 914 | "@babel/helper-replace-supers": "^7.4.0", 915 | "@babel/helper-split-export-declaration": "^7.4.0", 916 | "globals": "^11.1.0" 917 | } 918 | }, 919 | "@babel/plugin-transform-computed-properties": { 920 | "version": "7.2.0", 921 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", 922 | "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", 923 | "dev": true, 924 | "requires": { 925 | "@babel/helper-plugin-utils": "^7.0.0" 926 | } 927 | }, 928 | "@babel/plugin-transform-destructuring": { 929 | "version": "7.4.0", 930 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.0.tgz", 931 | "integrity": "sha512-HySkoatyYTY3ZwLI8GGvkRWCFrjAGXUHur5sMecmCIdIharnlcWWivOqDJI76vvmVZfzwb6G08NREsrY96RhGQ==", 932 | "dev": true, 933 | "requires": { 934 | "@babel/helper-plugin-utils": "^7.0.0" 935 | } 936 | }, 937 | "@babel/plugin-transform-dotall-regex": { 938 | "version": "7.2.0", 939 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", 940 | "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", 941 | "dev": true, 942 | "requires": { 943 | "@babel/helper-plugin-utils": "^7.0.0", 944 | "@babel/helper-regex": "^7.0.0", 945 | "regexpu-core": "^4.1.3" 946 | } 947 | }, 948 | "@babel/plugin-transform-duplicate-keys": { 949 | "version": "7.2.0", 950 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", 951 | "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", 952 | "dev": true, 953 | "requires": { 954 | "@babel/helper-plugin-utils": "^7.0.0" 955 | } 956 | }, 957 | "@babel/plugin-transform-exponentiation-operator": { 958 | "version": "7.2.0", 959 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", 960 | "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", 961 | "dev": true, 962 | "requires": { 963 | "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", 964 | "@babel/helper-plugin-utils": "^7.0.0" 965 | } 966 | }, 967 | "@babel/plugin-transform-for-of": { 968 | "version": "7.4.0", 969 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.0.tgz", 970 | "integrity": "sha512-vWdfCEYLlYSxbsKj5lGtzA49K3KANtb8qCPQ1em07txJzsBwY+cKJzBHizj5fl3CCx7vt+WPdgDLTHmydkbQSQ==", 971 | "dev": true, 972 | "requires": { 973 | "@babel/helper-plugin-utils": "^7.0.0" 974 | } 975 | }, 976 | "@babel/plugin-transform-function-name": { 977 | "version": "7.2.0", 978 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", 979 | "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", 980 | "dev": true, 981 | "requires": { 982 | "@babel/helper-function-name": "^7.1.0", 983 | "@babel/helper-plugin-utils": "^7.0.0" 984 | } 985 | }, 986 | "@babel/plugin-transform-literals": { 987 | "version": "7.2.0", 988 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", 989 | "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", 990 | "dev": true, 991 | "requires": { 992 | "@babel/helper-plugin-utils": "^7.0.0" 993 | } 994 | }, 995 | "@babel/plugin-transform-modules-amd": { 996 | "version": "7.2.0", 997 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", 998 | "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", 999 | "dev": true, 1000 | "requires": { 1001 | "@babel/helper-module-transforms": "^7.1.0", 1002 | "@babel/helper-plugin-utils": "^7.0.0" 1003 | } 1004 | }, 1005 | "@babel/plugin-transform-modules-commonjs": { 1006 | "version": "7.4.0", 1007 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.0.tgz", 1008 | "integrity": "sha512-iWKAooAkipG7g1IY0eah7SumzfnIT3WNhT4uYB2kIsvHnNSB6MDYVa5qyICSwaTBDBY2c4SnJ3JtEa6ltJd6Jw==", 1009 | "dev": true, 1010 | "requires": { 1011 | "@babel/helper-module-transforms": "^7.1.0", 1012 | "@babel/helper-plugin-utils": "^7.0.0", 1013 | "@babel/helper-simple-access": "^7.1.0" 1014 | } 1015 | }, 1016 | "@babel/plugin-transform-modules-systemjs": { 1017 | "version": "7.4.0", 1018 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz", 1019 | "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==", 1020 | "dev": true, 1021 | "requires": { 1022 | "@babel/helper-hoist-variables": "^7.4.0", 1023 | "@babel/helper-plugin-utils": "^7.0.0" 1024 | } 1025 | }, 1026 | "@babel/plugin-transform-modules-umd": { 1027 | "version": "7.2.0", 1028 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", 1029 | "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", 1030 | "dev": true, 1031 | "requires": { 1032 | "@babel/helper-module-transforms": "^7.1.0", 1033 | "@babel/helper-plugin-utils": "^7.0.0" 1034 | } 1035 | }, 1036 | "@babel/plugin-transform-named-capturing-groups-regex": { 1037 | "version": "7.4.2", 1038 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz", 1039 | "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==", 1040 | "dev": true, 1041 | "requires": { 1042 | "regexp-tree": "^0.1.0" 1043 | } 1044 | }, 1045 | "@babel/plugin-transform-new-target": { 1046 | "version": "7.4.0", 1047 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz", 1048 | "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==", 1049 | "dev": true, 1050 | "requires": { 1051 | "@babel/helper-plugin-utils": "^7.0.0" 1052 | } 1053 | }, 1054 | "@babel/plugin-transform-object-super": { 1055 | "version": "7.2.0", 1056 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", 1057 | "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", 1058 | "dev": true, 1059 | "requires": { 1060 | "@babel/helper-plugin-utils": "^7.0.0", 1061 | "@babel/helper-replace-supers": "^7.1.0" 1062 | } 1063 | }, 1064 | "@babel/plugin-transform-parameters": { 1065 | "version": "7.4.0", 1066 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.0.tgz", 1067 | "integrity": "sha512-Xqv6d1X+doyiuCGDoVJFtlZx0onAX0tnc3dY8w71pv/O0dODAbusVv2Ale3cGOwfiyi895ivOBhYa9DhAM8dUA==", 1068 | "dev": true, 1069 | "requires": { 1070 | "@babel/helper-call-delegate": "^7.4.0", 1071 | "@babel/helper-get-function-arity": "^7.0.0", 1072 | "@babel/helper-plugin-utils": "^7.0.0" 1073 | } 1074 | }, 1075 | "@babel/plugin-transform-regenerator": { 1076 | "version": "7.4.0", 1077 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.0.tgz", 1078 | "integrity": "sha512-SZ+CgL4F0wm4npojPU6swo/cK4FcbLgxLd4cWpHaNXY/NJ2dpahODCqBbAwb2rDmVszVb3SSjnk9/vik3AYdBw==", 1079 | "dev": true, 1080 | "requires": { 1081 | "regenerator-transform": "^0.13.4" 1082 | } 1083 | }, 1084 | "@babel/plugin-transform-shorthand-properties": { 1085 | "version": "7.2.0", 1086 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", 1087 | "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", 1088 | "dev": true, 1089 | "requires": { 1090 | "@babel/helper-plugin-utils": "^7.0.0" 1091 | } 1092 | }, 1093 | "@babel/plugin-transform-spread": { 1094 | "version": "7.2.2", 1095 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", 1096 | "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", 1097 | "dev": true, 1098 | "requires": { 1099 | "@babel/helper-plugin-utils": "^7.0.0" 1100 | } 1101 | }, 1102 | "@babel/plugin-transform-sticky-regex": { 1103 | "version": "7.2.0", 1104 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", 1105 | "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", 1106 | "dev": true, 1107 | "requires": { 1108 | "@babel/helper-plugin-utils": "^7.0.0", 1109 | "@babel/helper-regex": "^7.0.0" 1110 | } 1111 | }, 1112 | "@babel/plugin-transform-template-literals": { 1113 | "version": "7.2.0", 1114 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", 1115 | "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", 1116 | "dev": true, 1117 | "requires": { 1118 | "@babel/helper-annotate-as-pure": "^7.0.0", 1119 | "@babel/helper-plugin-utils": "^7.0.0" 1120 | } 1121 | }, 1122 | "@babel/plugin-transform-typeof-symbol": { 1123 | "version": "7.2.0", 1124 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", 1125 | "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", 1126 | "dev": true, 1127 | "requires": { 1128 | "@babel/helper-plugin-utils": "^7.0.0" 1129 | } 1130 | }, 1131 | "@babel/plugin-transform-unicode-regex": { 1132 | "version": "7.2.0", 1133 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", 1134 | "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", 1135 | "dev": true, 1136 | "requires": { 1137 | "@babel/helper-plugin-utils": "^7.0.0", 1138 | "@babel/helper-regex": "^7.0.0", 1139 | "regexpu-core": "^4.1.3" 1140 | } 1141 | }, 1142 | "@babel/preset-env": { 1143 | "version": "7.4.2", 1144 | "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.2.tgz", 1145 | "integrity": "sha512-OEz6VOZaI9LW08CWVS3d9g/0jZA6YCn1gsKIy/fut7yZCJti5Lm1/Hi+uo/U+ODm7g4I6gULrCP+/+laT8xAsA==", 1146 | "dev": true, 1147 | "requires": { 1148 | "@babel/helper-module-imports": "^7.0.0", 1149 | "@babel/helper-plugin-utils": "^7.0.0", 1150 | "@babel/plugin-proposal-async-generator-functions": "^7.2.0", 1151 | "@babel/plugin-proposal-json-strings": "^7.2.0", 1152 | "@babel/plugin-proposal-object-rest-spread": "^7.4.0", 1153 | "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", 1154 | "@babel/plugin-proposal-unicode-property-regex": "^7.4.0", 1155 | "@babel/plugin-syntax-async-generators": "^7.2.0", 1156 | "@babel/plugin-syntax-json-strings": "^7.2.0", 1157 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0", 1158 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", 1159 | "@babel/plugin-transform-arrow-functions": "^7.2.0", 1160 | "@babel/plugin-transform-async-to-generator": "^7.4.0", 1161 | "@babel/plugin-transform-block-scoped-functions": "^7.2.0", 1162 | "@babel/plugin-transform-block-scoping": "^7.4.0", 1163 | "@babel/plugin-transform-classes": "^7.4.0", 1164 | "@babel/plugin-transform-computed-properties": "^7.2.0", 1165 | "@babel/plugin-transform-destructuring": "^7.4.0", 1166 | "@babel/plugin-transform-dotall-regex": "^7.2.0", 1167 | "@babel/plugin-transform-duplicate-keys": "^7.2.0", 1168 | "@babel/plugin-transform-exponentiation-operator": "^7.2.0", 1169 | "@babel/plugin-transform-for-of": "^7.4.0", 1170 | "@babel/plugin-transform-function-name": "^7.2.0", 1171 | "@babel/plugin-transform-literals": "^7.2.0", 1172 | "@babel/plugin-transform-modules-amd": "^7.2.0", 1173 | "@babel/plugin-transform-modules-commonjs": "^7.4.0", 1174 | "@babel/plugin-transform-modules-systemjs": "^7.4.0", 1175 | "@babel/plugin-transform-modules-umd": "^7.2.0", 1176 | "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.2", 1177 | "@babel/plugin-transform-new-target": "^7.4.0", 1178 | "@babel/plugin-transform-object-super": "^7.2.0", 1179 | "@babel/plugin-transform-parameters": "^7.4.0", 1180 | "@babel/plugin-transform-regenerator": "^7.4.0", 1181 | "@babel/plugin-transform-shorthand-properties": "^7.2.0", 1182 | "@babel/plugin-transform-spread": "^7.2.0", 1183 | "@babel/plugin-transform-sticky-regex": "^7.2.0", 1184 | "@babel/plugin-transform-template-literals": "^7.2.0", 1185 | "@babel/plugin-transform-typeof-symbol": "^7.2.0", 1186 | "@babel/plugin-transform-unicode-regex": "^7.2.0", 1187 | "@babel/types": "^7.4.0", 1188 | "browserslist": "^4.4.2", 1189 | "core-js-compat": "^3.0.0", 1190 | "invariant": "^2.2.2", 1191 | "js-levenshtein": "^1.1.3", 1192 | "semver": "^5.3.0" 1193 | } 1194 | }, 1195 | "@babel/template": { 1196 | "version": "7.4.0", 1197 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", 1198 | "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", 1199 | "dev": true, 1200 | "requires": { 1201 | "@babel/code-frame": "^7.0.0", 1202 | "@babel/parser": "^7.4.0", 1203 | "@babel/types": "^7.4.0" 1204 | } 1205 | }, 1206 | "@babel/traverse": { 1207 | "version": "7.4.0", 1208 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.0.tgz", 1209 | "integrity": "sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA==", 1210 | "dev": true, 1211 | "requires": { 1212 | "@babel/code-frame": "^7.0.0", 1213 | "@babel/generator": "^7.4.0", 1214 | "@babel/helper-function-name": "^7.1.0", 1215 | "@babel/helper-split-export-declaration": "^7.4.0", 1216 | "@babel/parser": "^7.4.0", 1217 | "@babel/types": "^7.4.0", 1218 | "debug": "^4.1.0", 1219 | "globals": "^11.1.0", 1220 | "lodash": "^4.17.11" 1221 | }, 1222 | "dependencies": { 1223 | "debug": { 1224 | "version": "4.1.1", 1225 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 1226 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 1227 | "dev": true, 1228 | "requires": { 1229 | "ms": "^2.1.1" 1230 | } 1231 | }, 1232 | "globals": { 1233 | "version": "11.11.0", 1234 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", 1235 | "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", 1236 | "dev": true 1237 | }, 1238 | "ms": { 1239 | "version": "2.1.1", 1240 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1241 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 1242 | "dev": true 1243 | } 1244 | } 1245 | }, 1246 | "@babel/types": { 1247 | "version": "7.4.0", 1248 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", 1249 | "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", 1250 | "dev": true, 1251 | "requires": { 1252 | "esutils": "^2.0.2", 1253 | "lodash": "^4.17.11", 1254 | "to-fast-properties": "^2.0.0" 1255 | }, 1256 | "dependencies": { 1257 | "to-fast-properties": { 1258 | "version": "2.0.0", 1259 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1260 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 1261 | "dev": true 1262 | } 1263 | } 1264 | }, 1265 | "arr-flatten": { 1266 | "version": "1.1.0", 1267 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 1268 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 1269 | "dev": true, 1270 | "optional": true 1271 | }, 1272 | "arr-union": { 1273 | "version": "3.1.0", 1274 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 1275 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", 1276 | "dev": true, 1277 | "optional": true 1278 | }, 1279 | "assign-symbols": { 1280 | "version": "1.0.0", 1281 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 1282 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", 1283 | "dev": true, 1284 | "optional": true 1285 | }, 1286 | "async-each": { 1287 | "version": "1.0.2", 1288 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.2.tgz", 1289 | "integrity": "sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg==", 1290 | "dev": true, 1291 | "optional": true 1292 | }, 1293 | "atob": { 1294 | "version": "2.1.2", 1295 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 1296 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", 1297 | "dev": true, 1298 | "optional": true 1299 | }, 1300 | "balanced-match": { 1301 | "version": "1.0.0", 1302 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1303 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 1304 | "dev": true 1305 | }, 1306 | "base": { 1307 | "version": "0.11.2", 1308 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 1309 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 1310 | "dev": true, 1311 | "optional": true, 1312 | "requires": { 1313 | "cache-base": "^1.0.1", 1314 | "class-utils": "^0.3.5", 1315 | "component-emitter": "^1.2.1", 1316 | "define-property": "^1.0.0", 1317 | "isobject": "^3.0.1", 1318 | "mixin-deep": "^1.2.0", 1319 | "pascalcase": "^0.1.1" 1320 | }, 1321 | "dependencies": { 1322 | "define-property": { 1323 | "version": "1.0.0", 1324 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 1325 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 1326 | "dev": true, 1327 | "optional": true, 1328 | "requires": { 1329 | "is-descriptor": "^1.0.0" 1330 | } 1331 | }, 1332 | "is-accessor-descriptor": { 1333 | "version": "1.0.0", 1334 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1335 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1336 | "dev": true, 1337 | "optional": true, 1338 | "requires": { 1339 | "kind-of": "^6.0.0" 1340 | } 1341 | }, 1342 | "is-data-descriptor": { 1343 | "version": "1.0.0", 1344 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1345 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1346 | "dev": true, 1347 | "optional": true, 1348 | "requires": { 1349 | "kind-of": "^6.0.0" 1350 | } 1351 | }, 1352 | "is-descriptor": { 1353 | "version": "1.0.2", 1354 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1355 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1356 | "dev": true, 1357 | "optional": true, 1358 | "requires": { 1359 | "is-accessor-descriptor": "^1.0.0", 1360 | "is-data-descriptor": "^1.0.0", 1361 | "kind-of": "^6.0.2" 1362 | } 1363 | }, 1364 | "isobject": { 1365 | "version": "3.0.1", 1366 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1367 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1368 | "dev": true, 1369 | "optional": true 1370 | }, 1371 | "kind-of": { 1372 | "version": "6.0.2", 1373 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 1374 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 1375 | "dev": true, 1376 | "optional": true 1377 | } 1378 | } 1379 | }, 1380 | "binary-extensions": { 1381 | "version": "1.13.1", 1382 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", 1383 | "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", 1384 | "dev": true, 1385 | "optional": true 1386 | }, 1387 | "brace-expansion": { 1388 | "version": "1.1.11", 1389 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1390 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1391 | "dev": true, 1392 | "requires": { 1393 | "balanced-match": "^1.0.0", 1394 | "concat-map": "0.0.1" 1395 | } 1396 | }, 1397 | "browserslist": { 1398 | "version": "4.16.6", 1399 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", 1400 | "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", 1401 | "dev": true, 1402 | "requires": { 1403 | "caniuse-lite": "^1.0.30001219", 1404 | "colorette": "^1.2.2", 1405 | "electron-to-chromium": "^1.3.723", 1406 | "escalade": "^3.1.1", 1407 | "node-releases": "^1.1.71" 1408 | }, 1409 | "dependencies": { 1410 | "caniuse-lite": { 1411 | "version": "1.0.30001228", 1412 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", 1413 | "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", 1414 | "dev": true 1415 | }, 1416 | "electron-to-chromium": { 1417 | "version": "1.3.736", 1418 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.736.tgz", 1419 | "integrity": "sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig==", 1420 | "dev": true 1421 | }, 1422 | "node-releases": { 1423 | "version": "1.1.72", 1424 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", 1425 | "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", 1426 | "dev": true 1427 | } 1428 | } 1429 | }, 1430 | "cache-base": { 1431 | "version": "1.0.1", 1432 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 1433 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 1434 | "dev": true, 1435 | "optional": true, 1436 | "requires": { 1437 | "collection-visit": "^1.0.0", 1438 | "component-emitter": "^1.2.1", 1439 | "get-value": "^2.0.6", 1440 | "has-value": "^1.0.0", 1441 | "isobject": "^3.0.1", 1442 | "set-value": "^2.0.0", 1443 | "to-object-path": "^0.3.0", 1444 | "union-value": "^1.0.0", 1445 | "unset-value": "^1.0.0" 1446 | }, 1447 | "dependencies": { 1448 | "isobject": { 1449 | "version": "3.0.1", 1450 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1451 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1452 | "dev": true, 1453 | "optional": true 1454 | } 1455 | } 1456 | }, 1457 | "class-utils": { 1458 | "version": "0.3.6", 1459 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 1460 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 1461 | "dev": true, 1462 | "optional": true, 1463 | "requires": { 1464 | "arr-union": "^3.1.0", 1465 | "define-property": "^0.2.5", 1466 | "isobject": "^3.0.0", 1467 | "static-extend": "^0.1.1" 1468 | }, 1469 | "dependencies": { 1470 | "define-property": { 1471 | "version": "0.2.5", 1472 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1473 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1474 | "dev": true, 1475 | "optional": true, 1476 | "requires": { 1477 | "is-descriptor": "^0.1.0" 1478 | } 1479 | }, 1480 | "isobject": { 1481 | "version": "3.0.1", 1482 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1483 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1484 | "dev": true, 1485 | "optional": true 1486 | } 1487 | } 1488 | }, 1489 | "collection-visit": { 1490 | "version": "1.0.0", 1491 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 1492 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 1493 | "dev": true, 1494 | "optional": true, 1495 | "requires": { 1496 | "map-visit": "^1.0.0", 1497 | "object-visit": "^1.0.0" 1498 | } 1499 | }, 1500 | "color-convert": { 1501 | "version": "1.9.3", 1502 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1503 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1504 | "dev": true, 1505 | "requires": { 1506 | "color-name": "1.1.3" 1507 | } 1508 | }, 1509 | "color-name": { 1510 | "version": "1.1.3", 1511 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1512 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1513 | "dev": true 1514 | }, 1515 | "colorette": { 1516 | "version": "1.2.2", 1517 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", 1518 | "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", 1519 | "dev": true 1520 | }, 1521 | "commander": { 1522 | "version": "2.19.0", 1523 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", 1524 | "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", 1525 | "dev": true 1526 | }, 1527 | "component-emitter": { 1528 | "version": "1.2.1", 1529 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 1530 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", 1531 | "dev": true, 1532 | "optional": true 1533 | }, 1534 | "concat-map": { 1535 | "version": "0.0.1", 1536 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1537 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1538 | "dev": true 1539 | }, 1540 | "convert-source-map": { 1541 | "version": "1.6.0", 1542 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", 1543 | "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", 1544 | "dev": true, 1545 | "requires": { 1546 | "safe-buffer": "~5.1.1" 1547 | } 1548 | }, 1549 | "copy-descriptor": { 1550 | "version": "0.1.1", 1551 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 1552 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 1553 | "dev": true, 1554 | "optional": true 1555 | }, 1556 | "core-js": { 1557 | "version": "3.0.0", 1558 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.0.tgz", 1559 | "integrity": "sha512-WBmxlgH2122EzEJ6GH8o9L/FeoUKxxxZ6q6VUxoTlsE4EvbTWKJb447eyVxTEuq0LpXjlq/kCB2qgBvsYRkLvQ==", 1560 | "dev": true 1561 | }, 1562 | "core-js-compat": { 1563 | "version": "3.0.0", 1564 | "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.0.tgz", 1565 | "integrity": "sha512-W/Ppz34uUme3LmXWjMgFlYyGnbo1hd9JvA0LNQ4EmieqVjg2GPYbj3H6tcdP2QGPGWdRKUqZVbVKLNIFVs/HiA==", 1566 | "dev": true, 1567 | "requires": { 1568 | "browserslist": "^4.5.1", 1569 | "core-js": "3.0.0", 1570 | "core-js-pure": "3.0.0", 1571 | "semver": "^5.6.0" 1572 | } 1573 | }, 1574 | "core-js-pure": { 1575 | "version": "3.0.0", 1576 | "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.0.tgz", 1577 | "integrity": "sha512-yPiS3fQd842RZDgo/TAKGgS0f3p2nxssF1H65DIZvZv0Od5CygP8puHXn3IQiM/39VAvgCbdaMQpresrbGgt9g==", 1578 | "dev": true 1579 | }, 1580 | "core-util-is": { 1581 | "version": "1.0.2", 1582 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1583 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1584 | "dev": true, 1585 | "optional": true 1586 | }, 1587 | "debug": { 1588 | "version": "2.6.9", 1589 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1590 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1591 | "dev": true, 1592 | "optional": true, 1593 | "requires": { 1594 | "ms": "2.0.0" 1595 | } 1596 | }, 1597 | "decode-uri-component": { 1598 | "version": "0.2.0", 1599 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 1600 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 1601 | "dev": true, 1602 | "optional": true 1603 | }, 1604 | "define-property": { 1605 | "version": "2.0.2", 1606 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 1607 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 1608 | "dev": true, 1609 | "optional": true, 1610 | "requires": { 1611 | "is-descriptor": "^1.0.2", 1612 | "isobject": "^3.0.1" 1613 | }, 1614 | "dependencies": { 1615 | "is-accessor-descriptor": { 1616 | "version": "1.0.0", 1617 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1618 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1619 | "dev": true, 1620 | "optional": true, 1621 | "requires": { 1622 | "kind-of": "^6.0.0" 1623 | } 1624 | }, 1625 | "is-data-descriptor": { 1626 | "version": "1.0.0", 1627 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1628 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1629 | "dev": true, 1630 | "optional": true, 1631 | "requires": { 1632 | "kind-of": "^6.0.0" 1633 | } 1634 | }, 1635 | "is-descriptor": { 1636 | "version": "1.0.2", 1637 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1638 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1639 | "dev": true, 1640 | "optional": true, 1641 | "requires": { 1642 | "is-accessor-descriptor": "^1.0.0", 1643 | "is-data-descriptor": "^1.0.0", 1644 | "kind-of": "^6.0.2" 1645 | } 1646 | }, 1647 | "isobject": { 1648 | "version": "3.0.1", 1649 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1650 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1651 | "dev": true, 1652 | "optional": true 1653 | }, 1654 | "kind-of": { 1655 | "version": "6.0.2", 1656 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 1657 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 1658 | "dev": true, 1659 | "optional": true 1660 | } 1661 | } 1662 | }, 1663 | "escalade": { 1664 | "version": "3.1.1", 1665 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1666 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1667 | "dev": true 1668 | }, 1669 | "escape-string-regexp": { 1670 | "version": "1.0.5", 1671 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1672 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1673 | "dev": true 1674 | }, 1675 | "esutils": { 1676 | "version": "2.0.2", 1677 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1678 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 1679 | "dev": true 1680 | }, 1681 | "extend-shallow": { 1682 | "version": "3.0.2", 1683 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 1684 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 1685 | "dev": true, 1686 | "optional": true, 1687 | "requires": { 1688 | "assign-symbols": "^1.0.0", 1689 | "is-extendable": "^1.0.1" 1690 | }, 1691 | "dependencies": { 1692 | "is-extendable": { 1693 | "version": "1.0.1", 1694 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1695 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1696 | "dev": true, 1697 | "optional": true, 1698 | "requires": { 1699 | "is-plain-object": "^2.0.4" 1700 | } 1701 | } 1702 | } 1703 | }, 1704 | "for-in": { 1705 | "version": "1.0.2", 1706 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1707 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1708 | "dev": true, 1709 | "optional": true 1710 | }, 1711 | "fragment-cache": { 1712 | "version": "0.2.1", 1713 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 1714 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 1715 | "dev": true, 1716 | "optional": true, 1717 | "requires": { 1718 | "map-cache": "^0.2.2" 1719 | } 1720 | }, 1721 | "fs-readdir-recursive": { 1722 | "version": "1.1.0", 1723 | "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", 1724 | "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", 1725 | "dev": true 1726 | }, 1727 | "fs.realpath": { 1728 | "version": "1.0.0", 1729 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1730 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1731 | "dev": true 1732 | }, 1733 | "fsevents": { 1734 | "version": "1.2.7", 1735 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", 1736 | "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", 1737 | "dev": true, 1738 | "optional": true, 1739 | "requires": { 1740 | "nan": "^2.9.2", 1741 | "node-pre-gyp": "^0.10.0" 1742 | }, 1743 | "dependencies": { 1744 | "abbrev": { 1745 | "version": "1.1.1", 1746 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 1747 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 1748 | "dev": true, 1749 | "optional": true 1750 | }, 1751 | "ansi-regex": { 1752 | "version": "2.1.1", 1753 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1754 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 1755 | "dev": true, 1756 | "optional": true 1757 | }, 1758 | "aproba": { 1759 | "version": "1.2.0", 1760 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", 1761 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", 1762 | "dev": true, 1763 | "optional": true 1764 | }, 1765 | "are-we-there-yet": { 1766 | "version": "1.1.5", 1767 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", 1768 | "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", 1769 | "dev": true, 1770 | "optional": true, 1771 | "requires": { 1772 | "delegates": "^1.0.0", 1773 | "readable-stream": "^2.0.6" 1774 | } 1775 | }, 1776 | "balanced-match": { 1777 | "version": "1.0.0", 1778 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1779 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 1780 | "dev": true, 1781 | "optional": true 1782 | }, 1783 | "brace-expansion": { 1784 | "version": "1.1.11", 1785 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1786 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1787 | "dev": true, 1788 | "optional": true, 1789 | "requires": { 1790 | "balanced-match": "^1.0.0", 1791 | "concat-map": "0.0.1" 1792 | } 1793 | }, 1794 | "chownr": { 1795 | "version": "1.1.1", 1796 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", 1797 | "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", 1798 | "dev": true, 1799 | "optional": true 1800 | }, 1801 | "code-point-at": { 1802 | "version": "1.1.0", 1803 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 1804 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 1805 | "dev": true, 1806 | "optional": true 1807 | }, 1808 | "concat-map": { 1809 | "version": "0.0.1", 1810 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1811 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1812 | "dev": true, 1813 | "optional": true 1814 | }, 1815 | "console-control-strings": { 1816 | "version": "1.1.0", 1817 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 1818 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", 1819 | "dev": true, 1820 | "optional": true 1821 | }, 1822 | "core-util-is": { 1823 | "version": "1.0.2", 1824 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1825 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1826 | "dev": true, 1827 | "optional": true 1828 | }, 1829 | "debug": { 1830 | "version": "2.6.9", 1831 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1832 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1833 | "dev": true, 1834 | "optional": true, 1835 | "requires": { 1836 | "ms": "2.0.0" 1837 | } 1838 | }, 1839 | "deep-extend": { 1840 | "version": "0.6.0", 1841 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 1842 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 1843 | "dev": true, 1844 | "optional": true 1845 | }, 1846 | "delegates": { 1847 | "version": "1.0.0", 1848 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 1849 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", 1850 | "dev": true, 1851 | "optional": true 1852 | }, 1853 | "detect-libc": { 1854 | "version": "1.0.3", 1855 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 1856 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", 1857 | "dev": true, 1858 | "optional": true 1859 | }, 1860 | "fs-minipass": { 1861 | "version": "1.2.5", 1862 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", 1863 | "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", 1864 | "dev": true, 1865 | "optional": true, 1866 | "requires": { 1867 | "minipass": "^2.2.1" 1868 | } 1869 | }, 1870 | "fs.realpath": { 1871 | "version": "1.0.0", 1872 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1873 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1874 | "dev": true, 1875 | "optional": true 1876 | }, 1877 | "gauge": { 1878 | "version": "2.7.4", 1879 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", 1880 | "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", 1881 | "dev": true, 1882 | "optional": true, 1883 | "requires": { 1884 | "aproba": "^1.0.3", 1885 | "console-control-strings": "^1.0.0", 1886 | "has-unicode": "^2.0.0", 1887 | "object-assign": "^4.1.0", 1888 | "signal-exit": "^3.0.0", 1889 | "string-width": "^1.0.1", 1890 | "strip-ansi": "^3.0.1", 1891 | "wide-align": "^1.1.0" 1892 | } 1893 | }, 1894 | "glob": { 1895 | "version": "7.1.3", 1896 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 1897 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 1898 | "dev": true, 1899 | "optional": true, 1900 | "requires": { 1901 | "fs.realpath": "^1.0.0", 1902 | "inflight": "^1.0.4", 1903 | "inherits": "2", 1904 | "minimatch": "^3.0.4", 1905 | "once": "^1.3.0", 1906 | "path-is-absolute": "^1.0.0" 1907 | } 1908 | }, 1909 | "has-unicode": { 1910 | "version": "2.0.1", 1911 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 1912 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", 1913 | "dev": true, 1914 | "optional": true 1915 | }, 1916 | "iconv-lite": { 1917 | "version": "0.4.24", 1918 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1919 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1920 | "dev": true, 1921 | "optional": true, 1922 | "requires": { 1923 | "safer-buffer": ">= 2.1.2 < 3" 1924 | } 1925 | }, 1926 | "ignore-walk": { 1927 | "version": "3.0.1", 1928 | "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", 1929 | "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", 1930 | "dev": true, 1931 | "optional": true, 1932 | "requires": { 1933 | "minimatch": "^3.0.4" 1934 | } 1935 | }, 1936 | "inflight": { 1937 | "version": "1.0.6", 1938 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1939 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1940 | "dev": true, 1941 | "optional": true, 1942 | "requires": { 1943 | "once": "^1.3.0", 1944 | "wrappy": "1" 1945 | } 1946 | }, 1947 | "inherits": { 1948 | "version": "2.0.3", 1949 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1950 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1951 | "dev": true, 1952 | "optional": true 1953 | }, 1954 | "ini": { 1955 | "version": "1.3.5", 1956 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 1957 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", 1958 | "dev": true, 1959 | "optional": true 1960 | }, 1961 | "is-fullwidth-code-point": { 1962 | "version": "1.0.0", 1963 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1964 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1965 | "dev": true, 1966 | "optional": true, 1967 | "requires": { 1968 | "number-is-nan": "^1.0.0" 1969 | } 1970 | }, 1971 | "isarray": { 1972 | "version": "1.0.0", 1973 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1974 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1975 | "dev": true, 1976 | "optional": true 1977 | }, 1978 | "minimatch": { 1979 | "version": "3.0.4", 1980 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1981 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1982 | "dev": true, 1983 | "optional": true, 1984 | "requires": { 1985 | "brace-expansion": "^1.1.7" 1986 | } 1987 | }, 1988 | "minimist": { 1989 | "version": "0.0.8", 1990 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1991 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1992 | "dev": true, 1993 | "optional": true 1994 | }, 1995 | "minipass": { 1996 | "version": "2.3.5", 1997 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", 1998 | "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", 1999 | "dev": true, 2000 | "optional": true, 2001 | "requires": { 2002 | "safe-buffer": "^5.1.2", 2003 | "yallist": "^3.0.0" 2004 | } 2005 | }, 2006 | "minizlib": { 2007 | "version": "1.2.1", 2008 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", 2009 | "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", 2010 | "dev": true, 2011 | "optional": true, 2012 | "requires": { 2013 | "minipass": "^2.2.1" 2014 | } 2015 | }, 2016 | "mkdirp": { 2017 | "version": "0.5.1", 2018 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2019 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2020 | "dev": true, 2021 | "optional": true, 2022 | "requires": { 2023 | "minimist": "0.0.8" 2024 | } 2025 | }, 2026 | "ms": { 2027 | "version": "2.0.0", 2028 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2029 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2030 | "dev": true, 2031 | "optional": true 2032 | }, 2033 | "needle": { 2034 | "version": "2.2.4", 2035 | "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", 2036 | "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", 2037 | "dev": true, 2038 | "optional": true, 2039 | "requires": { 2040 | "debug": "^2.1.2", 2041 | "iconv-lite": "^0.4.4", 2042 | "sax": "^1.2.4" 2043 | } 2044 | }, 2045 | "node-pre-gyp": { 2046 | "version": "0.10.3", 2047 | "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz", 2048 | "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==", 2049 | "dev": true, 2050 | "optional": true, 2051 | "requires": { 2052 | "detect-libc": "^1.0.2", 2053 | "mkdirp": "^0.5.1", 2054 | "needle": "^2.2.1", 2055 | "nopt": "^4.0.1", 2056 | "npm-packlist": "^1.1.6", 2057 | "npmlog": "^4.0.2", 2058 | "rc": "^1.2.7", 2059 | "rimraf": "^2.6.1", 2060 | "semver": "^5.3.0", 2061 | "tar": "^4" 2062 | } 2063 | }, 2064 | "nopt": { 2065 | "version": "4.0.1", 2066 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", 2067 | "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", 2068 | "dev": true, 2069 | "optional": true, 2070 | "requires": { 2071 | "abbrev": "1", 2072 | "osenv": "^0.1.4" 2073 | } 2074 | }, 2075 | "npm-bundled": { 2076 | "version": "1.0.5", 2077 | "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", 2078 | "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", 2079 | "dev": true, 2080 | "optional": true 2081 | }, 2082 | "npm-packlist": { 2083 | "version": "1.2.0", 2084 | "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", 2085 | "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", 2086 | "dev": true, 2087 | "optional": true, 2088 | "requires": { 2089 | "ignore-walk": "^3.0.1", 2090 | "npm-bundled": "^1.0.1" 2091 | } 2092 | }, 2093 | "npmlog": { 2094 | "version": "4.1.2", 2095 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", 2096 | "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", 2097 | "dev": true, 2098 | "optional": true, 2099 | "requires": { 2100 | "are-we-there-yet": "~1.1.2", 2101 | "console-control-strings": "~1.1.0", 2102 | "gauge": "~2.7.3", 2103 | "set-blocking": "~2.0.0" 2104 | } 2105 | }, 2106 | "number-is-nan": { 2107 | "version": "1.0.1", 2108 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2109 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 2110 | "dev": true, 2111 | "optional": true 2112 | }, 2113 | "object-assign": { 2114 | "version": "4.1.1", 2115 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2116 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 2117 | "dev": true, 2118 | "optional": true 2119 | }, 2120 | "once": { 2121 | "version": "1.4.0", 2122 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2123 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2124 | "dev": true, 2125 | "optional": true, 2126 | "requires": { 2127 | "wrappy": "1" 2128 | } 2129 | }, 2130 | "os-homedir": { 2131 | "version": "1.0.2", 2132 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 2133 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 2134 | "dev": true, 2135 | "optional": true 2136 | }, 2137 | "os-tmpdir": { 2138 | "version": "1.0.2", 2139 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2140 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2141 | "dev": true, 2142 | "optional": true 2143 | }, 2144 | "osenv": { 2145 | "version": "0.1.5", 2146 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", 2147 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", 2148 | "dev": true, 2149 | "optional": true, 2150 | "requires": { 2151 | "os-homedir": "^1.0.0", 2152 | "os-tmpdir": "^1.0.0" 2153 | } 2154 | }, 2155 | "path-is-absolute": { 2156 | "version": "1.0.1", 2157 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2158 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2159 | "dev": true, 2160 | "optional": true 2161 | }, 2162 | "process-nextick-args": { 2163 | "version": "2.0.0", 2164 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 2165 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 2166 | "dev": true, 2167 | "optional": true 2168 | }, 2169 | "rc": { 2170 | "version": "1.2.8", 2171 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 2172 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 2173 | "dev": true, 2174 | "optional": true, 2175 | "requires": { 2176 | "deep-extend": "^0.6.0", 2177 | "ini": "~1.3.0", 2178 | "minimist": "^1.2.0", 2179 | "strip-json-comments": "~2.0.1" 2180 | }, 2181 | "dependencies": { 2182 | "minimist": { 2183 | "version": "1.2.0", 2184 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2185 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 2186 | "dev": true, 2187 | "optional": true 2188 | } 2189 | } 2190 | }, 2191 | "readable-stream": { 2192 | "version": "2.3.6", 2193 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 2194 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 2195 | "dev": true, 2196 | "optional": true, 2197 | "requires": { 2198 | "core-util-is": "~1.0.0", 2199 | "inherits": "~2.0.3", 2200 | "isarray": "~1.0.0", 2201 | "process-nextick-args": "~2.0.0", 2202 | "safe-buffer": "~5.1.1", 2203 | "string_decoder": "~1.1.1", 2204 | "util-deprecate": "~1.0.1" 2205 | } 2206 | }, 2207 | "rimraf": { 2208 | "version": "2.6.3", 2209 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 2210 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 2211 | "dev": true, 2212 | "optional": true, 2213 | "requires": { 2214 | "glob": "^7.1.3" 2215 | } 2216 | }, 2217 | "safe-buffer": { 2218 | "version": "5.1.2", 2219 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2220 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2221 | "dev": true, 2222 | "optional": true 2223 | }, 2224 | "safer-buffer": { 2225 | "version": "2.1.2", 2226 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2227 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2228 | "dev": true, 2229 | "optional": true 2230 | }, 2231 | "sax": { 2232 | "version": "1.2.4", 2233 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 2234 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", 2235 | "dev": true, 2236 | "optional": true 2237 | }, 2238 | "semver": { 2239 | "version": "5.6.0", 2240 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", 2241 | "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", 2242 | "dev": true, 2243 | "optional": true 2244 | }, 2245 | "set-blocking": { 2246 | "version": "2.0.0", 2247 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 2248 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 2249 | "dev": true, 2250 | "optional": true 2251 | }, 2252 | "signal-exit": { 2253 | "version": "3.0.2", 2254 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 2255 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 2256 | "dev": true, 2257 | "optional": true 2258 | }, 2259 | "string-width": { 2260 | "version": "1.0.2", 2261 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 2262 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 2263 | "dev": true, 2264 | "optional": true, 2265 | "requires": { 2266 | "code-point-at": "^1.0.0", 2267 | "is-fullwidth-code-point": "^1.0.0", 2268 | "strip-ansi": "^3.0.0" 2269 | } 2270 | }, 2271 | "string_decoder": { 2272 | "version": "1.1.1", 2273 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2274 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2275 | "dev": true, 2276 | "optional": true, 2277 | "requires": { 2278 | "safe-buffer": "~5.1.0" 2279 | } 2280 | }, 2281 | "strip-ansi": { 2282 | "version": "3.0.1", 2283 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2284 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2285 | "dev": true, 2286 | "optional": true, 2287 | "requires": { 2288 | "ansi-regex": "^2.0.0" 2289 | } 2290 | }, 2291 | "strip-json-comments": { 2292 | "version": "2.0.1", 2293 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2294 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 2295 | "dev": true, 2296 | "optional": true 2297 | }, 2298 | "tar": { 2299 | "version": "4.4.8", 2300 | "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", 2301 | "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", 2302 | "dev": true, 2303 | "optional": true, 2304 | "requires": { 2305 | "chownr": "^1.1.1", 2306 | "fs-minipass": "^1.2.5", 2307 | "minipass": "^2.3.4", 2308 | "minizlib": "^1.1.1", 2309 | "mkdirp": "^0.5.0", 2310 | "safe-buffer": "^5.1.2", 2311 | "yallist": "^3.0.2" 2312 | } 2313 | }, 2314 | "util-deprecate": { 2315 | "version": "1.0.2", 2316 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2317 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2318 | "dev": true, 2319 | "optional": true 2320 | }, 2321 | "wide-align": { 2322 | "version": "1.1.3", 2323 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 2324 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 2325 | "dev": true, 2326 | "optional": true, 2327 | "requires": { 2328 | "string-width": "^1.0.2 || 2" 2329 | } 2330 | }, 2331 | "wrappy": { 2332 | "version": "1.0.2", 2333 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2334 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2335 | "dev": true, 2336 | "optional": true 2337 | }, 2338 | "yallist": { 2339 | "version": "3.0.3", 2340 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", 2341 | "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", 2342 | "dev": true, 2343 | "optional": true 2344 | } 2345 | } 2346 | }, 2347 | "get-value": { 2348 | "version": "2.0.6", 2349 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 2350 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 2351 | "dev": true, 2352 | "optional": true 2353 | }, 2354 | "glob": { 2355 | "version": "7.1.3", 2356 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 2357 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 2358 | "dev": true, 2359 | "requires": { 2360 | "fs.realpath": "^1.0.0", 2361 | "inflight": "^1.0.4", 2362 | "inherits": "2", 2363 | "minimatch": "^3.0.4", 2364 | "once": "^1.3.0", 2365 | "path-is-absolute": "^1.0.0" 2366 | } 2367 | }, 2368 | "globals": { 2369 | "version": "11.11.0", 2370 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", 2371 | "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", 2372 | "dev": true 2373 | }, 2374 | "graceful-fs": { 2375 | "version": "4.1.15", 2376 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", 2377 | "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", 2378 | "dev": true 2379 | }, 2380 | "has-flag": { 2381 | "version": "3.0.0", 2382 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2383 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 2384 | "dev": true 2385 | }, 2386 | "has-value": { 2387 | "version": "1.0.0", 2388 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 2389 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 2390 | "dev": true, 2391 | "optional": true, 2392 | "requires": { 2393 | "get-value": "^2.0.6", 2394 | "has-values": "^1.0.0", 2395 | "isobject": "^3.0.0" 2396 | }, 2397 | "dependencies": { 2398 | "isobject": { 2399 | "version": "3.0.1", 2400 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2401 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2402 | "dev": true, 2403 | "optional": true 2404 | } 2405 | } 2406 | }, 2407 | "has-values": { 2408 | "version": "1.0.0", 2409 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 2410 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 2411 | "dev": true, 2412 | "optional": true, 2413 | "requires": { 2414 | "is-number": "^3.0.0", 2415 | "kind-of": "^4.0.0" 2416 | }, 2417 | "dependencies": { 2418 | "is-number": { 2419 | "version": "3.0.0", 2420 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 2421 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 2422 | "dev": true, 2423 | "optional": true, 2424 | "requires": { 2425 | "kind-of": "^3.0.2" 2426 | }, 2427 | "dependencies": { 2428 | "kind-of": { 2429 | "version": "3.2.2", 2430 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2431 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2432 | "dev": true, 2433 | "optional": true, 2434 | "requires": { 2435 | "is-buffer": "^1.1.5" 2436 | } 2437 | } 2438 | } 2439 | }, 2440 | "kind-of": { 2441 | "version": "4.0.0", 2442 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 2443 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 2444 | "dev": true, 2445 | "optional": true, 2446 | "requires": { 2447 | "is-buffer": "^1.1.5" 2448 | } 2449 | } 2450 | } 2451 | }, 2452 | "inflight": { 2453 | "version": "1.0.6", 2454 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2455 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2456 | "dev": true, 2457 | "requires": { 2458 | "once": "^1.3.0", 2459 | "wrappy": "1" 2460 | } 2461 | }, 2462 | "inherits": { 2463 | "version": "2.0.3", 2464 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2465 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 2466 | "dev": true 2467 | }, 2468 | "invariant": { 2469 | "version": "2.2.4", 2470 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 2471 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 2472 | "dev": true, 2473 | "requires": { 2474 | "loose-envify": "^1.0.0" 2475 | } 2476 | }, 2477 | "is-accessor-descriptor": { 2478 | "version": "0.1.6", 2479 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 2480 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 2481 | "dev": true, 2482 | "optional": true, 2483 | "requires": { 2484 | "kind-of": "^3.0.2" 2485 | } 2486 | }, 2487 | "is-binary-path": { 2488 | "version": "1.0.1", 2489 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 2490 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 2491 | "dev": true, 2492 | "optional": true, 2493 | "requires": { 2494 | "binary-extensions": "^1.0.0" 2495 | } 2496 | }, 2497 | "is-buffer": { 2498 | "version": "1.1.6", 2499 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 2500 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 2501 | "dev": true, 2502 | "optional": true 2503 | }, 2504 | "is-data-descriptor": { 2505 | "version": "0.1.4", 2506 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 2507 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 2508 | "dev": true, 2509 | "optional": true, 2510 | "requires": { 2511 | "kind-of": "^3.0.2" 2512 | } 2513 | }, 2514 | "is-descriptor": { 2515 | "version": "0.1.6", 2516 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 2517 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 2518 | "dev": true, 2519 | "optional": true, 2520 | "requires": { 2521 | "is-accessor-descriptor": "^0.1.6", 2522 | "is-data-descriptor": "^0.1.4", 2523 | "kind-of": "^5.0.0" 2524 | }, 2525 | "dependencies": { 2526 | "kind-of": { 2527 | "version": "5.1.0", 2528 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 2529 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 2530 | "dev": true, 2531 | "optional": true 2532 | } 2533 | } 2534 | }, 2535 | "is-extendable": { 2536 | "version": "0.1.1", 2537 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 2538 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2539 | "dev": true, 2540 | "optional": true 2541 | }, 2542 | "is-plain-obj": { 2543 | "version": "1.1.0", 2544 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 2545 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", 2546 | "dev": true 2547 | }, 2548 | "is-plain-object": { 2549 | "version": "2.0.4", 2550 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 2551 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 2552 | "dev": true, 2553 | "optional": true, 2554 | "requires": { 2555 | "isobject": "^3.0.1" 2556 | }, 2557 | "dependencies": { 2558 | "isobject": { 2559 | "version": "3.0.1", 2560 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2561 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2562 | "dev": true, 2563 | "optional": true 2564 | } 2565 | } 2566 | }, 2567 | "is-windows": { 2568 | "version": "1.0.2", 2569 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 2570 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 2571 | "dev": true, 2572 | "optional": true 2573 | }, 2574 | "isarray": { 2575 | "version": "1.0.0", 2576 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2577 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2578 | "dev": true, 2579 | "optional": true 2580 | }, 2581 | "js-levenshtein": { 2582 | "version": "1.1.6", 2583 | "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", 2584 | "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", 2585 | "dev": true 2586 | }, 2587 | "js-tokens": { 2588 | "version": "4.0.0", 2589 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2590 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2591 | "dev": true 2592 | }, 2593 | "jsesc": { 2594 | "version": "0.5.0", 2595 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 2596 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 2597 | "dev": true 2598 | }, 2599 | "kind-of": { 2600 | "version": "3.2.2", 2601 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2602 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2603 | "dev": true, 2604 | "optional": true, 2605 | "requires": { 2606 | "is-buffer": "^1.1.5" 2607 | } 2608 | }, 2609 | "lodash": { 2610 | "version": "4.17.21", 2611 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2612 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 2613 | "dev": true 2614 | }, 2615 | "loose-envify": { 2616 | "version": "1.4.0", 2617 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2618 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2619 | "dev": true, 2620 | "requires": { 2621 | "js-tokens": "^3.0.0 || ^4.0.0" 2622 | } 2623 | }, 2624 | "map-cache": { 2625 | "version": "0.2.2", 2626 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 2627 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 2628 | "dev": true, 2629 | "optional": true 2630 | }, 2631 | "map-visit": { 2632 | "version": "1.0.0", 2633 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 2634 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 2635 | "dev": true, 2636 | "optional": true, 2637 | "requires": { 2638 | "object-visit": "^1.0.0" 2639 | } 2640 | }, 2641 | "minimatch": { 2642 | "version": "3.0.4", 2643 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2644 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2645 | "dev": true, 2646 | "requires": { 2647 | "brace-expansion": "^1.1.7" 2648 | } 2649 | }, 2650 | "minimist": { 2651 | "version": "0.0.8", 2652 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 2653 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 2654 | "dev": true 2655 | }, 2656 | "mixin-deep": { 2657 | "version": "1.3.2", 2658 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", 2659 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", 2660 | "dev": true, 2661 | "optional": true, 2662 | "requires": { 2663 | "for-in": "^1.0.2", 2664 | "is-extendable": "^1.0.1" 2665 | }, 2666 | "dependencies": { 2667 | "is-extendable": { 2668 | "version": "1.0.1", 2669 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 2670 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 2671 | "dev": true, 2672 | "optional": true, 2673 | "requires": { 2674 | "is-plain-object": "^2.0.4" 2675 | } 2676 | } 2677 | } 2678 | }, 2679 | "mkdirp": { 2680 | "version": "0.5.1", 2681 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2682 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2683 | "dev": true, 2684 | "requires": { 2685 | "minimist": "0.0.8" 2686 | } 2687 | }, 2688 | "ms": { 2689 | "version": "2.0.0", 2690 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2691 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2692 | "dev": true, 2693 | "optional": true 2694 | }, 2695 | "nan": { 2696 | "version": "2.13.2", 2697 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", 2698 | "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", 2699 | "dev": true, 2700 | "optional": true 2701 | }, 2702 | "nanomatch": { 2703 | "version": "1.2.13", 2704 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 2705 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 2706 | "dev": true, 2707 | "optional": true, 2708 | "requires": { 2709 | "arr-diff": "^4.0.0", 2710 | "array-unique": "^0.3.2", 2711 | "define-property": "^2.0.2", 2712 | "extend-shallow": "^3.0.2", 2713 | "fragment-cache": "^0.2.1", 2714 | "is-windows": "^1.0.2", 2715 | "kind-of": "^6.0.2", 2716 | "object.pick": "^1.3.0", 2717 | "regex-not": "^1.0.0", 2718 | "snapdragon": "^0.8.1", 2719 | "to-regex": "^3.0.1" 2720 | }, 2721 | "dependencies": { 2722 | "arr-diff": { 2723 | "version": "4.0.0", 2724 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 2725 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 2726 | "dev": true, 2727 | "optional": true 2728 | }, 2729 | "array-unique": { 2730 | "version": "0.3.2", 2731 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 2732 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 2733 | "dev": true, 2734 | "optional": true 2735 | }, 2736 | "kind-of": { 2737 | "version": "6.0.2", 2738 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 2739 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 2740 | "dev": true, 2741 | "optional": true 2742 | } 2743 | } 2744 | }, 2745 | "object-copy": { 2746 | "version": "0.1.0", 2747 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 2748 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 2749 | "dev": true, 2750 | "optional": true, 2751 | "requires": { 2752 | "copy-descriptor": "^0.1.0", 2753 | "define-property": "^0.2.5", 2754 | "kind-of": "^3.0.3" 2755 | }, 2756 | "dependencies": { 2757 | "define-property": { 2758 | "version": "0.2.5", 2759 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2760 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2761 | "dev": true, 2762 | "optional": true, 2763 | "requires": { 2764 | "is-descriptor": "^0.1.0" 2765 | } 2766 | } 2767 | } 2768 | }, 2769 | "object-visit": { 2770 | "version": "1.0.1", 2771 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 2772 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 2773 | "dev": true, 2774 | "optional": true, 2775 | "requires": { 2776 | "isobject": "^3.0.0" 2777 | }, 2778 | "dependencies": { 2779 | "isobject": { 2780 | "version": "3.0.1", 2781 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2782 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2783 | "dev": true, 2784 | "optional": true 2785 | } 2786 | } 2787 | }, 2788 | "object.pick": { 2789 | "version": "1.3.0", 2790 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 2791 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 2792 | "dev": true, 2793 | "optional": true, 2794 | "requires": { 2795 | "isobject": "^3.0.1" 2796 | }, 2797 | "dependencies": { 2798 | "isobject": { 2799 | "version": "3.0.1", 2800 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2801 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2802 | "dev": true, 2803 | "optional": true 2804 | } 2805 | } 2806 | }, 2807 | "once": { 2808 | "version": "1.4.0", 2809 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2810 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2811 | "dev": true, 2812 | "requires": { 2813 | "wrappy": "1" 2814 | } 2815 | }, 2816 | "pascalcase": { 2817 | "version": "0.1.1", 2818 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 2819 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 2820 | "dev": true, 2821 | "optional": true 2822 | }, 2823 | "path-dirname": { 2824 | "version": "1.0.2", 2825 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 2826 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 2827 | "dev": true, 2828 | "optional": true 2829 | }, 2830 | "path-is-absolute": { 2831 | "version": "1.0.1", 2832 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2833 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2834 | "dev": true 2835 | }, 2836 | "path-parse": { 2837 | "version": "1.0.7", 2838 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2839 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2840 | "dev": true 2841 | }, 2842 | "posix-character-classes": { 2843 | "version": "0.1.1", 2844 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 2845 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 2846 | "dev": true, 2847 | "optional": true 2848 | }, 2849 | "private": { 2850 | "version": "0.1.8", 2851 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 2852 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 2853 | "dev": true 2854 | }, 2855 | "process-nextick-args": { 2856 | "version": "2.0.0", 2857 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 2858 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 2859 | "dev": true, 2860 | "optional": true 2861 | }, 2862 | "readable-stream": { 2863 | "version": "2.3.6", 2864 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 2865 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 2866 | "dev": true, 2867 | "optional": true, 2868 | "requires": { 2869 | "core-util-is": "~1.0.0", 2870 | "inherits": "~2.0.3", 2871 | "isarray": "~1.0.0", 2872 | "process-nextick-args": "~2.0.0", 2873 | "safe-buffer": "~5.1.1", 2874 | "string_decoder": "~1.1.1", 2875 | "util-deprecate": "~1.0.1" 2876 | } 2877 | }, 2878 | "readdirp": { 2879 | "version": "2.2.1", 2880 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", 2881 | "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", 2882 | "dev": true, 2883 | "optional": true, 2884 | "requires": { 2885 | "graceful-fs": "^4.1.11", 2886 | "micromatch": "^3.1.10", 2887 | "readable-stream": "^2.0.2" 2888 | }, 2889 | "dependencies": { 2890 | "arr-diff": { 2891 | "version": "4.0.0", 2892 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 2893 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 2894 | "dev": true, 2895 | "optional": true 2896 | }, 2897 | "array-unique": { 2898 | "version": "0.3.2", 2899 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 2900 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 2901 | "dev": true, 2902 | "optional": true 2903 | }, 2904 | "braces": { 2905 | "version": "2.3.2", 2906 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 2907 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 2908 | "dev": true, 2909 | "optional": true, 2910 | "requires": { 2911 | "arr-flatten": "^1.1.0", 2912 | "array-unique": "^0.3.2", 2913 | "extend-shallow": "^2.0.1", 2914 | "fill-range": "^4.0.0", 2915 | "isobject": "^3.0.1", 2916 | "repeat-element": "^1.1.2", 2917 | "snapdragon": "^0.8.1", 2918 | "snapdragon-node": "^2.0.1", 2919 | "split-string": "^3.0.2", 2920 | "to-regex": "^3.0.1" 2921 | }, 2922 | "dependencies": { 2923 | "extend-shallow": { 2924 | "version": "2.0.1", 2925 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2926 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2927 | "dev": true, 2928 | "optional": true, 2929 | "requires": { 2930 | "is-extendable": "^0.1.0" 2931 | } 2932 | } 2933 | } 2934 | }, 2935 | "expand-brackets": { 2936 | "version": "2.1.4", 2937 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 2938 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 2939 | "dev": true, 2940 | "optional": true, 2941 | "requires": { 2942 | "debug": "^2.3.3", 2943 | "define-property": "^0.2.5", 2944 | "extend-shallow": "^2.0.1", 2945 | "posix-character-classes": "^0.1.0", 2946 | "regex-not": "^1.0.0", 2947 | "snapdragon": "^0.8.1", 2948 | "to-regex": "^3.0.1" 2949 | }, 2950 | "dependencies": { 2951 | "define-property": { 2952 | "version": "0.2.5", 2953 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2954 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2955 | "dev": true, 2956 | "optional": true, 2957 | "requires": { 2958 | "is-descriptor": "^0.1.0" 2959 | } 2960 | }, 2961 | "extend-shallow": { 2962 | "version": "2.0.1", 2963 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2964 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2965 | "dev": true, 2966 | "optional": true, 2967 | "requires": { 2968 | "is-extendable": "^0.1.0" 2969 | } 2970 | }, 2971 | "is-accessor-descriptor": { 2972 | "version": "0.1.6", 2973 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 2974 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 2975 | "dev": true, 2976 | "optional": true, 2977 | "requires": { 2978 | "kind-of": "^3.0.2" 2979 | }, 2980 | "dependencies": { 2981 | "kind-of": { 2982 | "version": "3.2.2", 2983 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2984 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2985 | "dev": true, 2986 | "optional": true, 2987 | "requires": { 2988 | "is-buffer": "^1.1.5" 2989 | } 2990 | } 2991 | } 2992 | }, 2993 | "is-data-descriptor": { 2994 | "version": "0.1.4", 2995 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 2996 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 2997 | "dev": true, 2998 | "optional": true, 2999 | "requires": { 3000 | "kind-of": "^3.0.2" 3001 | }, 3002 | "dependencies": { 3003 | "kind-of": { 3004 | "version": "3.2.2", 3005 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3006 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3007 | "dev": true, 3008 | "optional": true, 3009 | "requires": { 3010 | "is-buffer": "^1.1.5" 3011 | } 3012 | } 3013 | } 3014 | }, 3015 | "is-descriptor": { 3016 | "version": "0.1.6", 3017 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 3018 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 3019 | "dev": true, 3020 | "optional": true, 3021 | "requires": { 3022 | "is-accessor-descriptor": "^0.1.6", 3023 | "is-data-descriptor": "^0.1.4", 3024 | "kind-of": "^5.0.0" 3025 | } 3026 | }, 3027 | "kind-of": { 3028 | "version": "5.1.0", 3029 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 3030 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 3031 | "dev": true, 3032 | "optional": true 3033 | } 3034 | } 3035 | }, 3036 | "extglob": { 3037 | "version": "2.0.4", 3038 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 3039 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 3040 | "dev": true, 3041 | "optional": true, 3042 | "requires": { 3043 | "array-unique": "^0.3.2", 3044 | "define-property": "^1.0.0", 3045 | "expand-brackets": "^2.1.4", 3046 | "extend-shallow": "^2.0.1", 3047 | "fragment-cache": "^0.2.1", 3048 | "regex-not": "^1.0.0", 3049 | "snapdragon": "^0.8.1", 3050 | "to-regex": "^3.0.1" 3051 | }, 3052 | "dependencies": { 3053 | "define-property": { 3054 | "version": "1.0.0", 3055 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 3056 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 3057 | "dev": true, 3058 | "optional": true, 3059 | "requires": { 3060 | "is-descriptor": "^1.0.0" 3061 | } 3062 | }, 3063 | "extend-shallow": { 3064 | "version": "2.0.1", 3065 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3066 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3067 | "dev": true, 3068 | "optional": true, 3069 | "requires": { 3070 | "is-extendable": "^0.1.0" 3071 | } 3072 | } 3073 | } 3074 | }, 3075 | "fill-range": { 3076 | "version": "4.0.0", 3077 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 3078 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 3079 | "dev": true, 3080 | "optional": true, 3081 | "requires": { 3082 | "extend-shallow": "^2.0.1", 3083 | "is-number": "^3.0.0", 3084 | "repeat-string": "^1.6.1", 3085 | "to-regex-range": "^2.1.0" 3086 | }, 3087 | "dependencies": { 3088 | "extend-shallow": { 3089 | "version": "2.0.1", 3090 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3091 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3092 | "dev": true, 3093 | "optional": true, 3094 | "requires": { 3095 | "is-extendable": "^0.1.0" 3096 | } 3097 | } 3098 | } 3099 | }, 3100 | "is-accessor-descriptor": { 3101 | "version": "1.0.0", 3102 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 3103 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 3104 | "dev": true, 3105 | "optional": true, 3106 | "requires": { 3107 | "kind-of": "^6.0.0" 3108 | } 3109 | }, 3110 | "is-data-descriptor": { 3111 | "version": "1.0.0", 3112 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 3113 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 3114 | "dev": true, 3115 | "optional": true, 3116 | "requires": { 3117 | "kind-of": "^6.0.0" 3118 | } 3119 | }, 3120 | "is-descriptor": { 3121 | "version": "1.0.2", 3122 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 3123 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 3124 | "dev": true, 3125 | "optional": true, 3126 | "requires": { 3127 | "is-accessor-descriptor": "^1.0.0", 3128 | "is-data-descriptor": "^1.0.0", 3129 | "kind-of": "^6.0.2" 3130 | } 3131 | }, 3132 | "is-number": { 3133 | "version": "3.0.0", 3134 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 3135 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 3136 | "dev": true, 3137 | "optional": true, 3138 | "requires": { 3139 | "kind-of": "^3.0.2" 3140 | }, 3141 | "dependencies": { 3142 | "kind-of": { 3143 | "version": "3.2.2", 3144 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3145 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3146 | "dev": true, 3147 | "optional": true, 3148 | "requires": { 3149 | "is-buffer": "^1.1.5" 3150 | } 3151 | } 3152 | } 3153 | }, 3154 | "isobject": { 3155 | "version": "3.0.1", 3156 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 3157 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 3158 | "dev": true, 3159 | "optional": true 3160 | }, 3161 | "kind-of": { 3162 | "version": "6.0.2", 3163 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 3164 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 3165 | "dev": true, 3166 | "optional": true 3167 | }, 3168 | "micromatch": { 3169 | "version": "3.1.10", 3170 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 3171 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 3172 | "dev": true, 3173 | "optional": true, 3174 | "requires": { 3175 | "arr-diff": "^4.0.0", 3176 | "array-unique": "^0.3.2", 3177 | "braces": "^2.3.1", 3178 | "define-property": "^2.0.2", 3179 | "extend-shallow": "^3.0.2", 3180 | "extglob": "^2.0.4", 3181 | "fragment-cache": "^0.2.1", 3182 | "kind-of": "^6.0.2", 3183 | "nanomatch": "^1.2.9", 3184 | "object.pick": "^1.3.0", 3185 | "regex-not": "^1.0.0", 3186 | "snapdragon": "^0.8.1", 3187 | "to-regex": "^3.0.2" 3188 | } 3189 | } 3190 | } 3191 | }, 3192 | "regenerate": { 3193 | "version": "1.4.0", 3194 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", 3195 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", 3196 | "dev": true 3197 | }, 3198 | "regenerate-unicode-properties": { 3199 | "version": "8.0.2", 3200 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz", 3201 | "integrity": "sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ==", 3202 | "dev": true, 3203 | "requires": { 3204 | "regenerate": "^1.4.0" 3205 | } 3206 | }, 3207 | "regenerator-transform": { 3208 | "version": "0.13.4", 3209 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", 3210 | "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", 3211 | "dev": true, 3212 | "requires": { 3213 | "private": "^0.1.6" 3214 | } 3215 | }, 3216 | "regex-not": { 3217 | "version": "1.0.2", 3218 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 3219 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 3220 | "dev": true, 3221 | "optional": true, 3222 | "requires": { 3223 | "extend-shallow": "^3.0.2", 3224 | "safe-regex": "^1.1.0" 3225 | } 3226 | }, 3227 | "regexp-tree": { 3228 | "version": "0.1.5", 3229 | "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz", 3230 | "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==", 3231 | "dev": true 3232 | }, 3233 | "regexpu-core": { 3234 | "version": "4.5.4", 3235 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", 3236 | "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", 3237 | "dev": true, 3238 | "requires": { 3239 | "regenerate": "^1.4.0", 3240 | "regenerate-unicode-properties": "^8.0.2", 3241 | "regjsgen": "^0.5.0", 3242 | "regjsparser": "^0.6.0", 3243 | "unicode-match-property-ecmascript": "^1.0.4", 3244 | "unicode-match-property-value-ecmascript": "^1.1.0" 3245 | } 3246 | }, 3247 | "regjsgen": { 3248 | "version": "0.5.0", 3249 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", 3250 | "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", 3251 | "dev": true 3252 | }, 3253 | "regjsparser": { 3254 | "version": "0.6.0", 3255 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", 3256 | "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", 3257 | "dev": true, 3258 | "requires": { 3259 | "jsesc": "~0.5.0" 3260 | } 3261 | }, 3262 | "remove-trailing-separator": { 3263 | "version": "1.1.0", 3264 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 3265 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 3266 | "dev": true, 3267 | "optional": true 3268 | }, 3269 | "repeat-element": { 3270 | "version": "1.1.3", 3271 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 3272 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", 3273 | "dev": true, 3274 | "optional": true 3275 | }, 3276 | "repeat-string": { 3277 | "version": "1.6.1", 3278 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 3279 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 3280 | "dev": true, 3281 | "optional": true 3282 | }, 3283 | "resolve": { 3284 | "version": "1.10.0", 3285 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", 3286 | "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", 3287 | "dev": true, 3288 | "requires": { 3289 | "path-parse": "^1.0.6" 3290 | } 3291 | }, 3292 | "resolve-url": { 3293 | "version": "0.2.1", 3294 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 3295 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 3296 | "dev": true, 3297 | "optional": true 3298 | }, 3299 | "ret": { 3300 | "version": "0.1.15", 3301 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 3302 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 3303 | "dev": true, 3304 | "optional": true 3305 | }, 3306 | "safe-buffer": { 3307 | "version": "5.1.2", 3308 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3309 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3310 | "dev": true 3311 | }, 3312 | "safe-regex": { 3313 | "version": "1.1.0", 3314 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 3315 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 3316 | "dev": true, 3317 | "optional": true, 3318 | "requires": { 3319 | "ret": "~0.1.10" 3320 | } 3321 | }, 3322 | "semver": { 3323 | "version": "5.7.0", 3324 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", 3325 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", 3326 | "dev": true 3327 | }, 3328 | "set-value": { 3329 | "version": "2.0.0", 3330 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", 3331 | "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", 3332 | "dev": true, 3333 | "optional": true, 3334 | "requires": { 3335 | "extend-shallow": "^2.0.1", 3336 | "is-extendable": "^0.1.1", 3337 | "is-plain-object": "^2.0.3", 3338 | "split-string": "^3.0.1" 3339 | }, 3340 | "dependencies": { 3341 | "extend-shallow": { 3342 | "version": "2.0.1", 3343 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3344 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3345 | "dev": true, 3346 | "optional": true, 3347 | "requires": { 3348 | "is-extendable": "^0.1.0" 3349 | } 3350 | } 3351 | } 3352 | }, 3353 | "snapdragon": { 3354 | "version": "0.8.2", 3355 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 3356 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 3357 | "dev": true, 3358 | "optional": true, 3359 | "requires": { 3360 | "base": "^0.11.1", 3361 | "debug": "^2.2.0", 3362 | "define-property": "^0.2.5", 3363 | "extend-shallow": "^2.0.1", 3364 | "map-cache": "^0.2.2", 3365 | "source-map": "^0.5.6", 3366 | "source-map-resolve": "^0.5.0", 3367 | "use": "^3.1.0" 3368 | }, 3369 | "dependencies": { 3370 | "define-property": { 3371 | "version": "0.2.5", 3372 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3373 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3374 | "dev": true, 3375 | "optional": true, 3376 | "requires": { 3377 | "is-descriptor": "^0.1.0" 3378 | } 3379 | }, 3380 | "extend-shallow": { 3381 | "version": "2.0.1", 3382 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3383 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3384 | "dev": true, 3385 | "optional": true, 3386 | "requires": { 3387 | "is-extendable": "^0.1.0" 3388 | } 3389 | } 3390 | } 3391 | }, 3392 | "snapdragon-node": { 3393 | "version": "2.1.1", 3394 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 3395 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 3396 | "dev": true, 3397 | "optional": true, 3398 | "requires": { 3399 | "define-property": "^1.0.0", 3400 | "isobject": "^3.0.0", 3401 | "snapdragon-util": "^3.0.1" 3402 | }, 3403 | "dependencies": { 3404 | "define-property": { 3405 | "version": "1.0.0", 3406 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 3407 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 3408 | "dev": true, 3409 | "optional": true, 3410 | "requires": { 3411 | "is-descriptor": "^1.0.0" 3412 | } 3413 | }, 3414 | "is-accessor-descriptor": { 3415 | "version": "1.0.0", 3416 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 3417 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 3418 | "dev": true, 3419 | "optional": true, 3420 | "requires": { 3421 | "kind-of": "^6.0.0" 3422 | } 3423 | }, 3424 | "is-data-descriptor": { 3425 | "version": "1.0.0", 3426 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 3427 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 3428 | "dev": true, 3429 | "optional": true, 3430 | "requires": { 3431 | "kind-of": "^6.0.0" 3432 | } 3433 | }, 3434 | "is-descriptor": { 3435 | "version": "1.0.2", 3436 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 3437 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 3438 | "dev": true, 3439 | "optional": true, 3440 | "requires": { 3441 | "is-accessor-descriptor": "^1.0.0", 3442 | "is-data-descriptor": "^1.0.0", 3443 | "kind-of": "^6.0.2" 3444 | } 3445 | }, 3446 | "isobject": { 3447 | "version": "3.0.1", 3448 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 3449 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 3450 | "dev": true, 3451 | "optional": true 3452 | }, 3453 | "kind-of": { 3454 | "version": "6.0.2", 3455 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 3456 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 3457 | "dev": true, 3458 | "optional": true 3459 | } 3460 | } 3461 | }, 3462 | "snapdragon-util": { 3463 | "version": "3.0.1", 3464 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 3465 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 3466 | "dev": true, 3467 | "optional": true, 3468 | "requires": { 3469 | "kind-of": "^3.2.0" 3470 | } 3471 | }, 3472 | "source-map": { 3473 | "version": "0.5.7", 3474 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3475 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3476 | "dev": true 3477 | }, 3478 | "source-map-resolve": { 3479 | "version": "0.5.2", 3480 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", 3481 | "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", 3482 | "dev": true, 3483 | "optional": true, 3484 | "requires": { 3485 | "atob": "^2.1.1", 3486 | "decode-uri-component": "^0.2.0", 3487 | "resolve-url": "^0.2.1", 3488 | "source-map-url": "^0.4.0", 3489 | "urix": "^0.1.0" 3490 | } 3491 | }, 3492 | "source-map-url": { 3493 | "version": "0.4.0", 3494 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 3495 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 3496 | "dev": true, 3497 | "optional": true 3498 | }, 3499 | "split-string": { 3500 | "version": "3.1.0", 3501 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 3502 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 3503 | "dev": true, 3504 | "optional": true, 3505 | "requires": { 3506 | "extend-shallow": "^3.0.0" 3507 | } 3508 | }, 3509 | "static-extend": { 3510 | "version": "0.1.2", 3511 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 3512 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 3513 | "dev": true, 3514 | "optional": true, 3515 | "requires": { 3516 | "define-property": "^0.2.5", 3517 | "object-copy": "^0.1.0" 3518 | }, 3519 | "dependencies": { 3520 | "define-property": { 3521 | "version": "0.2.5", 3522 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3523 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3524 | "dev": true, 3525 | "optional": true, 3526 | "requires": { 3527 | "is-descriptor": "^0.1.0" 3528 | } 3529 | } 3530 | } 3531 | }, 3532 | "string_decoder": { 3533 | "version": "1.1.1", 3534 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3535 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3536 | "dev": true, 3537 | "optional": true, 3538 | "requires": { 3539 | "safe-buffer": "~5.1.0" 3540 | } 3541 | }, 3542 | "to-object-path": { 3543 | "version": "0.3.0", 3544 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 3545 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 3546 | "dev": true, 3547 | "optional": true, 3548 | "requires": { 3549 | "kind-of": "^3.0.2" 3550 | } 3551 | }, 3552 | "to-regex": { 3553 | "version": "3.0.2", 3554 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 3555 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 3556 | "dev": true, 3557 | "optional": true, 3558 | "requires": { 3559 | "define-property": "^2.0.2", 3560 | "extend-shallow": "^3.0.2", 3561 | "regex-not": "^1.0.2", 3562 | "safe-regex": "^1.1.0" 3563 | } 3564 | }, 3565 | "to-regex-range": { 3566 | "version": "2.1.1", 3567 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 3568 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 3569 | "dev": true, 3570 | "optional": true, 3571 | "requires": { 3572 | "is-number": "^3.0.0", 3573 | "repeat-string": "^1.6.1" 3574 | }, 3575 | "dependencies": { 3576 | "is-number": { 3577 | "version": "3.0.0", 3578 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 3579 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 3580 | "dev": true, 3581 | "optional": true, 3582 | "requires": { 3583 | "kind-of": "^3.0.2" 3584 | } 3585 | } 3586 | } 3587 | }, 3588 | "trim-right": { 3589 | "version": "1.0.1", 3590 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 3591 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 3592 | "dev": true 3593 | }, 3594 | "unicode-canonical-property-names-ecmascript": { 3595 | "version": "1.0.4", 3596 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", 3597 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", 3598 | "dev": true 3599 | }, 3600 | "unicode-match-property-ecmascript": { 3601 | "version": "1.0.4", 3602 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", 3603 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", 3604 | "dev": true, 3605 | "requires": { 3606 | "unicode-canonical-property-names-ecmascript": "^1.0.4", 3607 | "unicode-property-aliases-ecmascript": "^1.0.4" 3608 | } 3609 | }, 3610 | "unicode-match-property-value-ecmascript": { 3611 | "version": "1.1.0", 3612 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", 3613 | "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", 3614 | "dev": true 3615 | }, 3616 | "unicode-property-aliases-ecmascript": { 3617 | "version": "1.0.5", 3618 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", 3619 | "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", 3620 | "dev": true 3621 | }, 3622 | "union-value": { 3623 | "version": "1.0.0", 3624 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", 3625 | "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", 3626 | "dev": true, 3627 | "optional": true, 3628 | "requires": { 3629 | "arr-union": "^3.1.0", 3630 | "get-value": "^2.0.6", 3631 | "is-extendable": "^0.1.1", 3632 | "set-value": "^0.4.3" 3633 | }, 3634 | "dependencies": { 3635 | "extend-shallow": { 3636 | "version": "2.0.1", 3637 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3638 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3639 | "dev": true, 3640 | "optional": true, 3641 | "requires": { 3642 | "is-extendable": "^0.1.0" 3643 | } 3644 | }, 3645 | "set-value": { 3646 | "version": "0.4.3", 3647 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", 3648 | "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", 3649 | "dev": true, 3650 | "optional": true, 3651 | "requires": { 3652 | "extend-shallow": "^2.0.1", 3653 | "is-extendable": "^0.1.1", 3654 | "is-plain-object": "^2.0.1", 3655 | "to-object-path": "^0.3.0" 3656 | } 3657 | } 3658 | } 3659 | }, 3660 | "unset-value": { 3661 | "version": "1.0.0", 3662 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 3663 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 3664 | "dev": true, 3665 | "optional": true, 3666 | "requires": { 3667 | "has-value": "^0.3.1", 3668 | "isobject": "^3.0.0" 3669 | }, 3670 | "dependencies": { 3671 | "has-value": { 3672 | "version": "0.3.1", 3673 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 3674 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 3675 | "dev": true, 3676 | "optional": true, 3677 | "requires": { 3678 | "get-value": "^2.0.3", 3679 | "has-values": "^0.1.4", 3680 | "isobject": "^2.0.0" 3681 | }, 3682 | "dependencies": { 3683 | "isobject": { 3684 | "version": "2.1.0", 3685 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 3686 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 3687 | "dev": true, 3688 | "optional": true, 3689 | "requires": { 3690 | "isarray": "1.0.0" 3691 | } 3692 | } 3693 | } 3694 | }, 3695 | "has-values": { 3696 | "version": "0.1.4", 3697 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 3698 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 3699 | "dev": true, 3700 | "optional": true 3701 | }, 3702 | "isobject": { 3703 | "version": "3.0.1", 3704 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 3705 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 3706 | "dev": true, 3707 | "optional": true 3708 | } 3709 | } 3710 | }, 3711 | "upath": { 3712 | "version": "1.1.2", 3713 | "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", 3714 | "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", 3715 | "dev": true, 3716 | "optional": true 3717 | }, 3718 | "urix": { 3719 | "version": "0.1.0", 3720 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 3721 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 3722 | "dev": true, 3723 | "optional": true 3724 | }, 3725 | "use": { 3726 | "version": "3.1.1", 3727 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 3728 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", 3729 | "dev": true, 3730 | "optional": true 3731 | }, 3732 | "util-deprecate": { 3733 | "version": "1.0.2", 3734 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3735 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3736 | "dev": true, 3737 | "optional": true 3738 | }, 3739 | "wrappy": { 3740 | "version": "1.0.2", 3741 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3742 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3743 | "dev": true 3744 | } 3745 | } 3746 | } 3747 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/babel-demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es6-tooling", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "build": "babel src -d build" 8 | }, 9 | "keywords": [], 10 | "author": "Bolaji Ayodeji", 11 | "license": "ISC", 12 | "devDependencies": { 13 | "@babel/cli": "^7.2.3", 14 | "@babel/core": "^7.4.0", 15 | "@babel/preset-env": "^7.4.2" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/babel-demo/src/circle.js: -------------------------------------------------------------------------------- 1 | 2 | const _radius = new WeakMap(); 3 | 4 | export class Circle { 5 | constructor(radius) { 6 | _radius.set(this, radius); 7 | } 8 | 9 | draw() { 10 | console.log('Circle with radius ' + _radius.get(this)); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/babel-demo/src/index.js: -------------------------------------------------------------------------------- 1 | 2 | import {Circle} from './circle.js'; 3 | 4 | const c = new Circle(11); 5 | c.draw(); 6 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/babel-demo/steps.md: -------------------------------------------------------------------------------- 1 | # Installing Babel 2 | 3 | - npm init --yes 4 | - npm install --save-dev @babel/core @babel/cli 5 | - Create .babelrc file 6 | - npm install @babel/preset-env --save-dev 7 | - In .babelrc, add { 8 | "presets": ["@babel/preset-env"] 9 | } 10 | 11 | # Installing Webpack 12 | 13 | - npm install i -g webpack 14 | - npm install --save-dev webpack-cli 15 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/webpack-demo/circle.js: -------------------------------------------------------------------------------- 1 | const _radius = new WeakMap(); 2 | 3 | export class Circle { 4 | constructor(radius) { 5 | _radius.set(this, radius); 6 | } 7 | 8 | draw() { 9 | console.log('Circle with radius ' + _radius.get(this)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/webpack-demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /06-es6-tooling/es6-tooling/webpack-demo/index.js: -------------------------------------------------------------------------------- 1 | 2 | import {Circle} from './circle.js'; 3 | 4 | const c = new Circle(10); 5 | c.draw(); -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Bolaji Ayodeji 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | # OOP JAVASCRIPT 4 | 5 | [![Pull Requests Welcome](https://img.shields.io/badge/PRs-welcome-red.svg?style=flat)](http://makeapullrequest.com) 6 | [![first-timers-only Friendly](https://img.shields.io/badge/first--timers--only-friendly-blue.svg)](http://www.firsttimersonly.com/) 7 | [![Open Source Helpers](https://www.codetriage.com/bolajiayodeji/oop-javascript/badges/users.svg)](https://www.codetriage.com/bolajiayodeji/oop-javascript) 8 | 9 | Learn Object Oriented JavaScript concepts in action. :zap:
10 | For beginners and intermediates! 11 | 12 |
13 | 14 | ## Contributors Guide 15 | 16 | - If you are new to Git and Github, it is advisable you go through 17 | [GitHub For Beginners](http://readwrite.com/2013/09/30/understanding-github-a-journey-for-beginners-part-1/) 18 | before moving to the next step. 19 | 20 | - Fork the Repository [here](https://github.com/BolajiAyodeji/OOP-JavaScript/fork) 21 | 22 | - Clone the forked Repository
23 | ```git 24 | $ git clone https://github.com/BolajiAyodeji/OOP-JavaScript.git 25 | ``` 26 | 27 | - Enter the cloned directory
28 | ```git 29 | cd OOP-JavaScript 30 | ``` 31 | 32 | - Open directory in your Code Editor
33 | ```git 34 | code . 35 | ``` 36 | 37 | - Add new snippets!
38 | Ensure to add each snippets in the expected folder directory.
39 | If possible, try to show multiples ways of solving the same problem from the less efficient to the most efficient algorithm. 40 | 41 | - Push your files
42 | ```git 43 | $ git add --all 44 | $ git commit -m "commit description here" 45 | $ git push -u origin master 46 | ``` 47 | 48 | - Open a Pull Request ( [What is a pull request?](https://yangsu.github.io/pull-request-tutorial/) ) 49 | - Add enough description of what you did, changes you made and if possible screenshots 50 | - Wait for Review (Your PR would be reviewed and merged if deemed fit) 51 | 52 | ## Reference 53 | [CodeWithMosh Object Oriented JavaScript Course](https://codewithmosh.com/courses/310571) 54 | 55 | ## Helpful Resources 56 | 57 | - [Pro GIT Book](https://git-scm.com/book/en/v2) 58 | 59 | - [Try Git](https://try.github.io/) 60 | 61 | - [Git/ Git Hub on Windows](https://www.youtube.com/watch?v=J_Clau1bYco) 62 | 63 | 64 | ## Author 65 | [Bolaji Ayodeji](https://github.com/BolajiAyodeji) 66 | 67 | ## Licence 68 | [MIT](https://opensource.org/licenses/MIT) 69 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-leap-day -------------------------------------------------------------------------------- /cheat-sheets/classes-cheat-sheet.js: -------------------------------------------------------------------------------- 1 | 2 | class Circle { 3 | constructor(radius) { 4 | this.radius = radius; 5 | } 6 | 7 | // These methods will be added to the prototype. 8 | draw() { 9 | } 10 | 11 | // This will be available on the Circle class (Circle.parse()) 12 | static parse(str) { 13 | } 14 | } 15 | 16 | // Using symbols to implement private properties and methods 17 | const _size = Symbol(); 18 | const _draw = Symbol(); 19 | 20 | class Square { 21 | constructor(size) { 22 | // "Kind of" private property 23 | this[_size] = size; 24 | } 25 | 26 | // "Kind of" private method 27 | [_draw]() { 28 | } 29 | 30 | // By "kind of" I mean: these properties and methods are essentally 31 | // part of the object and are accessible from the outside. But accessing 32 | // them is hard and awkward. 33 | } 34 | 35 | // using WeakMaps to implement private properties and methods 36 | const _width = new WeakMap(); 37 | 38 | class Rectangle { 39 | constructor(width) { 40 | _width.set(this, width); 41 | } 42 | 43 | draw() { 44 | console.log('Rectangle with width' + _width.get(this)); 45 | } 46 | } 47 | 48 | // WeakMaps give us better protection than symbols. There is no way 49 | // to access private members implemented using WeakMaps from the 50 | // outside of an object. 51 | 52 | // Inheritance 53 | class Triangle extends Shape { 54 | constructor(color) { 55 | // To call the base constructor 56 | super(color); 57 | } 58 | 59 | draw() { 60 | // Call the base method 61 | super.draw(); 62 | 63 | // Do some other stuff here 64 | } 65 | } -------------------------------------------------------------------------------- /cheat-sheets/inheritance-cheat-sheet.js: -------------------------------------------------------------------------------- 1 | 2 | function Shape() {} 3 | function Circle() {} 4 | 5 | // Prototypical inheritance 6 | Circle.prototype = Object.create(Shape.prototype); 7 | Circle.prototype.constructor = Circle; 8 | 9 | function Rectangle(color) { 10 | // To call the super constructor 11 | Shape.call(this, color); 12 | } 13 | 14 | // Method overriding 15 | Shape.prototype.draw = function() {} 16 | Circle.prototype.draw = function() { 17 | // Call the base implementation 18 | Shape.prototype.draw.call(this); 19 | 20 | // Do additional stuff here 21 | } 22 | 23 | // Don't create large inheritance hierarchies. 24 | // One level of inheritance is fine. 25 | 26 | // Use mixins to combine multiple objects 27 | // and implement composition in JavaScript. 28 | const canEat = { 29 | eat: function() {} 30 | }; 31 | 32 | const canWalk = { 33 | walk: function() {} 34 | }; 35 | 36 | function mixin(target, ...sources) { 37 | // Copies all the properties from all the source objects 38 | // to the target object. 39 | Object.assign(target, ...sources); 40 | } 41 | 42 | function Person() {} 43 | 44 | mixin(Person.prototype, canEat, canWalk); -------------------------------------------------------------------------------- /cheat-sheets/modules-cheat-sheet.js: -------------------------------------------------------------------------------- 1 | 2 | // Module formats 3 | // - AMD / Asynchronous Module Definition (Browser) 4 | // - CommonJS (Node) 5 | // - UMD / Universal Module Definition (Browser + Node) 6 | // - ES6 Modules 7 | 8 | // CommonJS (Used in Node) 9 | // Exporting 10 | module.exports.Cirlce = Circle; 11 | // Importing 12 | const Circle = require('./circle'); 13 | 14 | // ES6 Modules (Used in Browser) 15 | // Exporting 16 | export class Square {} 17 | // Importing 18 | import {Square} from './square'; 19 | 20 | // We use Babel to transpile our modern JavaScript code 21 | // into code that browsers can understand (typically ES5). 22 | 23 | // We use Webpack to combine our JavaScript files into a bundle. 24 | -------------------------------------------------------------------------------- /cheat-sheets/object-cheat-sheet.js: -------------------------------------------------------------------------------- 1 | // The simplest way to create an object is using an object literal 2 | const circle = { 3 | radius: 1, 4 | draw: function() {} 5 | }; 6 | 7 | // To create multiple objects with the same structure and behaviour (methods), use a factory or a constructor. 8 | 9 | // Factory function 10 | function createCircle(radius) { 11 | return { 12 | radius, 13 | draw: function() {} 14 | } 15 | } 16 | 17 | // Constructor function 18 | function Circle(radius) { 19 | this.radius = radius; 20 | this.draw = function() {} 21 | } 22 | 23 | // Every object has a "constructor" property which returns the function that was used to construct or create that object. 24 | const x = {}; 25 | x.constructor; // returns Object() 26 | 27 | // In JavaScript, functions are objects. They have properties and methods. 28 | Circle.name; 29 | Circle.length; 30 | Circle.constructor; // returns Function() 31 | Circle.call({}, 1); // to call the Circle function 32 | Circle.apply({}, [1]); 33 | 34 | // Value types are copied by their value, reference types are copied by their reference. 35 | // Value types in JavaScript are: String, Number, Boolean, Symbol, undefined and null 36 | // Reference types are: Object, Function and Array 37 | 38 | // JavaScript objects are dynamic. You can add/remove properties: 39 | circle.location = {}; 40 | circle['location'] = {}; 41 | 42 | delete circle.location; 43 | 44 | // To enumerate the members in an object: 45 | for (let key in circle) 46 | console.log(key, circle[key]); 47 | 48 | Object.keys(circle); 49 | Object.values(circle); 50 | Object.entries(circle); 51 | 52 | // To see if an object has a given property 53 | if ('location' in circle) 54 | 55 | // Abstraction means hiding the complexity/details and showing only the essentials. 56 | // We can hide the details by using private members. Replace "this" with "let". 57 | 58 | function Circle(radius) { 59 | // Public member 60 | this.radius = radius; 61 | 62 | // Private member 63 | let defaultLocation = {}; 64 | } 65 | 66 | // To define a getter/setter, use Object.defineProperty(): 67 | 68 | Object.defineProperty(this, 'defaultLocation', { 69 | get: function() { return defaultLocation; }, 70 | set: function(value) { defaultLocation = value; } 71 | }); 72 | -------------------------------------------------------------------------------- /cheat-sheets/prototypes-cheat-sheet.js: -------------------------------------------------------------------------------- 1 | // Every object (except the root object) has a prototype (parent). 2 | // To get the prototype of an object: 3 | Object.getPrototypeOf(obj); 4 | 5 | // In Chrome, you can inspect "__proto__" property. But you should 6 | // not use that in the code. 7 | 8 | // To get the attributes of a property: 9 | Object.getOwnPropertyDescriptor(obj, 'propertyName'); 10 | 11 | // To set the attributes for a property: 12 | Object.defineProperty(obj, 'propertyName', { 13 | configurable: false, // cannot be deleted 14 | writable: false, 15 | enumerable: false 16 | }); 17 | 18 | // Constructors have a "prototype" property. It returns the object 19 | // that will be used as the prototype for objects created by the constructor. 20 | Object.prototype === Object.getPrototypeOf({}) 21 | Array.prototype === Object.getPrototypeOf([]) 22 | 23 | // All objects created with the same constructor will have the same prototype. 24 | // A single instance of this prototype will be stored in the memory. 25 | const x = {}; 26 | const y = {}; 27 | Object.getPrototypeOf(x) === Object.getPrototypeOf(y); // returns true 28 | 29 | // Any changes to the prototype will be immediately visible to all objects 30 | // referencing this prototype. 31 | 32 | // When dealing with large number of objects, it's better to put their 33 | // methods on their prototype. This way, a single instance of the methods 34 | // will be in the memory. 35 | Circle.prototype.draw = function() {} 36 | 37 | // To get the own/instance properties: 38 | Object.keys(obj); 39 | 40 | // To get all the properties (own + prototype): 41 | for (let key in obj) {} -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | OOP JavaScript - Getting Started 9 | 10 | 11 | 12 | 13 |

OOP JavaScript

14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | 2 | // Transpiler (Transpile and compile js into all browser compatible code) -> BABEL 3 | // Bundler (Combiles all JS files into a bundle) -> WEBPACK 4 | --------------------------------------------------------------------------------