From 225d69766733fdc6d9812a012a5527b2290ff47c Mon Sep 17 00:00:00 2001 From: zentestuken <88427701+zentestuken@users.noreply.github.com> Date: Mon, 29 Nov 2021 19:44:17 +0300 Subject: [PATCH] Added my solutions to all tasks --- module-1/classification.js | 9 +- module-1/euclidean.js | 11 +- module-1/fibonacci.js | 14 + module-1/test/classification.spec.js | 5 + module-1/test/euclidean.spec.js | 8 +- module-1/test/fibonacci.spec.js | 5 + module-2/test/calc.spec.js | 214 +- module-3/pop/Element.js | 58 +- module-3/pop/Elements.js | 28 +- module-3/pop/HomePage.js | 80 +- module-3/pop/Layout.js | 19 +- module-3/test/pop/Element.spec.js | 25 +- module-3/test/pop/Elements.spec.js | 2 +- module-3/test/pop/HomePage.spec.js | 63 +- module-4/arrayEqual.js | 34 +- module-4/arraySorted.js | 20 +- module-4/arraySum.js | 24 +- module-4/longestString.js | 30 +- module-4/romanToDec.js | 19 +- module-4/test/arrayEqual.json | 14 + module-4/test/longestString.json | 4 + module-4/test/romanToDec.json | 34 + module-4/test/romanToDec.spec.js | 33 + module-4/toCamelCase.js | 23 +- module-5/features/EPAM.feature | 33 +- module-5/step_definitions/index.js | 90 +- plus/async/loadJson.js | 16 +- plus/async/regular.js | 2 +- plus/async/sleep.js | 13 +- plus/oop/circle.js | 15 +- plus/oop/delete.js | 9 +- plus/oop/properties.js | 7 +- plus/oop/reverse.js | 11 +- plus/series/catalanNumber.js | 14 +- plus/series/centralBinomialCoefficient.js | 12 +- plus/series/cullenNumber.js | 8 +- plus/series/factorial.js | 8 +- plus/series/fermatNumber.js | 8 +- plus/series/jacobsthalNumber.js | 9 +- plus/series/lucasNumber.js | 10 +- plus/series/narayana.js | 9 +- plus/series/padovan.js | 9 +- plus/series/pellNumber.js | 9 +- plus/series/perrinNumber.js | 11 +- plus/series/primeNumber.js | 19 +- plus/series/sylvesterSequence.js | 10 +- plus/series/tribonacciSequence.js | 10 +- plus/series/woodallNumber.js | 9 +- plus/test/series/primeNumber.spec.js | 6 + plus/test/series/sylversterSequence.spec.js | 5 +- yarn.lock | 2311 +++++++++---------- 51 files changed, 2217 insertions(+), 1232 deletions(-) create mode 100644 module-4/test/romanToDec.json create mode 100644 module-4/test/romanToDec.spec.js diff --git a/module-1/classification.js b/module-1/classification.js index 9f85b22..ed9d9d0 100644 --- a/module-1/classification.js +++ b/module-1/classification.js @@ -21,8 +21,15 @@ function grade(score) { * Also take into consideration the documentation of the function! */ // PLACE YOUR CODE BETWEEN THIS... - + if (score > 100 || score < 0 || typeof score !== 'number' ) gradeOfStudent = 0; + /*else if (score >= 90) gradeOfStudent = 5; + else if (score >= 80) gradeOfStudent = 4; + else if (score >= 70) gradeOfStudent = 3; + else if (score >= 60) gradeOfStudent = 2; + else gradeOfStudent = 1;*/ + else gradeOfStudent = Math.floor(Math.min(99, (Math.max(59, score)))/10 - 4); // ...AND THIS COMMENT LINE! return gradeOfStudent; } + module.exports = grade; \ No newline at end of file diff --git a/module-1/euclidean.js b/module-1/euclidean.js index 3d33d00..51f0214 100644 --- a/module-1/euclidean.js +++ b/module-1/euclidean.js @@ -16,8 +16,15 @@ function euclidean(a, b) { * Also take into consideration the documentation of the function! */ // PLACE YOUR CODE BETWEEN THIS... - - + if (a > 0 && b > 0 && typeof a === 'number' && typeof b === 'number') { + let remainder = a % b; + while (remainder > 0) { + a = b; + b = remainder; + remainder = a % b; + } + gcd = b; + } else gcd = 0; // ...AND THIS COMMENT LINE! return gcd; } diff --git a/module-1/fibonacci.js b/module-1/fibonacci.js index 14ec907..5950f9b 100644 --- a/module-1/fibonacci.js +++ b/module-1/fibonacci.js @@ -15,6 +15,20 @@ function fibonacci(n) { * Also take into consideration the documentation of the function! */ // PLACE YOUR CODE BETWEEN THIS... + if (n > 0 && typeof n === 'number') { + let a = 1; + let b = 1; + for (let i = 3; i <= n; i++) { + let c = a + b; + a = b; + b = c; + } + nThFibonacci = b; + + /*if (n < 2) nThFibonacci = n; // recursive solution + else nThFibonacci = fibonacci(n-1) + fibonacci(n-2);*/ + + } else nThFibonacci = 0; // ...AND THIS COMMENT LINE! return nThFibonacci; diff --git a/module-1/test/classification.spec.js b/module-1/test/classification.spec.js index 369b348..9b3665a 100644 --- a/module-1/test/classification.spec.js +++ b/module-1/test/classification.spec.js @@ -14,6 +14,11 @@ describe('Module 1 - Classification', () => { return expect(classification(101)).to.equal(0); }); + it("should return 0 if score is not a number", () => { + return (expect(classification('word')).to.equal(0) && + expect(classification(true)).to.equal(0)); + }); + const scores = [ [0, 1], [58, 1], [59, 1], [60, 2], [61, 2], [68, 2], [69, 2], diff --git a/module-1/test/euclidean.spec.js b/module-1/test/euclidean.spec.js index 6d6717b..5cd05dd 100644 --- a/module-1/test/euclidean.spec.js +++ b/module-1/test/euclidean.spec.js @@ -7,7 +7,13 @@ describe('Module 1 - Euclidean algorithm', () => { }); it("should return 0 if negative value passed", () => { - return expect(euclidean(-2, 2)).to.equal(0); + return (expect(euclidean(-2, 2)).to.equal(0) && + expect(euclidean(3, -2)).to.equal(0)); + }); + + it("should return 0 if passed value is not a number", () => { + return (expect(euclidean('word', 2)).to.equal(0) && + expect(euclidean(3, false)).to.equal(0)); }); const values = [ diff --git a/module-1/test/fibonacci.spec.js b/module-1/test/fibonacci.spec.js index ed331d2..28c47b7 100644 --- a/module-1/test/fibonacci.spec.js +++ b/module-1/test/fibonacci.spec.js @@ -10,6 +10,11 @@ describe('Module 1 - Fibonacci', () => { return expect(fibonacci(-2)).to.equal(0); }); + it("should return 0 if passed value is not a number", () => { + return (expect(fibonacci('-2')).to.equal(0) && + expect(fibonacci(false)).to.equal(0)); + }); + const values = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]; values.forEach((n, i) => { it(`should return ${n} for ${i + 1}`, () => { diff --git a/module-2/test/calc.spec.js b/module-2/test/calc.spec.js index c6fc7c7..a211b2e 100644 --- a/module-2/test/calc.spec.js +++ b/module-2/test/calc.spec.js @@ -16,6 +16,216 @@ describe.only('calc', () => { * .minus(3) * .times(6).v // 24 */ - // TODO: write test cases to test calculator - + describe("Calculator foundations", () => { + it ("Calculator function exists", () => { + expect(calc()).to.not.be.undefined; + }); + it ("First argument output method exists", () => { + expect(calc().v).to.not.be.undefined; + }); + it ("Outputs first argument", () => { + expect(calc(3).v).to.equal(3); + }); + it ("Handles absence of first argument", () => { + expect(calc().v).to.be.NaN; + }); + it ("Handles invalid first argument", () => { + expect(calc('LOL').v).to.be.NaN; + expect(calc(true).v).to.be.NaN; + }); + }); + describe("Addition", () => { + it("Addition method exists", () => { + expect(calc().add()).to.not.be.undefined; + }); + it ("Add two positive integers", () => { + let ints = [Math.round(Math.random() * 102 + 2), Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).add(ints[1]).v).to.equal(ints[0] + ints[1]); + }); + it ("Add two negative integers", () => { + let ints = [-Math.round(Math.random() * 102 + 2), -Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).add(ints[1]).v).to.equal(ints[0] + ints[1]); + }); + it ("Add a positive and a negative integers", () => { + let ints = [Math.round(Math.random() * 102 + 2), -Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).add(ints[1]).v).to.equal(ints[0] + ints[1]); + }); + it ("Add two decimal numbers", () => { + let decs = [Math.round((Math.random() * 102 + 2) *100) / 100, Math.round((Math.random() * 102 + 2) *100) / 100]; + expect(calc(decs[0]).add(decs[1]).v).to.equal(decs[0] + decs[1]); + }); + it ("Addition handles absence of second argument", () => { + let int = [Math.round(Math.random() * 102 + 2)]; + expect(calc(int).add().v).to.be.NaN; + }); + it ("Addition handles invalid second argument", () => { + let int = [Math.round(Math.random() * 102 + 2)]; + expect(calc(int).add('Ororo').v).to.be.NaN; + }); + }); + describe("Subtraction", () => { + it("Subtraction method exists", () => { + expect(calc().minus()).to.not.be.undefined; + }); + it ("Subtract using two positive integers", () => { + let ints = [Math.round(Math.random() * 102 + 2), Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).minus(ints[1]).v).to.equal(ints[0] - ints[1]); + }); + it ("Subtract using two negative integers", () => { + let ints = [-Math.round(Math.random() * 102 + 2), -Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).minus(ints[1]).v).to.equal(ints[0] - ints[1]); + }); + it ("Subtract using a positive and a negative integers", () => { + let ints = [Math.round(Math.random() * 102 + 2), -Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).minus(ints[1]).v).to.equal(ints[0] - ints[1]); + }); + it ("Subtract using two decimal numbers", () => { + let decs = [Math.round((Math.random() * 102 + 2) *100) / 100, Math.round((Math.random() * 102 + 2) *100) / 100]; + expect(calc(decs[0]).minus(decs[1]).v).to.equal(decs[0] - decs[1]); + }); + it ("Subtraction handles absence of second argument", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).minus().v).to.be.NaN; + }); + it ("Subtraction handles invalid second argument", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).minus('Nope').v).to.be.NaN; + expect(calc(int).minus(true).v).to.be.NaN; + }); + }); + describe("Multiplication", () => { + it("Division method exists", () => { + expect(calc().times()).to.not.be.undefined; + }); + it ("Multiply two positive integers", () => { + let ints = [Math.round(Math.random() * 102 + 2), Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).times(ints[1]).v).to.equal(ints[0] * ints[1]); + }); + it ("Multiply two negative integers", () => { + let ints = [-Math.round(Math.random() * 102 + 2), -Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).times(ints[1]).v).to.equal(ints[0] * ints[1]); + }); + it ("Multiply a positive and a negative integers", () => { + let ints = [Math.round(Math.random() * 102 + 2), -Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).times(ints[1]).v).to.equal(ints[0] * ints[1]); + }); + it ("Multiply two decimal numbers", () => { + let decs = [Math.round((Math.random() * 102 + 2) *100) / 100, Math.round((Math.random() * 102 + 2) *100) / 100]; + expect(calc(decs[0]).times(decs[1]).v).to.equal(decs[0] * decs[1]); + }); + it ("Multiply by one", () => { + let ints = [Math.round(Math.random() * 102 + 2), 1]; + expect(calc(ints[0]).times(ints[1]).v).to.equal(ints[0]); + }); + it ("Multiply by zero", () => { + let ints = [Math.round(Math.random() * 102 + 2), 0]; + expect(calc(ints[0]).times(ints[1]).v).to.equal(0); + }); + it ("Multiplication handles absence of second argument", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).times().v).to.be.NaN; + }); + it ("Multiplication handles invalid second argument", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).times('fg').v).to.be.NaN; + expect(calc(int).times(true).v).to.be.NaN; + }); + }); + describe("Division", () => { + it("Division method exists", () => { + expect(calc().divide()).to.not.be.undefined; + }); + it ("Division using two positive integers", () => { + let ints = [Math.round(Math.random() * 102 + 2), Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).divide(ints[1]).v).to.equal(ints[0] / ints[1]); + }); + it ("Division using two negative integers", () => { + let ints = [-Math.round(Math.random() * 102 + 2), -Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).divide(ints[1]).v).to.equal(ints[0] / ints[1]); + }); + it ("Division using a positive and a negative integers", () => { + let ints = [Math.round(Math.random() * 102 + 2), -Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).divide(ints[1]).v).to.equal(ints[0] / ints[1]); + }); + it ("Division using two decimal numbers", () => { + let decs = [Math.round((Math.random() * 102 + 2) *100) / 100, Math.round((Math.random() * 102 + 2) *100) / 100]; + expect(calc(decs[0]).divide(decs[1]).v).to.equal(decs[0] / decs[1]); + }); + it ("Division by itself", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).divide(int).v).to.equal(1); + }); + it ("Division handles absence of second argument", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).divide().v).to.be.NaN; + }); + it ("Division handles invalid second argument", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).divide('asdf').v).to.be.NaN; + expect(calc(int).divide(true).v).to.be.NaN; + }); + it ("Handles division by zero", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(() => calc(int).divide(0)).to.throw('Division by 0 is not possible!'); + }); + }); + describe("Square root", () => { + it("Root method exists", () => { + expect(calc().sqrt()).to.not.be.undefined; + }); + it ("Root of an integer", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).sqrt().v).to.equal(Math.sqrt(int)); + }); + it ("Root of a decimal number", () => { + let dec = Math.round((Math.random() * 102 + 2) *100) / 100; + expect(calc(dec).sqrt().v).to.equal(Math.sqrt(dec)); + }); + it ("Root of one", () => { + let dec = 1; + expect(calc(dec).sqrt().v).to.equal(1); + }); + it ("Root of zero", () => { + let dec = 0; + expect(calc(dec).sqrt().v).to.equal(0); + }); + it ("Root handles negative number as argument", () => { + let int = -Math.round(Math.random() * 102 + 2); + expect(() => calc(int).sqrt()).to.throw('Square root of negative value cannot be determined!'); + }); + }); + describe("Remainder", () => { + it("Remainder method exists", () => { + expect(calc().modulo()).to.not.be.undefined; + }); + it ("Remainder for two positive integers", () => { + let ints = [Math.round(Math.random() * 102 + 2), Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).modulo(ints[1]).v).to.equal(ints[0] % ints[1]); + }); + it ("Remainder for two negative integers", () => { + let ints = [-Math.round(Math.random() * 102 + 2), -Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0]).modulo(ints[1]).v).to.equal(ints[0] % ints[1]); + }); + it ("Remainder for two equal numbers", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).modulo(int).v).to.equal(0); + }); + it ("No remainder (complete division)", () => { + let ints = [Math.round(Math.random() * 102 + 2), Math.round(Math.random() * 102 + 2)]; + expect(calc(ints[0] * ints[1]).modulo(ints[0]).v).to.equal(0); + }); + it ("Remainder handles division by zero", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).modulo(0).v).to.be.NaN; + }); + it ("Remainder handles absence of second argument", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).modulo().v).to.be.NaN; + }); + it ("Remainder handles invalid second argument", () => { + let int = Math.round(Math.random() * 102 + 2); + expect(calc(int).modulo('qwe12').v).to.be.NaN; + expect(calc(int).modulo(true).v).to.be.NaN; + }); + }); }); \ No newline at end of file diff --git a/module-3/pop/Element.js b/module-3/pop/Element.js index f448181..6893dab 100644 --- a/module-3/pop/Element.js +++ b/module-3/pop/Element.js @@ -1,18 +1,68 @@ /** * Create Element class, which represents an element of * the application, and - * + * * 1. It has a protractor locator (.locator), * e.g. by.css("h1.title") * 2. It has a name (.name), e.g. "Document Title" - * 3. It can have a parent Element, + * 3. It can have a parent Element, * which is the context of the element (.parent) * 4. It can have children Elements (.children) * 5. It has a method to retrieve the protractor element * by the locator (.get([name])) in it's context * - if it gets a name as parameter, it tries to find * in it's children (recursively) the Element with - * the given name or throws an Erorr if it cannot + * the given name or throws an Error if it cannot * find the element */ -module.exports = class Element {} \ No newline at end of file +const ElementFinder = require('../test/mock/ElementFinder'); + +class Element { + constructor(name, locator) { + this.locator = locator; + this.name = name; + this.parent = null; + this.children = {}; + } + + setParent(parent) { + this.parent = parent; + } + + addChildren(child) { + if (this.children.hasOwnProperty(child.name)) { + throw new Error('Child with \'' + child.name + '\' name already exists!') + } else { + this.children[child.name] = child; + } + } + + get(name) { + let result = []; + + function getThat(where) { + if (name === undefined) { + result.push(new ElementFinder(where.locator)); + } else if (where.children !== null) { + if (Object.keys(where.children).length) { + if (where.children.hasOwnProperty(name)) { + result.push(new ElementFinder(where.children[name].locator)); + } else { + for (let key in where.children) { + getThat(where.children[key]); + } + } + } + } + } + + getThat(this); + if (result.length === 0) { + throw new Error(`No child with ${name} name exists!`); + } else { + return result[0]; + } + } +} + +module.exports = Element; \ No newline at end of file diff --git a/module-3/pop/Elements.js b/module-3/pop/Elements.js index 726d269..2c584aa 100644 --- a/module-3/pop/Elements.js +++ b/module-3/pop/Elements.js @@ -1,11 +1,11 @@ /** * Create Elements class, which represents a collection of * elements of the application, and - * + * * 1. It has a protractor locator (.locator), * e.g. by.css("h1.title") * 2. It has a name (.name), e.g. "Document Title" - * 3. It can have a parent Element, + * 3. It can have a parent Element, * which is the context of the element (.parent) * 4. It cannot have children elements * 5. It has a method to retrieve all protractor elements @@ -13,4 +13,26 @@ * 6. It has a method to retrieve one element from the collection * by the locator (.get(n)) in it's context */ -module.exports = class Elements {} \ No newline at end of file +const ElementArrayFinder = require('../test/mock/ElementArrayFinder'); + +const Element = require('./Element'); +module.exports = class Elements extends Element { + constructor(name, locator) { + super(name, locator); + this.children = null; + this.parent = null; + } + + addChildren() { + throw new Error("Elements collection cannot have kids, bro!"); + } + + all() { + let element = ElementArrayFinder.all(this.locator); + return element; + } + get(name) { + let element = new ElementArrayFinder(this.locator); + return element.get(name); + } +} \ No newline at end of file diff --git a/module-3/pop/HomePage.js b/module-3/pop/HomePage.js index 02d897c..8b78812 100644 --- a/module-3/pop/HomePage.js +++ b/module-3/pop/HomePage.js @@ -7,16 +7,80 @@ const Layout = require('./Layout'); const Element = require('./Element'); const Elements = require('./Elements'); -module.exports = class HomePage extends Layout { +class HomePage extends Layout { constructor() { - super('/'); + super('Home', 'http://epam.com', {css: 'body'}); - this.header = new Element('Header', by.css('header')); - this.header.addChildren(new Element("Logo", by.css('.header__logo'))); - this.menuItems = new Elements("Menu Items", by.css('.top-navigation__item-link')); + this.header = new Element('Header', {css: 'header'}); + this.header.addChildren(new Element("Logo", {css: '.header__logo'})); + this.menuItems = new Elements("Menu Items", {css: '.top-navigation__item-link'}); + this.header.addChildren(this.menuItems); + this.headerControls = new Element("Header Controls", {css: '.header__controls'}); + this.header.addChildren(this.headerControls); + + this.main = new Element('Main', {css: '#main'}); + this.main.addChildren(new Element("Background Video Section", {css: '.background-video'})); + this.main.addChildren(new Elements("Sliders", {css: '.owl-stage'})); + this.main.addChildren(new Elements("Rollover Tiles", {css: '.rollover-tiles__link'})); + this.featured = new Element("Featured Content", {css: '.featured-content-grid'}); + this.featured.addChildren(new Elements("Featured Texts", {css: '.featured-content-card__content'})); + this.featured.addChildren(new Elements("Featured Images", {css: '.featured-content-card__image'})); + this.main.addChildren(this.featured); + this.main.addChildren(new Element("Our Results Section", {css: '.colctrl--tablet'})); + this.main.addChildren(new Element("Join Our Team Image", {css: '.section--padding-extra-large'})); + this.main.addChildren(new Element("Join Our Team Text", {css: '.section--padding-large'})); + this.main.addChildren(new Element("Contact Section", {css: '#main > div.content-container.parsys > div:nth-child(8) > section > div.section__wrapper.section--padding-normal'})); + this.main.addChildren(new Element("Our Offices Title", {css: '#main > div.content-container.parsys > div:nth-child(10) > section > div.section__wrapper.section--padding-normal > div.title > h2'})); + + this.footer = new Element('Footer', {css: '.footer'}); + this.footer.addChildren(new Element('Footer Brand List', {css: '.footer__brands-list-wrapper'})); + this.footerContainer = new Element('Footer Container', {css: '.footer__container'}); + this.footerContainer.addChildren(new Elements('Footer Links', {css: '.footer__links-container'})); + this.footerContainer.addChildren(new Elements('Footer Socials', {css: '.footer__social-item'})); + this.footerContainer.addChildren(new Element('Footer Copyright', {css: '.footer__copyright'})); + this.footer.addChildren(this.footerContainer); + } + + getLogo() { + return this.header.get('Logo'); + } + + getMenuItems() { + return this.header.get('Menu Items'); + } + + getHeaderControls() { + return this.header.get('Header Controls'); + } + + getMainChildrenCount() { + return Object.keys(this.main.children).length; + } + + getFeaturedTexts() { + return this.main.get('Featured Texts'); + } + + getFeaturedImages() { + return this.main.get('Featured Images'); } - get logo() { - return this.get('Logo'); + getFooterContainerBlocksCount() { + return Object.keys(this.footerContainer.children).length; } -} \ No newline at end of file + + getFooterLinks() { + return this.footer.get('Footer Links'); + } + + getFooterSocials() { + return this.footer.get('Footer Socials'); + } + + getFooterCopyright() { + return this.footer.get('Footer Copyright'); + } + +} + +module.exports = HomePage; \ No newline at end of file diff --git a/module-3/pop/Layout.js b/module-3/pop/Layout.js index 788d7a1..b5901ca 100644 --- a/module-3/pop/Layout.js +++ b/module-3/pop/Layout.js @@ -1,7 +1,7 @@ /** * Create Layout class, which represents a page of * the application, and - * + * * 1. It has a protractor locator (.locator), * e.g. by.css("body") * 2. It has a URL (.url), e.g. "/home" or "https://epam.com" @@ -14,4 +14,19 @@ * 7. It has a method to load the page, i.e. Navigates to * the URL of it (.load()) */ -module.exports = class Layout {} \ No newline at end of file +const Element = require('./Element.js'); + +module.exports = class Layout extends Element { + constructor(name, url, locator) { + super(name, locator); + this.url = url; + } + + setParent(parent) { + throw new Error('Parent can\'t be set for layout!'); + } + + load() { + return this.url; + } +} \ No newline at end of file diff --git a/module-3/test/pop/Element.spec.js b/module-3/test/pop/Element.spec.js index f4856b0..6b1821b 100644 --- a/module-3/test/pop/Element.spec.js +++ b/module-3/test/pop/Element.spec.js @@ -113,12 +113,35 @@ describe('Element Class', () => { expect(pElement.locator().css).to.equal('h1'); }); + it('deeply nested children element can be retrieved by name', () => { + const element = new Element('Body', {css: 'body'}); + const header = new Element('Header', {css: 'head'}); + const footer = new Element('Footer', {css: 'foot'}); + element.addChildren(header); + element.addChildren(footer); + const headerText = new Element('HeaderText', {css: 'head div'}); + header.addChildren(headerText); + const headerTextTitle = new Element('HeaderTextTitle', {css: 'head div h2'}); + headerText.addChildren(headerTextTitle); + const headerImage = new Element('HeaderImage', {css: 'head img'}); + header.addChildren(headerImage); + const headerTextParagraph = new Element('HeaderTextParagraph', {css: 'head div p'}); + headerText.addChildren(headerTextParagraph); + const lastChild = new Element('SubTitle', {css: 'h3'}); + headerTextParagraph.addChildren(lastChild); + + const pElement = element.get('SubTitle'); + + expect(pElement).to.be.instanceOf(ElementFinder); + expect(pElement.locator().css).to.equal('h3'); + }); + it('should throw error if child element is not found', () => { const element = new Element('Body', {css: 'body'}); const child = new Element('Title', {css: 'h1'}); element.addChildren(child); - expect(() => element.get('Footer')).to.throw(); + expect(() => element.get('Footer')).to.throw(`No child with Footer name exists!`); }); }); }); \ No newline at end of file diff --git a/module-3/test/pop/Elements.spec.js b/module-3/test/pop/Elements.spec.js index fb53b6f..a1d67f4 100644 --- a/module-3/test/pop/Elements.spec.js +++ b/module-3/test/pop/Elements.spec.js @@ -62,7 +62,7 @@ describe('Elements Class', () => { const element = new Elements('Body', {css: 'body'}); const child = new Elements('Title', {css: 'h1'}); - expect(() => element.addChildren(child)).to.throw(); + expect(() => element.addChildren(child)).to.throw('Elements collection cannot have kids, bro!'); }); }); diff --git a/module-3/test/pop/HomePage.spec.js b/module-3/test/pop/HomePage.spec.js index 307b783..ad8d245 100644 --- a/module-3/test/pop/HomePage.spec.js +++ b/module-3/test/pop/HomePage.spec.js @@ -1,3 +1,62 @@ -describe('HomePage Class', () => { - // TODO: write tests +const HomePage = require('../../pop/HomePage'); +const ElementFinder = require("../mock/ElementFinder"); +const ElementArrayFinder = require("../mock/ElementArrayFinder"); +const Element = require("../../pop/Element"); +const expect = require('chai').expect; + + +describe('HomePage Tests', () => { + beforeEach(() => { + global.homePage = new HomePage(); + homePage.load(); + }); + + afterEach(() => { + delete global.homePage; + }); + + it('Page loads', () => { + expect(homePage.load()).to.eql('http://epam.com'); + }); + + it('Logo in the header', () => { + expect(homePage.getLogo()).to.be.instanceOf(ElementFinder); + }); + + it('Menu in header', () => { + expect(homePage.getMenuItems()).to.be.instanceOf(ElementFinder); + }); + + it('Controls in header', () => { + expect(homePage.getHeaderControls()).to.be.instanceOf(ElementFinder); + }); + + it('Main contains 9 sections', () => { + expect(homePage.getMainChildrenCount()).to.eql(9); + }); + + it('Text blocks in Featured section', () => { + expect(homePage.getFeaturedTexts()).to.be.instanceOf(ElementFinder); + }); + + it('Image blocks in Featured section', () => { + expect(homePage.getFeaturedImages()).to.be.instanceOf(ElementFinder); + }); + + it('Footer Container includes 3 blocks', () => { + expect(homePage.getFooterContainerBlocksCount()).to.eql(3); + }); + + it('Links block in Footer', () => { + expect(homePage.getFooterLinks()).to.be.instanceOf(ElementFinder); + }); + + it('Socials block in Footer', () => { + expect(homePage.getFooterSocials()).to.be.instanceOf(ElementFinder); + }); + + it('Copyright in Footer', () => { + expect(homePage.getFooterCopyright()).to.be.instanceOf(ElementFinder); + }); + }); \ No newline at end of file diff --git a/module-4/arrayEqual.js b/module-4/arrayEqual.js index 09824ac..621d275 100644 --- a/module-4/arrayEqual.js +++ b/module-4/arrayEqual.js @@ -2,12 +2,40 @@ * It determines, whether the given two arrays * are equal, by considering the number of elements, * those order and value, in all levels. - * + * * It prints out a message in case of any * difference in any array, using console.warn! - * + * * @param {Array} first The first array * @param {Array} second The second array * @returns {boolean} true if the two arrays are equal, * false otherwise - */ \ No newline at end of file + */ +function arrayEqual(first, second) { + if (!Array.isArray(first) || !Array.isArray(second)) { + console.warn('Non-array argument(s) found!'); + return false; + } + if (first.length !== second.length) { + console.warn(`Different length of arrays/sub-arrays: ${first.length} vs ${second.length}`); + return false; + } + return first.every((elem, index) => { + if (Array.isArray(first[index]) && Array.isArray(second[index])) { + return arrayEqual(first[index], second[index]); + } else if ((Array.isArray(first[index]) && !Array.isArray(second[index])) + || (!Array.isArray(first[index]) && Array.isArray(second[index]))) { + console.warn(`Mismatch in nesting structure: '${first[index]}' does not equal '${second[index]}'`); + return false; + } + if (elem === second[index]) { + return true; + } else { + console.warn(`Mismatch: '${first[index]}' does not equal '${second[index]}'`); + return false; + } + }); + +} + +module.exports = arrayEqual; \ No newline at end of file diff --git a/module-4/arraySorted.js b/module-4/arraySorted.js index 7e4ebae..b61c70a 100644 --- a/module-4/arraySorted.js +++ b/module-4/arraySorted.js @@ -1,14 +1,28 @@ /** * It determines, whether the given array is sorted in * alphabetically ascending order. - * + * * It ignores * - case of the character * - given special characters (nothing by default) * - whitespaces - * + * * @param {string[]} items the subject items * @param {string} ignore characters to ignore * @returns {boolean} true if the array is properly sorted, * false otherwise - */ \ No newline at end of file + */ +function arraySorted(items, ignore = '') { + if (!Array.isArray(items)) return false; + let cleaned = items.map((elem) => elem.toString().toLowerCase()) + .map((elem) => { + return elem.split('') + .filter((char) => !(ignore + ' \'\"\&\n\t\\\r\b\f\v\0').includes(char)) + .join(''); + }); + let sorted = cleaned.slice().sort((a, b) => a.localeCompare(b)); + if (sorted.length !== cleaned.length) return false; + return sorted.every((elem, index) => elem === cleaned[index]); +} + +module.exports = arraySorted; \ No newline at end of file diff --git a/module-4/arraySum.js b/module-4/arraySum.js index 9db243e..2f55952 100644 --- a/module-4/arraySum.js +++ b/module-4/arraySum.js @@ -1,8 +1,28 @@ /** - * It recieves an array of strings, integers and + * It receives an array of strings, integers and * array like itself. * Return the summary of all integers in it on * any level. * * @param {Array} elements * @returns {number} summary of all integers or 0 in other cases - */ \ No newline at end of file + */ +function arraySum(elements) { + if (!Array.isArray(elements) || elements.length < 2) return 0; + let resultArray = [0]; + + function getIntegers(arr) { + resultArray = resultArray.concat(arr.filter((elem) => { + return (typeof elem === 'number' && elem % 1 === 0); + })); + for (const elem of arr) { + if (Array.isArray(elem)) { + getIntegers(elem); + } + } + } + + getIntegers(elements); + return resultArray.reduce((accum, elem) => accum + elem, 0); +} + +module.exports = arraySum; \ No newline at end of file diff --git a/module-4/longestString.js b/module-4/longestString.js index 731dd17..bfb453a 100644 --- a/module-4/longestString.js +++ b/module-4/longestString.js @@ -1,8 +1,34 @@ /** - * It recieves an array of strings and returns + * It receives an array of strings and returns * the first longest string from it. * Also in the alphabetically first in case of more. * * @param {Array.} strings * @returns {string} longest string or empty string in other cases - */ \ No newline at end of file + */ +function longestString(strings) { + if (!Array.isArray(strings) || strings.length < 2) return ''; + let resultArray = []; + + function getStrings(arr) { + resultArray = resultArray.concat(arr.filter((string) => { + return typeof string === 'string'; + })); + for (const elem of arr) { + if (Array.isArray(elem)) { + getStrings(elem); + } + } + } + + getStrings(strings); + if (resultArray.length) { + return resultArray.sort((a, b) => { + if (b.length > a.length) return 1; + if (b.length < a.length) return -1; + if (b.length === a.length) return (a.localeCompare(b)); + })[0]; + } else return ''; +} + +module.exports = longestString; \ No newline at end of file diff --git a/module-4/romanToDec.js b/module-4/romanToDec.js index e02d0d1..11d295a 100644 --- a/module-4/romanToDec.js +++ b/module-4/romanToDec.js @@ -1,9 +1,24 @@ /** - * It recieves a Roman number (as string) + * It receives a Roman number (as string) * and converts it to it's Arabic (decimal) equivalent. * * @see https://en.wikipedia.org/wiki/Roman_numerals * @param {string} roman * @returns {number} the Arabic (decimal) equivalent of the parameter * @throws Error in case of invalid input - */ \ No newline at end of file + */ +function romanToDec(roman) { + let validRomans = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}; + let regexp = /^(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$/; + let result = 0; + if (typeof roman !== 'string') throw new Error('Input is not a string'); + if (!regexp.test(roman) || !roman) throw new Error('Input is not a valid Roman numeral'); + for (const char of roman) { + if (validRomans[roman[roman.indexOf(char) + 1]] > validRomans[char]) { + result -= validRomans[char]; + } else result += validRomans[char]; + } + return result; +} + +module.exports = romanToDec; \ No newline at end of file diff --git a/module-4/test/arrayEqual.json b/module-4/test/arrayEqual.json index f567b58..96e047a 100644 --- a/module-4/test/arrayEqual.json +++ b/module-4/test/arrayEqual.json @@ -47,5 +47,19 @@ [1, 2, [[[[[4]]]]]] ], "result": false + }, + { + "arguments": [ + [1, "2", [["abc", false, [[[4]], 5]]]], + [1, "2", [["abc", false, [[[4]], 5]]]] + ], + "result": true + }, + { + "arguments": [ + [1, "2", [["abc", false, [[[4]], 5]]]], + [1, "2", [[["abc"], false, [[[4]]]], 5]] + ], + "result": false } ] \ No newline at end of file diff --git a/module-4/test/longestString.json b/module-4/test/longestString.json index 3e64f86..020e0f8 100644 --- a/module-4/test/longestString.json +++ b/module-4/test/longestString.json @@ -22,5 +22,9 @@ { "arguments": [[true, "hello", "world"]], "result": "hello" + }, + { + "arguments": [["sda", 45, [false, "sdfhrer", ["asds", ["ssssssssssssss", "fg"],8, "ssssss"]], "sdsd", ["sds", 6, "e"]]], + "result": "ssssssssssssss" } ] \ No newline at end of file diff --git a/module-4/test/romanToDec.json b/module-4/test/romanToDec.json new file mode 100644 index 0000000..4f0dd71 --- /dev/null +++ b/module-4/test/romanToDec.json @@ -0,0 +1,34 @@ +[ + { + "arguments": "X", + "result": 10 + }, + { + "arguments": "I", + "result": 1 + }, + { + "arguments": "V", + "result": 5 + }, + { + "arguments": "III", + "result": 3 + }, + { + "arguments": "IX", + "result": 9 + }, + { + "arguments": "CIX", + "result": 109 + }, + { + "arguments": "MMCXXXIV", + "result": 2134 + }, + { + "arguments": "MCMLXXXIV", + "result": 1984 + } +] \ No newline at end of file diff --git a/module-4/test/romanToDec.spec.js b/module-4/test/romanToDec.spec.js new file mode 100644 index 0000000..22547fb --- /dev/null +++ b/module-4/test/romanToDec.spec.js @@ -0,0 +1,33 @@ +const romanToDec = require('../romanToDec'); +const expect = require('chai').expect; +const testData = require('./romanToDec.json'); + +describe('Module 4 - romanToDec', () => { + it('should be a function', () => { + expect(romanToDec).to.be.instanceOf(Function); + }); + + it('should throw an error if input is not a string', () => { + expect(() => romanToDec(123)).to.throw(); + }); + + it('should throw an error if input is an empty string', () => { + expect(() => romanToDec('')).to.throw(); + }); + + it('should throw an error if input is not a valid Roman numeral', () => { + expect(() => romanToDec('MVCI')).to.throw(); + expect(() => romanToDec('ICVXLIVL')).to.throw(); + expect(() => romanToDec('XXL')).to.throw(); + }); + + it('should throw an error if invalid characters in input', () => { + expect(() => romanToDec('CVZ')).to.throw(); + }); + + testData.forEach(data => { + it('should return proper value for ' + JSON.stringify(data.arguments), () => { + expect(romanToDec(data.arguments)).to.equal(data.result); + }); + }); +}); \ No newline at end of file diff --git a/module-4/toCamelCase.js b/module-4/toCamelCase.js index 1a8ec37..4add322 100644 --- a/module-4/toCamelCase.js +++ b/module-4/toCamelCase.js @@ -1,7 +1,28 @@ +const symbols = 'abcdefghijklmnopqrstuvwxyz0123456789 '; /** * It returns the camel-case version of string. * E.g.: simple lowercase string => SimpleLowercaseString * * @param {string} toConvert * @returns {string} camel-case string or empty string in other cases - */ \ No newline at end of file + */ +let toCamelCase = function (toConvert) { + if (typeof toConvert !== 'string') return ''; + return toConvert.split('') + .map((char) => { + return symbols.includes(char.toLowerCase()) ? char : ' '; + }) + .join('') + .split(' ') + .filter(Boolean) + .map((word, index) => { + if (!index) { + return word.toLowerCase(); + } else { + return word[0].toUpperCase() + word.slice(1).toLowerCase(); + } + }) + .join(''); +} + +module.exports = toCamelCase; \ No newline at end of file diff --git a/module-5/features/EPAM.feature b/module-5/features/EPAM.feature index 1759542..2685b90 100644 --- a/module-5/features/EPAM.feature +++ b/module-5/features/EPAM.feature @@ -3,5 +3,34 @@ Feature: EPAM site I want to write test for EPAM career site So that I can practice Cucumber - Scenario: Search for a job - # TODO \ No newline at end of file + Scenario Outline: Search for a job + # open site + Given the EPAM Careers page is opened + # test URL + Then the EPAM Careers page should be opened + And the Search form should be visible + + When the Location filter box is clicked + And the Country "" is selected + And the City "" is selected + Then the selected Location should be "" + + When the Department filter box is clicked + And the Department "" is selected + Then the selected Department should be "" + + When the Search button is clicked + Then the PositionName "" is visible + And the Department of the position should be "" + And the Location of the position should be ", " + And an Apply button is visible + And an Apply button is enabled + + When an Apply button is clicked + Then the Job description contains "" + And the Job description contains "" + + Examples: + | country | city | department | positionName | + | Hungary | Debrecen | Software Test Engineering | Test Automation Engineer | + | Belarus | Minsk | Software Architecture | Test Automation Architect | \ No newline at end of file diff --git a/module-5/step_definitions/index.js b/module-5/step_definitions/index.js index be8914b..30d113f 100644 --- a/module-5/step_definitions/index.js +++ b/module-5/step_definitions/index.js @@ -1,3 +1,91 @@ const { Given, When, Then } = require("cucumber"); -// TODO \ No newline at end of file +Given('the EPAM Careers page is opened', function () { + // test code + return 'pending'; +}); + +Then('the EPAM Careers page should be opened', function () { + // test code + return 'pending'; +}); + +Then(/the Search form should be (visible|hidden)/, function (visibility) { + // test code + return 'pending'; +}); + +When('the Location filter box is clicked', function () { + // test code + return 'pending'; +}); + +When(/the Country "(.+)" is selected/, function (country) { + // test code + return 'pending'; +}); + +When(/the City "(.+)" is selected/, function (city) { + // test code + return 'pending'; +}); + +Then(/the selected Location should be "(.+)"/, function (city) { + // test code + return 'pending'; +}); + +When('the Department filter box is clicked', function () { + // test code + return 'pending'; +}); + +When(/the Department "(.+)" is selected/, function (department) { + // test code + return 'pending'; +}); + +Then(/the selected Department should be "(.+)"/, function (department) { + // test code + return 'pending'; +}); + +When('the Search button is clicked', function () { + // test code + return 'pending'; +}); + +Then(/the PositionName "(.+)" is visible/, function (positionName) { + // test code + return 'pending'; +}); + +Then(/the Department of the position should be "(.+)"/, function (department) { + // test code + return 'pending'; +}); + +Then(/the Location of the position should be "(.+), (.+)"/, function (city, country) { + // test code + return 'pending'; +}); + +Then('an Apply button is visible', function () { + // test code + return 'pending'; +}); + +Then('an Apply button is enabled', function () { + // test code + return 'pending'; +}); + +When('an Apply button is clicked', function () { + // test code + return 'pending'; +}); + +Then(/the Job description contains "(.+)"/, function (cityOrPosition) { + // test code + return 'pending'; +}); \ No newline at end of file diff --git a/plus/async/loadJson.js b/plus/async/loadJson.js index 3d67a15..44d5564 100644 --- a/plus/async/loadJson.js +++ b/plus/async/loadJson.js @@ -1,13 +1,11 @@ /* * Rewrite the following code to use async/await */ -module.exports = function loadJson(url) { - return fetch(url) - .then(response => { - if (response.status == 200) { - return response.json(); - } else { - throw new Error(response.status); - } - }); +module.exports = async function loadJson(url) { + let response = await fetch(url); + if (response.status === 200) { + return await response.json(); + } else { + throw new Error(response.status); + } }; \ No newline at end of file diff --git a/plus/async/regular.js b/plus/async/regular.js index 5a390ed..dcaffdf 100644 --- a/plus/async/regular.js +++ b/plus/async/regular.js @@ -9,5 +9,5 @@ async function wait() { * You can't use "await"! */ module.exports = function f() { - // ...what to write here? + return wait().then(); } \ No newline at end of file diff --git a/plus/async/sleep.js b/plus/async/sleep.js index 7702eb4..f83d241 100644 --- a/plus/async/sleep.js +++ b/plus/async/sleep.js @@ -4,4 +4,15 @@ * @param {number} sec the seconds to wait * @returns {Promise} the promise which resolves when wait if over * or rejects if parameter is not correct - */ \ No newline at end of file + */ +module.exports = function sleep(sec) { + return new Promise ((resolve, reject) => { + if (typeof sec === 'number') { + if (sec > 10) sec = 10; + setTimeout(() => { + resolve('All\'s done :)') + }, sec * 1000); + } else reject('That\'s not how you deal with me!'); + }); +} + diff --git a/plus/oop/circle.js b/plus/oop/circle.js index c24931c..9379daf 100644 --- a/plus/oop/circle.js +++ b/plus/oop/circle.js @@ -5,4 +5,17 @@ * @property {number} r the radius of the circle * @function area return the area of the circle * @function perimeter return the perimeter of the circle - */ \ No newline at end of file + */ +module.exports = class Circle { + constructor(radius) { + if (typeof radius === 'number' && radius >= 0) { + this.r = radius; + } else throw new Error('Invalid radius!'); + } + getPerimeter() { + return this.r *2 * Math.PI; + } + getArea() { + return this.r ** 2 * Math.PI; + } +} \ No newline at end of file diff --git a/plus/oop/delete.js b/plus/oop/delete.js index f69e6db..9041278 100644 --- a/plus/oop/delete.js +++ b/plus/oop/delete.js @@ -6,4 +6,11 @@ * @param {object} o the object * @param {string} key the name of the property to delete * @returns {object} the new object without the given property - */ \ No newline at end of file + */ +module.exports = function del(o, key) { + if (Object.prototype.toString.call(o) === '[object Object]') { + let newO = Object.assign({}, o); + delete newO[key]; + return newO; + } else throw new Error('Argument is not an object!'); +} \ No newline at end of file diff --git a/plus/oop/properties.js b/plus/oop/properties.js index 0d29195..068996b 100644 --- a/plus/oop/properties.js +++ b/plus/oop/properties.js @@ -4,4 +4,9 @@ * @param {object} o the object * @returns {string[]} the list of the properties of the object * or empty array if it is not an object - */ \ No newline at end of file + */ +module.exports = function props(o) { + if (Object.prototype.toString.call(o) === '[object Object]') { + return Object.keys(o); + } return []; +} \ No newline at end of file diff --git a/plus/oop/reverse.js b/plus/oop/reverse.js index 74cb16c..8d5b3cc 100644 --- a/plus/oop/reverse.js +++ b/plus/oop/reverse.js @@ -4,4 +4,13 @@ * * @param {object} o the object * @returns {object} the new object - */ \ No newline at end of file + */ +module.exports = function reverseObject(o) { + if (Object.prototype.toString.call(o) === '[object Object]') { + let newO = {}; + for (let key in o) { + newO[o[key]] = key; + } + return newO; + } else throw new Error('Argument is not an object!'); +} \ No newline at end of file diff --git a/plus/series/catalanNumber.js b/plus/series/catalanNumber.js index 5304233..874d23c 100644 --- a/plus/series/catalanNumber.js +++ b/plus/series/catalanNumber.js @@ -2,7 +2,17 @@ * Your task is to calculate the nth value of the * Catalan number sequence. * https://en.wikipedia.org/wiki/Catalan_number - * + * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function catalan(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + return factorial(2 * n) / (factorial(n + 1) * factorial(n)); + + function factorial(n) { + return (n === 1 || n === 0) ? 1 : n * factorial(n - 1); + } +} \ No newline at end of file diff --git a/plus/series/centralBinomialCoefficient.js b/plus/series/centralBinomialCoefficient.js index 9ff05c2..aecb57a 100644 --- a/plus/series/centralBinomialCoefficient.js +++ b/plus/series/centralBinomialCoefficient.js @@ -5,4 +5,14 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function centralBinomial(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + return factorial(2 * n) / (factorial(n) ** 2); + + function factorial(n) { + return (n === 1 || n === 0) ? 1 : n * factorial(n - 1); + } +} \ No newline at end of file diff --git a/plus/series/cullenNumber.js b/plus/series/cullenNumber.js index 324a548..46835f6 100644 --- a/plus/series/cullenNumber.js +++ b/plus/series/cullenNumber.js @@ -5,4 +5,10 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function cullen(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + return n * (2 ** n) + 1; +} \ No newline at end of file diff --git a/plus/series/factorial.js b/plus/series/factorial.js index 2805a88..a4fcb62 100644 --- a/plus/series/factorial.js +++ b/plus/series/factorial.js @@ -5,4 +5,10 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function factorial(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + return (n === 1 || n === 0) ? 1 : n * factorial(n - 1); +} \ No newline at end of file diff --git a/plus/series/fermatNumber.js b/plus/series/fermatNumber.js index 49ef911..501a1bc 100644 --- a/plus/series/fermatNumber.js +++ b/plus/series/fermatNumber.js @@ -5,4 +5,10 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function fermat(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + return 2 ** 2 ** n + 1; +} \ No newline at end of file diff --git a/plus/series/jacobsthalNumber.js b/plus/series/jacobsthalNumber.js index 9c09ea0..c69a9ed 100644 --- a/plus/series/jacobsthalNumber.js +++ b/plus/series/jacobsthalNumber.js @@ -5,4 +5,11 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function jacobsthal(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + if (n === 0 || n === 1) return n; + return jacobsthal(n - 1) + 2 * jacobsthal(n - 2); +} \ No newline at end of file diff --git a/plus/series/lucasNumber.js b/plus/series/lucasNumber.js index ca14645..0a88d30 100644 --- a/plus/series/lucasNumber.js +++ b/plus/series/lucasNumber.js @@ -5,4 +5,12 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function lucas(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + if (n === 0) return 2; + if (n === 1) return 1; + return lucas(n - 1) + lucas(n - 2); +} \ No newline at end of file diff --git a/plus/series/narayana.js b/plus/series/narayana.js index 31a1de5..b94f4f1 100644 --- a/plus/series/narayana.js +++ b/plus/series/narayana.js @@ -5,4 +5,11 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function narayana(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + if (n === 0 || n === 1 || n === 2) return 1; + return narayana(n - 1) + narayana(n - 3); +} \ No newline at end of file diff --git a/plus/series/padovan.js b/plus/series/padovan.js index 9aeb511..c1d9f51 100644 --- a/plus/series/padovan.js +++ b/plus/series/padovan.js @@ -5,4 +5,11 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function padovan(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + if (n === 0 || n === 1 || n === 2) return 1; + return padovan(n - 2) + padovan(n - 3); +} \ No newline at end of file diff --git a/plus/series/pellNumber.js b/plus/series/pellNumber.js index 5f3297f..e54e57b 100644 --- a/plus/series/pellNumber.js +++ b/plus/series/pellNumber.js @@ -5,4 +5,11 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function pell(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + if (n === 0 || n === 1) return n; + return 2 * pell(n - 1) + pell(n - 2); +} \ No newline at end of file diff --git a/plus/series/perrinNumber.js b/plus/series/perrinNumber.js index e97c01e..ed6b4c0 100644 --- a/plus/series/perrinNumber.js +++ b/plus/series/perrinNumber.js @@ -5,4 +5,13 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function perrin(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + if (n === 0) return 3; + if (n === 1) return 0; + if (n === 2) return 2; + return perrin(n - 2) + perrin(n - 3); +} \ No newline at end of file diff --git a/plus/series/primeNumber.js b/plus/series/primeNumber.js index 7db5901..f2337a2 100644 --- a/plus/series/primeNumber.js +++ b/plus/series/primeNumber.js @@ -1,8 +1,25 @@ /** * Your task is to calculate the nth value of the * Prime number sequence. + * Sequence starts from n = 0, not n = 1! * https://en.wikipedia.org/wiki/Prime_number * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function prime(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + let primes = []; + let num = 2; + while (primes.length <= n) { + let isPrime = true; + for (let i = 2; i < num; i++) { + if (num % i === 0) isPrime = false; + } + if (isPrime) primes.push(num); + num++; + } + return primes[n]; +} \ No newline at end of file diff --git a/plus/series/sylvesterSequence.js b/plus/series/sylvesterSequence.js index 64843d9..4f645d9 100644 --- a/plus/series/sylvesterSequence.js +++ b/plus/series/sylvesterSequence.js @@ -6,4 +6,12 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function sylvester(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + if (n === 0) return 2; + return (sylvester(n - 1) + * (sylvester(n - 1) - 1) + 1) % (10 ** 9 + 7); +} \ No newline at end of file diff --git a/plus/series/tribonacciSequence.js b/plus/series/tribonacciSequence.js index d2049bd..15f88b3 100644 --- a/plus/series/tribonacciSequence.js +++ b/plus/series/tribonacciSequence.js @@ -5,4 +5,12 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function tribonacci(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + if (n === 0 || n === 1) return 0; + if (n === 2) return 1; + return tribonacci(n - 1) + tribonacci(n - 2) + tribonacci(n - 3); +} \ No newline at end of file diff --git a/plus/series/woodallNumber.js b/plus/series/woodallNumber.js index cf7c73a..12fcf3d 100644 --- a/plus/series/woodallNumber.js +++ b/plus/series/woodallNumber.js @@ -5,4 +5,11 @@ * * @param {number} n (n >= 0) * @returns {number} - */ \ No newline at end of file + */ +module.exports = function woodall(n) { + if (typeof n !== 'number') throw new TypeError('Argument is not a number!'); + if (n < 0) throw new Error('Argument should not be negative'); + if (n % 1) throw new Error('Argument should be an integer'); + n = n + 1; + return n * (2 ** n) - 1; +} \ No newline at end of file diff --git a/plus/test/series/primeNumber.spec.js b/plus/test/series/primeNumber.spec.js index ee55273..579b445 100644 --- a/plus/test/series/primeNumber.spec.js +++ b/plus/test/series/primeNumber.spec.js @@ -17,4 +17,10 @@ describe("In the Prime series", () => { it("the 12. number should be 41", () => { expect(primeNumber(12)).to.equal(41); }); + it("the 16. number should be 59", () => { + expect(primeNumber(16)).to.equal(59); + }); + it("the 100. number should be 547", () => { + expect(primeNumber(100)).to.equal(547); + }); }); \ No newline at end of file diff --git a/plus/test/series/sylversterSequence.spec.js b/plus/test/series/sylversterSequence.spec.js index 5e0ebfa..6d1fa6f 100644 --- a/plus/test/series/sylversterSequence.spec.js +++ b/plus/test/series/sylversterSequence.spec.js @@ -14,7 +14,10 @@ describe("In the Sylvester series", () => { it("the 0. number should be 2", () => { expect(sylvesterSequence(0)).to.equal(2); }); - it("the 4. number should be 1807 ", () => { + it("the 4. number should be 1807", () => { expect(sylvesterSequence(4)).to.equal(1807); }); + it("the 5. number should be 3263443", () => { + expect(sylvesterSequence(5)).to.equal(3263443); + }); }); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 2f1459e..b3db8e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,1218 +3,1215 @@ "@babel/runtime-corejs2@^7.2.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.8.0.tgz#bdcd5d52c8c69ea4bd2dce62dc4fcad6159b2587" - integrity sha512-GsSb5MFUX2Q+zVUa7d4/8EXz7KPDuw0uNzY1sdBV7kvzdHzotxqi0HQlqesDRcffpvqcr+ZX8N+mMnb7/osExw== + "integrity" "sha512-GsSb5MFUX2Q+zVUa7d4/8EXz7KPDuw0uNzY1sdBV7kvzdHzotxqi0HQlqesDRcffpvqcr+ZX8N+mMnb7/osExw==" + "resolved" "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.8.0.tgz" + "version" "7.8.0" dependencies: - core-js "^2.6.5" - regenerator-runtime "^0.13.2" + "core-js" "^2.6.5" + "regenerator-runtime" "^0.13.2" -"@sinonjs/commons@^1": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.4.0.tgz#7b3ec2d96af481d7a0321252e7b1c94724ec5a78" - integrity sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw== +"@sinonjs/commons@^1", "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0": + "integrity" "sha512-qbk9AP+cZUsKdW1GJsBpxPKFmCJ0T8swwzVje3qFd+AkQb74Q/tiuzrdfFg8AD2g5HH/XbE/I8Uc1KYHVYWfhg==" + "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.0.tgz" + "version" "1.7.0" dependencies: - type-detect "4.0.8" - -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.0.tgz#f90ffc52a2e519f018b13b6c4da03cbff36ebed6" - integrity sha512-qbk9AP+cZUsKdW1GJsBpxPKFmCJ0T8swwzVje3qFd+AkQb74Q/tiuzrdfFg8AD2g5HH/XbE/I8Uc1KYHVYWfhg== - dependencies: - type-detect "4.0.8" + "type-detect" "4.0.8" "@sinonjs/formatio@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-4.0.1.tgz#50ac1da0c3eaea117ca258b06f4f88a471668bdb" - integrity sha512-asIdlLFrla/WZybhm0C8eEzaDNNrzymiTqHMeJl6zPW2881l3uuVRpm0QlRQEjqYWv6CcKMGYME3LbrLJsORBw== + "integrity" "sha512-asIdlLFrla/WZybhm0C8eEzaDNNrzymiTqHMeJl6zPW2881l3uuVRpm0QlRQEjqYWv6CcKMGYME3LbrLJsORBw==" + "resolved" "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-4.0.1.tgz" + "version" "4.0.1" dependencies: "@sinonjs/commons" "^1" "@sinonjs/samsam" "^4.2.0" "@sinonjs/samsam@^4.2.0", "@sinonjs/samsam@^4.2.1": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-4.2.2.tgz#0f6cb40e467865306d8a20a97543a94005204e23" - integrity sha512-z9o4LZUzSD9Hl22zV38aXNykgFeVj8acqfFabCY6FY83n/6s/XwNJyYYldz6/9lBJanpno9h+oL6HTISkviweA== + "integrity" "sha512-z9o4LZUzSD9Hl22zV38aXNykgFeVj8acqfFabCY6FY83n/6s/XwNJyYYldz6/9lBJanpno9h+oL6HTISkviweA==" + "resolved" "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-4.2.2.tgz" + "version" "4.2.2" dependencies: "@sinonjs/commons" "^1.6.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" + "lodash.get" "^4.4.2" + "type-detect" "^4.0.8" "@sinonjs/text-encoding@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" - integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== - -ansi-colors@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" - integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assertion-error-formatter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz#be9c8825dee6a8a6c72183d915912d9b57d5d265" - integrity sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ== - dependencies: - diff "^4.0.1" - pad-right "^0.2.2" - repeat-string "^1.6.1" - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -becke-ch--regex--s0-0-v1--base--pl--lib@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.4.0.tgz#429ceebbfa5f7e936e78d73fbdc7da7162b20e20" - integrity sha1-Qpzuu/pffpNueNc/vcfacWKyDiA= - -binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== - -bluebird@^3.4.1: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -chai@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" - integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^3.0.1" - get-func-name "^2.0.0" - pathval "^1.1.0" - type-detect "^4.0.5" - -chalk@^2.0.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= - -chokidar@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" - integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.2.0" + "integrity" "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==" + "resolved" "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz" + "version" "0.7.1" + +"ansi-colors@3.2.3": + "integrity" "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==" + "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz" + "version" "3.2.3" + +"ansi-regex@^3.0.0": + "integrity" "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz" + "version" "3.0.0" + +"ansi-regex@^4.1.0": + "integrity" "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz" + "version" "4.1.0" + +"ansi-styles@^3.2.0", "ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"any-promise@^1.0.0": + "integrity" "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + "resolved" "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + "version" "1.3.0" + +"anymatch@~3.1.1": + "integrity" "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" + +"argparse@^1.0.7": + "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "sprintf-js" "~1.0.2" + +"assert-plus@^1.0.0": + "integrity" "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "version" "1.0.0" + +"assertion-error-formatter@^3.0.0": + "integrity" "sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==" + "resolved" "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "diff" "^4.0.1" + "pad-right" "^0.2.2" + "repeat-string" "^1.6.1" + +"assertion-error@^1.1.0": + "integrity" "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + "resolved" "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" + "version" "1.1.0" + +"balanced-match@^1.0.0": + "integrity" "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" + "version" "1.0.0" + +"becke-ch--regex--s0-0-v1--base--pl--lib@^1.4.0": + "integrity" "sha1-Qpzuu/pffpNueNc/vcfacWKyDiA=" + "resolved" "https://registry.npmjs.org/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.4.0.tgz" + "version" "1.4.0" + +"binary-extensions@^2.0.0": + "integrity" "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz" + "version" "2.0.0" + +"bluebird@^3.4.1": + "integrity" "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" + "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz" + "version" "3.5.5" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"braces@~3.0.2": + "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "fill-range" "^7.0.1" + +"browser-stdout@1.3.1": + "integrity" "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + "resolved" "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" + "version" "1.3.1" + +"camelcase@^5.0.0": + "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + "version" "5.3.1" + +"chai@^4.2.0": + "integrity" "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==" + "resolved" "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "assertion-error" "^1.1.0" + "check-error" "^1.0.2" + "deep-eql" "^3.0.1" + "get-func-name" "^2.0.0" + "pathval" "^1.1.0" + "type-detect" "^4.0.5" + +"chalk@^2.4.2": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"check-error@^1.0.2": + "integrity" "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" + "resolved" "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" + "version" "1.0.2" + +"chokidar@3.3.0": + "integrity" "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "anymatch" "~3.1.1" + "braces" "~3.0.2" + "glob-parent" "~5.1.0" + "is-binary-path" "~2.1.0" + "is-glob" "~4.0.1" + "normalize-path" "~3.0.0" + "readdirp" "~3.2.0" optionalDependencies: - fsevents "~2.1.1" + "fsevents" "~2.1.1" -cli-table3@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== +"cli-table3@^0.5.1": + "integrity" "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==" + "resolved" "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz" + "version" "0.5.1" dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" + "object-assign" "^4.1.0" + "string-width" "^2.1.1" optionalDependencies: - colors "^1.1.2" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -colors@^1.1.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - -commander@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -core-js@^2.6.5: - version "2.6.9" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" - integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cucumber-expressions@^8.1.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/cucumber-expressions/-/cucumber-expressions-8.3.0.tgz#67f48307dc8f53540c7f3530ad7b744aa918dd5c" - integrity sha512-cP2ya0EiorwXBC7Ll7Cj7NELYbasNv9Ty42L4u7sso9KruWemWG1ZiTq4PMqir3SNDSrbykoqI5wZgMbLEDjLQ== - dependencies: - becke-ch--regex--s0-0-v1--base--pl--lib "^1.4.0" - xregexp "^4.2.4" - -cucumber-tag-expressions@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/cucumber-tag-expressions/-/cucumber-tag-expressions-2.0.3.tgz#5525d60fbecb3fa2707051ace27004e0512e700e" - integrity sha512-+x5j1IfZrBtbvYHuoUX0rl4nUGxaey6Do9sM0CABmZfDCcWXuuRm1fQeCaklIYQgOFHQ6xOHvDSdkMHHpni6tQ== - -cucumber@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cucumber/-/cucumber-6.0.5.tgz#cdc752ad18b551bcf7bc92774c925302f4408714" - integrity sha512-x+W9Fwk6TvcapQsYMxwFU5AsQJDOIJVGrPKmH15OC7jzb9/Dk7Hb0ZAyw4WcpaDcUDRc8bi2k2yJejDp5eTRlg== - dependencies: - assertion-error-formatter "^3.0.0" - bluebird "^3.4.1" - cli-table3 "^0.5.1" - colors "^1.1.2" - commander "^3.0.1" - cucumber-expressions "^8.1.0" - cucumber-tag-expressions "^2.0.2" - duration "^0.2.1" - escape-string-regexp "^2.0.0" - figures "^3.0.0" - gherkin "5.0.0" - glob "^7.1.3" - indent-string "^4.0.0" - is-generator "^1.0.2" - is-stream "^2.0.0" - knuth-shuffle-seeded "^1.0.6" - lodash "^4.17.14" - mz "^2.4.0" - progress "^2.0.0" - resolve "^1.3.3" - serialize-error "^4.1.0" - stack-chain "^2.0.0" - stacktrace-js "^2.0.0" - string-argv "^0.3.0" - title-case "^2.1.1" - util-arity "^1.0.2" - verror "^1.9.0" - -d@1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -debug@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== - dependencies: - type-detect "^4.0.0" - -define-properties@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -diff@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -duration@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/duration/-/duration-0.2.2.tgz#ddf149bc3bc6901150fe9017111d016b3357f529" - integrity sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg== - dependencies: - d "1" - es5-ext "~0.10.46" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -error-stack-parser@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.2.tgz#4ae8dbaa2bf90a8b450707b9149dcabca135520d" - integrity sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw== - dependencies: - stackframe "^1.0.4" - -es-abstract@^1.5.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== - dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" - -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.46: - version "0.10.50" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778" - integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" - -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -figures@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" - integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== - dependencies: - escape-string-regexp "^1.0.5" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -flat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" - integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== - dependencies: - is-buffer "~2.0.3" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= - -gherkin@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/gherkin/-/gherkin-5.0.0.tgz#96def41198ec3908258b511af74f655a2764d2a1" - integrity sha1-lt70EZjsOQgli1Ea909lWidk0qE= - -glob-parent@~5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= - -has@^1.0.1, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -he@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" - integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== - -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-generator@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" - integrity sha1-wUwhBX7TbjKNuANHlmxpP4hjifM= - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= - dependencies: - has "^1.0.1" - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== - dependencies: - has-symbols "^1.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -js-yaml@3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -just-extend@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc" - integrity sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw== - -knuth-shuffle-seeded@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz#01f1b65733aa7540ee08d8b0174164d22081e4e1" - integrity sha1-AfG2VzOqdUDuCNiwF0Fk0iCB5OE= - dependencies: - seed-random "~2.2.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - -lodash@^4.17.14, lodash@^4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -lolex@^5.0.1, lolex@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== + "colors" "^1.1.2" + +"cliui@^5.0.0": + "integrity" "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "string-width" "^3.1.0" + "strip-ansi" "^5.2.0" + "wrap-ansi" "^5.1.0" + +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + +"color-name@1.1.3": + "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + +"colors@^1.1.2": + "integrity" "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" + "resolved" "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz" + "version" "1.3.3" + +"commander@^3.0.1": + "integrity" "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" + "resolved" "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz" + "version" "3.0.2" + +"concat-map@0.0.1": + "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + +"core-js@^2.6.5": + "integrity" "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "resolved" "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz" + "version" "2.6.9" + +"core-util-is@1.0.2": + "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "version" "1.0.2" + +"cucumber-expressions@^8.1.0": + "integrity" "sha512-cP2ya0EiorwXBC7Ll7Cj7NELYbasNv9Ty42L4u7sso9KruWemWG1ZiTq4PMqir3SNDSrbykoqI5wZgMbLEDjLQ==" + "resolved" "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-8.3.0.tgz" + "version" "8.3.0" + dependencies: + "becke-ch--regex--s0-0-v1--base--pl--lib" "^1.4.0" + "xregexp" "^4.2.4" + +"cucumber-tag-expressions@^2.0.2": + "integrity" "sha512-+x5j1IfZrBtbvYHuoUX0rl4nUGxaey6Do9sM0CABmZfDCcWXuuRm1fQeCaklIYQgOFHQ6xOHvDSdkMHHpni6tQ==" + "resolved" "https://registry.npmjs.org/cucumber-tag-expressions/-/cucumber-tag-expressions-2.0.3.tgz" + "version" "2.0.3" + +"cucumber@^6.0.5": + "integrity" "sha512-x+W9Fwk6TvcapQsYMxwFU5AsQJDOIJVGrPKmH15OC7jzb9/Dk7Hb0ZAyw4WcpaDcUDRc8bi2k2yJejDp5eTRlg==" + "resolved" "https://registry.npmjs.org/cucumber/-/cucumber-6.0.5.tgz" + "version" "6.0.5" + dependencies: + "assertion-error-formatter" "^3.0.0" + "bluebird" "^3.4.1" + "cli-table3" "^0.5.1" + "colors" "^1.1.2" + "commander" "^3.0.1" + "cucumber-expressions" "^8.1.0" + "cucumber-tag-expressions" "^2.0.2" + "duration" "^0.2.1" + "escape-string-regexp" "^2.0.0" + "figures" "^3.0.0" + "gherkin" "5.0.0" + "glob" "^7.1.3" + "indent-string" "^4.0.0" + "is-generator" "^1.0.2" + "is-stream" "^2.0.0" + "knuth-shuffle-seeded" "^1.0.6" + "lodash" "^4.17.14" + "mz" "^2.4.0" + "progress" "^2.0.0" + "resolve" "^1.3.3" + "serialize-error" "^4.1.0" + "stack-chain" "^2.0.0" + "stacktrace-js" "^2.0.0" + "string-argv" "^0.3.0" + "title-case" "^2.1.1" + "util-arity" "^1.0.2" + "verror" "^1.9.0" + +"d@1": + "integrity" "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==" + "resolved" "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "es5-ext" "^0.10.50" + "type" "^1.0.1" + +"debug@3.2.6": + "integrity" "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz" + "version" "3.2.6" + dependencies: + "ms" "^2.1.1" + +"decamelize@^1.2.0": + "integrity" "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "version" "1.2.0" + +"deep-eql@^3.0.1": + "integrity" "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==" + "resolved" "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "type-detect" "^4.0.0" + +"define-properties@^1.1.2": + "integrity" "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==" + "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "object-keys" "^1.0.12" + +"diff@^4.0.1": + "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + "version" "4.0.2" + +"diff@3.5.0": + "integrity" "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "resolved" "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" + "version" "3.5.0" + +"duration@^0.2.1": + "integrity" "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==" + "resolved" "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz" + "version" "0.2.2" + dependencies: + "d" "1" + "es5-ext" "~0.10.46" + +"emoji-regex@^7.0.1": + "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + "version" "7.0.3" + +"error-stack-parser@^2.0.1": + "integrity" "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==" + "resolved" "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "stackframe" "^1.0.4" + +"es-abstract@^1.5.1": + "integrity" "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==" + "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz" + "version" "1.13.0" + dependencies: + "es-to-primitive" "^1.2.0" + "function-bind" "^1.1.1" + "has" "^1.0.3" + "is-callable" "^1.1.4" + "is-regex" "^1.0.4" + "object-keys" "^1.0.12" + +"es-to-primitive@^1.2.0": + "integrity" "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==" + "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "is-callable" "^1.1.4" + "is-date-object" "^1.0.1" + "is-symbol" "^1.0.2" + +"es5-ext@^0.10.35", "es5-ext@^0.10.50", "es5-ext@~0.10.14", "es5-ext@~0.10.46": + "integrity" "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==" + "resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz" + "version" "0.10.50" + dependencies: + "es6-iterator" "~2.0.3" + "es6-symbol" "~3.1.1" + "next-tick" "^1.0.0" + +"es6-iterator@~2.0.3": + "integrity" "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=" + "resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "d" "1" + "es5-ext" "^0.10.35" + "es6-symbol" "^3.1.1" + +"es6-symbol@^3.1.1", "es6-symbol@~3.1.1": + "integrity" "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=" + "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "d" "1" + "es5-ext" "~0.10.14" + +"escape-string-regexp@^1.0.5": + "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^2.0.0": + "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + "version" "2.0.0" + +"escape-string-regexp@1.0.5": + "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"esprima@^4.0.0": + "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + "version" "4.0.1" + +"extsprintf@^1.2.0": + "integrity" "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=" + "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz" + "version" "1.4.0" + +"figures@^3.0.0": + "integrity" "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==" + "resolved" "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "escape-string-regexp" "^1.0.5" + +"fill-range@^7.0.1": + "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "to-regex-range" "^5.0.1" + +"find-up@^3.0.0", "find-up@3.0.0": + "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "locate-path" "^3.0.0" + +"flat@^4.1.0": + "integrity" "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==" + "resolved" "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "is-buffer" "~2.0.3" + +"fs.realpath@^1.0.0": + "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"function-bind@^1.1.1": + "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + "version" "1.1.1" + +"get-caller-file@^2.0.1": + "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + "version" "2.0.5" + +"get-func-name@^2.0.0": + "integrity" "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" + "resolved" "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" + "version" "2.0.0" + +"gherkin@5.0.0": + "integrity" "sha1-lt70EZjsOQgli1Ea909lWidk0qE=" + "resolved" "https://registry.npmjs.org/gherkin/-/gherkin-5.0.0.tgz" + "version" "5.0.0" + +"glob-parent@~5.1.0": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob@^7.1.3": + "integrity" "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz" + "version" "7.1.4" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.0.4" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"glob@7.1.3": + "integrity" "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz" + "version" "7.1.3" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.0.4" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"growl@1.10.5": + "integrity" "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" + "resolved" "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" + "version" "1.10.5" + +"has-flag@^3.0.0": + "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"has-symbols@^1.0.0": + "integrity" "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz" + "version" "1.0.0" + +"has@^1.0.1", "has@^1.0.3": + "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" + "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "function-bind" "^1.1.1" + +"he@1.2.0": + "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + "version" "1.2.0" + +"indent-string@^4.0.0": + "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + "version" "4.0.0" + +"inflight@^1.0.4": + "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"inherits@2": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"is-binary-path@~2.1.0": + "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "binary-extensions" "^2.0.0" + +"is-buffer@~2.0.3": + "integrity" "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==" + "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz" + "version" "2.0.3" + +"is-callable@^1.1.4": + "integrity" "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz" + "version" "1.1.4" + +"is-date-object@^1.0.1": + "integrity" "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz" + "version" "1.0.1" + +"is-extglob@^2.1.1": + "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + "version" "2.1.1" + +"is-fullwidth-code-point@^2.0.0": + "integrity" "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + "version" "2.0.0" + +"is-generator@^1.0.2": + "integrity" "sha1-wUwhBX7TbjKNuANHlmxpP4hjifM=" + "resolved" "https://registry.npmjs.org/is-generator/-/is-generator-1.0.3.tgz" + "version" "1.0.3" + +"is-glob@^4.0.1", "is-glob@~4.0.1": + "integrity" "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "is-extglob" "^2.1.1" + +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" + +"is-regex@^1.0.4": + "integrity" "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=" + "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has" "^1.0.1" + +"is-stream@^2.0.0": + "integrity" "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz" + "version" "2.0.0" + +"is-symbol@^1.0.2": + "integrity" "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==" + "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "has-symbols" "^1.0.0" + +"isarray@0.0.1": + "integrity" "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "version" "0.0.1" + +"isexe@^2.0.0": + "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" + +"js-yaml@3.13.1": + "integrity" "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz" + "version" "3.13.1" + dependencies: + "argparse" "^1.0.7" + "esprima" "^4.0.0" + +"just-extend@^4.0.2": + "integrity" "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==" + "resolved" "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz" + "version" "4.0.2" + +"knuth-shuffle-seeded@^1.0.6": + "integrity" "sha1-AfG2VzOqdUDuCNiwF0Fk0iCB5OE=" + "resolved" "https://registry.npmjs.org/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "seed-random" "~2.2.0" + +"locate-path@^3.0.0": + "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-locate" "^3.0.0" + "path-exists" "^3.0.0" + +"lodash.get@^4.4.2": + "integrity" "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + "resolved" "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" + "version" "4.4.2" + +"lodash@^4.17.14", "lodash@^4.17.15": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"log-symbols@3.0.0": + "integrity" "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==" + "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "chalk" "^2.4.2" + +"lolex@^5.0.1", "lolex@^5.1.2": + "integrity" "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==" + "resolved" "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz" + "version" "5.1.2" dependencies: "@sinonjs/commons" "^1.7.0" -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -minimatch@3.0.4, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -mocha@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.0.0.tgz#c60d14bf3de9601f549b3ff5be657eb8381c54bf" - integrity sha512-CirsOPbO3jU86YKjjMzFLcXIb5YiGLUrjrXFHoJ3e2z9vWiaZVCZQ2+gtRGMPWF+nFhN6AWwLM/juzAQ6KRkbA== - dependencies: - ansi-colors "3.2.3" - browser-stdout "1.3.1" - chokidar "3.3.0" - debug "3.2.6" - diff "3.5.0" - escape-string-regexp "1.0.5" - find-up "3.0.0" - glob "7.1.3" - growl "1.10.5" - he "1.2.0" - js-yaml "3.13.1" - log-symbols "2.2.0" - minimatch "3.0.4" - mkdirp "0.5.1" - ms "2.1.1" - node-environment-flags "1.0.6" - object.assign "4.1.0" - strip-json-comments "2.0.1" - supports-color "6.0.0" - which "1.3.1" - wide-align "1.1.3" - yargs "13.3.0" - yargs-parser "13.1.1" - yargs-unparser "1.6.0" - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -mz@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -next-tick@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -nise@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/nise/-/nise-3.0.1.tgz#0659982af515e5aac15592226246243e8da0013d" - integrity sha512-fYcH9y0drBGSoi88kvhpbZEsenX58Yr+wOJ4/Mi1K4cy+iGP/a73gNoyNhu5E9QxPdgTlVChfIaAlnyOy/gHUA== +"lower-case@^1.1.1": + "integrity" "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz" + "version" "1.1.4" + +"minimatch@^3.0.4", "minimatch@3.0.4": + "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "brace-expansion" "^1.1.7" + +"minimist@^1.2.5": + "integrity" "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" + "version" "1.2.5" + +"mkdirp@0.5.5": + "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + "version" "0.5.5" + dependencies: + "minimist" "^1.2.5" + +"mocha@^7.0.0": + "integrity" "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==" + "resolved" "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "ansi-colors" "3.2.3" + "browser-stdout" "1.3.1" + "chokidar" "3.3.0" + "debug" "3.2.6" + "diff" "3.5.0" + "escape-string-regexp" "1.0.5" + "find-up" "3.0.0" + "glob" "7.1.3" + "growl" "1.10.5" + "he" "1.2.0" + "js-yaml" "3.13.1" + "log-symbols" "3.0.0" + "minimatch" "3.0.4" + "mkdirp" "0.5.5" + "ms" "2.1.1" + "node-environment-flags" "1.0.6" + "object.assign" "4.1.0" + "strip-json-comments" "2.0.1" + "supports-color" "6.0.0" + "which" "1.3.1" + "wide-align" "1.1.3" + "yargs" "13.3.2" + "yargs-parser" "13.1.2" + "yargs-unparser" "1.6.0" + +"ms@^2.1.1", "ms@2.1.1": + "integrity" "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" + "version" "2.1.1" + +"mz@^2.4.0": + "integrity" "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==" + "resolved" "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" + "version" "2.7.0" + dependencies: + "any-promise" "^1.0.0" + "object-assign" "^4.0.1" + "thenify-all" "^1.0.0" + +"next-tick@^1.0.0": + "integrity" "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz" + "version" "1.0.0" + +"nise@^3.0.1": + "integrity" "sha512-fYcH9y0drBGSoi88kvhpbZEsenX58Yr+wOJ4/Mi1K4cy+iGP/a73gNoyNhu5E9QxPdgTlVChfIaAlnyOy/gHUA==" + "resolved" "https://registry.npmjs.org/nise/-/nise-3.0.1.tgz" + "version" "3.0.1" dependencies: "@sinonjs/commons" "^1.7.0" "@sinonjs/formatio" "^4.0.1" "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - lolex "^5.0.1" - path-to-regexp "^1.7.0" - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-environment-flags@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== - dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-keys@^1.0.11, object-keys@^1.0.12: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -p-limit@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pad-right@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/pad-right/-/pad-right-0.2.2.tgz#6fbc924045d244f2a2a244503060d3bfc6009774" - integrity sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q= - dependencies: - repeat-string "^1.5.2" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-to-regexp@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" - integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= - dependencies: - isarray "0.0.1" - -pathval@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" - integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= - -picomatch@^2.0.4: - version "2.2.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" - integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -readdirp@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" - integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== - dependencies: - picomatch "^2.0.4" - -regenerator-runtime@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" - integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== - -repeat-string@^1.5.2, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + "just-extend" "^4.0.2" + "lolex" "^5.0.1" + "path-to-regexp" "^1.7.0" + +"no-case@^2.2.0": + "integrity" "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==" + "resolved" "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz" + "version" "2.3.2" + dependencies: + "lower-case" "^1.1.1" + +"node-environment-flags@1.0.6": + "integrity" "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==" + "resolved" "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "object.getownpropertydescriptors" "^2.0.3" + "semver" "^5.7.0" + +"normalize-path@^3.0.0", "normalize-path@~3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + "version" "3.0.0" + +"object-assign@^4.0.1", "object-assign@^4.1.0": + "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "version" "4.1.1" + +"object-keys@^1.0.11", "object-keys@^1.0.12": + "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + "version" "1.1.1" + +"object.assign@4.1.0": + "integrity" "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==" + "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "define-properties" "^1.1.2" + "function-bind" "^1.1.1" + "has-symbols" "^1.0.0" + "object-keys" "^1.0.11" + +"object.getownpropertydescriptors@^2.0.3": + "integrity" "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=" + "resolved" "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "define-properties" "^1.1.2" + "es-abstract" "^1.5.1" + +"once@^1.3.0": + "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"p-limit@^2.0.0": + "integrity" "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "p-try" "^2.0.0" + +"p-locate@^3.0.0": + "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-limit" "^2.0.0" + +"p-try@^2.0.0": + "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + "version" "2.2.0" + +"pad-right@^0.2.2": + "integrity" "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=" + "resolved" "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz" + "version" "0.2.2" + dependencies: + "repeat-string" "^1.5.2" + +"path-exists@^3.0.0": + "integrity" "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + "version" "3.0.0" + +"path-is-absolute@^1.0.0": + "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + +"path-parse@^1.0.6": + "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + "version" "1.0.7" + +"path-to-regexp@^1.7.0": + "integrity" "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz" + "version" "1.7.0" + dependencies: + "isarray" "0.0.1" + +"pathval@^1.1.0": + "integrity" "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=" + "resolved" "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz" + "version" "1.1.0" + +"picomatch@^2.0.4": + "integrity" "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz" + "version" "2.2.1" + +"progress@^2.0.0": + "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + "version" "2.0.3" + +"readdirp@~3.2.0": + "integrity" "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "picomatch" "^2.0.4" + +"regenerator-runtime@^0.13.2": + "integrity" "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz" + "version" "0.13.3" + +"repeat-string@^1.5.2", "repeat-string@^1.6.1": + "integrity" "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + "version" "1.6.1" + +"require-directory@^2.1.1": + "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + "version" "2.1.1" + +"require-main-filename@^2.0.0": + "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + "version" "2.0.0" -resolve@^1.3.3: - version "1.11.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" - integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== - dependencies: - path-parse "^1.0.6" - -seed-random@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/seed-random/-/seed-random-2.2.0.tgz#2a9b19e250a817099231a5b99a4daf80b7fbed54" - integrity sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ= - -semver@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - -serialize-error@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-4.1.0.tgz#63e1e33ede20bcd89d9f0528ea4c15fbf0f2b78a" - integrity sha512-5j9GgyGsP9vV9Uj1S0lDCvlsd+gc2LEPVK7HHHte7IyPwOD4lVQFeaX143gx3U5AnoCi+wbcb3mvaxVysjpxEw== - dependencies: - type-fest "^0.3.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -sinon@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-8.0.4.tgz#eb13242fa50bf876c54e88bdc96f281a0dd08a53" - integrity sha512-cFsmgmvsgFb87e7SV7IcekogITlHX2KmlplyI9Pda0FH1Z8Ms/kWbpLs25Idp0m6ZJ3HEEjhaYYXbcTtWWUn4w== +"resolve@^1.3.3": + "integrity" "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "path-parse" "^1.0.6" + +"seed-random@~2.2.0": + "integrity" "sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ=" + "resolved" "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz" + "version" "2.2.0" + +"semver@^5.7.0": + "integrity" "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz" + "version" "5.7.0" + +"serialize-error@^4.1.0": + "integrity" "sha512-5j9GgyGsP9vV9Uj1S0lDCvlsd+gc2LEPVK7HHHte7IyPwOD4lVQFeaX143gx3U5AnoCi+wbcb3mvaxVysjpxEw==" + "resolved" "https://registry.npmjs.org/serialize-error/-/serialize-error-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "type-fest" "^0.3.0" + +"set-blocking@^2.0.0": + "integrity" "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + "version" "2.0.0" + +"sinon@^8.0.4": + "integrity" "sha512-cFsmgmvsgFb87e7SV7IcekogITlHX2KmlplyI9Pda0FH1Z8Ms/kWbpLs25Idp0m6ZJ3HEEjhaYYXbcTtWWUn4w==" + "resolved" "https://registry.npmjs.org/sinon/-/sinon-8.0.4.tgz" + "version" "8.0.4" dependencies: "@sinonjs/commons" "^1.7.0" "@sinonjs/formatio" "^4.0.1" "@sinonjs/samsam" "^4.2.1" - diff "^4.0.1" - lolex "^5.1.2" - nise "^3.0.1" - supports-color "^7.1.0" - -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -stack-chain@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-2.0.0.tgz#d73d1172af89565f07438b5bcc086831b6689b2d" - integrity sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg== - -stack-generator@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.3.tgz#bb74385c67ffc4ccf3c4dee5831832d4e509c8a0" - integrity sha512-kdzGoqrnqsMxOEuXsXyQTmvWXZmG0f3Ql2GDx5NtmZs59sT2Bt9Vdyq0XdtxUi58q/+nxtbF9KOQ9HkV1QznGg== - dependencies: - stackframe "^1.0.4" + "diff" "^4.0.1" + "lolex" "^5.1.2" + "nise" "^3.0.1" + "supports-color" "^7.1.0" + +"source-map@0.5.6": + "integrity" "sha1-dc449SvwczxafwwRjYEzSiu19BI=" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + "version" "0.5.6" + +"sprintf-js@~1.0.2": + "integrity" "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + "version" "1.0.3" + +"stack-chain@^2.0.0": + "integrity" "sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg==" + "resolved" "https://registry.npmjs.org/stack-chain/-/stack-chain-2.0.0.tgz" + "version" "2.0.0" + +"stack-generator@^2.0.1": + "integrity" "sha512-kdzGoqrnqsMxOEuXsXyQTmvWXZmG0f3Ql2GDx5NtmZs59sT2Bt9Vdyq0XdtxUi58q/+nxtbF9KOQ9HkV1QznGg==" + "resolved" "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "stackframe" "^1.0.4" -stackframe@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" - integrity sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw== +"stackframe@^1.0.4": + "integrity" "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==" + "resolved" "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz" + "version" "1.0.4" -stacktrace-gps@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.2.tgz#33f8baa4467323ab2bd1816efa279942ba431ccc" - integrity sha512-9o+nWhiz5wFnrB3hBHs2PTyYrS60M1vvpSzHxwxnIbtY2q9Nt51hZvhrG1+2AxD374ecwyS+IUwfkHRE/2zuGg== +"stacktrace-gps@^3.0.1": + "integrity" "sha512-9o+nWhiz5wFnrB3hBHs2PTyYrS60M1vvpSzHxwxnIbtY2q9Nt51hZvhrG1+2AxD374ecwyS+IUwfkHRE/2zuGg==" + "resolved" "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.0.2.tgz" + "version" "3.0.2" dependencies: - source-map "0.5.6" - stackframe "^1.0.4" + "source-map" "0.5.6" + "stackframe" "^1.0.4" -stacktrace-js@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.0.tgz#776ca646a95bc6c6b2b90776536a7fc72c6ddb58" - integrity sha1-d2ymRqlbxsayuQd2U2p/xyxt21g= +"stacktrace-js@^2.0.0": + "integrity" "sha1-d2ymRqlbxsayuQd2U2p/xyxt21g=" + "resolved" "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.0.tgz" + "version" "2.0.0" dependencies: - error-stack-parser "^2.0.1" - stack-generator "^2.0.1" - stacktrace-gps "^3.0.1" + "error-stack-parser" "^2.0.1" + "stack-generator" "^2.0.1" + "stacktrace-gps" "^3.0.1" + +"string-argv@^0.3.0": + "integrity" "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==" + "resolved" "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" + "version" "0.3.1" -string-argv@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== +"string-width@^1.0.2 || 2", "string-width@^2.1.1": + "integrity" "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "is-fullwidth-code-point" "^2.0.0" + "strip-ansi" "^4.0.0" -"string-width@^1.0.2 || 2", string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== +"string-width@^3.0.0": + "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + "version" "3.1.0" dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" + "emoji-regex" "^7.0.1" + "is-fullwidth-code-point" "^2.0.0" + "strip-ansi" "^5.1.0" -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +"string-width@^3.1.0": + "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + "version" "3.1.0" dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + "emoji-regex" "^7.0.1" + "is-fullwidth-code-point" "^2.0.0" + "strip-ansi" "^5.1.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= +"strip-ansi@^4.0.0": + "integrity" "sha1-qEeQIusaw2iocTibY1JixQXuNo8=" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" + "version" "4.0.0" dependencies: - ansi-regex "^3.0.0" + "ansi-regex" "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +"strip-ansi@^5.0.0", "strip-ansi@^5.1.0", "strip-ansi@^5.2.0": + "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + "version" "5.2.0" dependencies: - ansi-regex "^4.1.0" + "ansi-regex" "^4.1.0" -strip-json-comments@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +"strip-json-comments@2.0.1": + "integrity" "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + "version" "2.0.1" -supports-color@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" - integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== +"supports-color@^5.3.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" dependencies: - has-flag "^3.0.0" + "has-flag" "^3.0.0" -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== +"supports-color@^7.1.0": + "integrity" "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz" + "version" "7.1.0" dependencies: - has-flag "^3.0.0" + "has-flag" "^4.0.0" -supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== +"supports-color@6.0.0": + "integrity" "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz" + "version" "6.0.0" dependencies: - has-flag "^4.0.0" + "has-flag" "^3.0.0" -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= +"thenify-all@^1.0.0": + "integrity" "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=" + "resolved" "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" + "version" "1.6.0" dependencies: - thenify ">= 3.1.0 < 4" + "thenify" ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= - dependencies: - any-promise "^1.0.0" - -title-case@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" - integrity sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o= - dependencies: - no-case "^2.2.0" - upper-case "^1.0.3" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -type@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/type/-/type-1.0.1.tgz#084c9a17fcc9151a2cdb1459905c2e45e4bb7d61" - integrity sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw== - -upper-case@^1.0.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -util-arity@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/util-arity/-/util-arity-1.1.0.tgz#59d01af1fdb3fede0ac4e632b0ab5f6ce97c9330" - integrity sha1-WdAa8f2z/t4KxOYysKtfbOl8kzA= - -verror@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -xregexp@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.2.4.tgz#02a4aea056d65a42632c02f0233eab8e4d7e57ed" - integrity sha512-sO0bYdYeJAJBcJA8g7MJJX7UrOZIfJPd8U2SC7B2Dd/J24U0aQNoGp33shCaBSWeb0rD5rh6VBUIXOkGal1TZA== + "integrity" "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=" + "resolved" "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "any-promise" "^1.0.0" + +"title-case@^2.1.1": + "integrity" "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=" + "resolved" "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "no-case" "^2.2.0" + "upper-case" "^1.0.3" + +"to-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "is-number" "^7.0.0" + +"type-detect@^4.0.0", "type-detect@^4.0.5", "type-detect@^4.0.8", "type-detect@4.0.8": + "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + "version" "4.0.8" + +"type-fest@^0.3.0": + "integrity" "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz" + "version" "0.3.1" + +"type@^1.0.1": + "integrity" "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==" + "resolved" "https://registry.npmjs.org/type/-/type-1.0.1.tgz" + "version" "1.0.1" + +"upper-case@^1.0.3": + "integrity" "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + "resolved" "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" + "version" "1.1.3" + +"util-arity@^1.0.2": + "integrity" "sha1-WdAa8f2z/t4KxOYysKtfbOl8kzA=" + "resolved" "https://registry.npmjs.org/util-arity/-/util-arity-1.1.0.tgz" + "version" "1.1.0" + +"verror@^1.9.0": + "integrity" "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=" + "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "assert-plus" "^1.0.0" + "core-util-is" "1.0.2" + "extsprintf" "^1.2.0" + +"which-module@^2.0.0": + "integrity" "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" + "version" "2.0.0" + +"which@1.3.1": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "isexe" "^2.0.0" + +"wide-align@1.1.3": + "integrity" "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==" + "resolved" "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "string-width" "^1.0.2 || 2" + +"wrap-ansi@^5.1.0": + "integrity" "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "ansi-styles" "^3.2.0" + "string-width" "^3.0.0" + "strip-ansi" "^5.0.0" + +"wrappy@1": + "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" + +"xregexp@^4.2.4": + "integrity" "sha512-sO0bYdYeJAJBcJA8g7MJJX7UrOZIfJPd8U2SC7B2Dd/J24U0aQNoGp33shCaBSWeb0rD5rh6VBUIXOkGal1TZA==" + "resolved" "https://registry.npmjs.org/xregexp/-/xregexp-4.2.4.tgz" + "version" "4.2.4" dependencies: "@babel/runtime-corejs2" "^7.2.0" -y18n@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== - -yargs-parser@13.1.1, yargs-parser@^13.1.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-unparser@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" - integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== - dependencies: - flat "^4.1.0" - lodash "^4.17.15" - yargs "^13.3.0" - -yargs@13.3.0, yargs@^13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.1" +"y18n@^4.0.0": + "integrity" "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz" + "version" "4.0.1" + +"yargs-parser@^13.1.2", "yargs-parser@13.1.2": + "integrity" "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" + "version" "13.1.2" + dependencies: + "camelcase" "^5.0.0" + "decamelize" "^1.2.0" + +"yargs-unparser@1.6.0": + "integrity" "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==" + "resolved" "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz" + "version" "1.6.0" + dependencies: + "flat" "^4.1.0" + "lodash" "^4.17.15" + "yargs" "^13.3.0" + +"yargs@^13.3.0", "yargs@13.3.2": + "integrity" "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" + "version" "13.3.2" + dependencies: + "cliui" "^5.0.0" + "find-up" "^3.0.0" + "get-caller-file" "^2.0.1" + "require-directory" "^2.1.1" + "require-main-filename" "^2.0.0" + "set-blocking" "^2.0.0" + "string-width" "^3.0.0" + "which-module" "^2.0.0" + "y18n" "^4.0.0" + "yargs-parser" "^13.1.2"