├── .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 | ${this.items.map(item =>
26 | `${item} `).join('')}
27 | `);
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 | [](http://makeapullrequest.com)
6 | [](http://www.firsttimersonly.com/)
7 | [](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 |
--------------------------------------------------------------------------------