From 1c7a72a010feabe0429396d170b3f8d641f89a5d Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Tue, 28 Aug 2018 23:21:21 -0400 Subject: [PATCH] Implement ESDoc (#226) * Start on esdoc * Beef up ESDoc comments, alphabetize class methods * More comments * Add more comments, refactor _setUpButtons --- .esdoc.js | 13 ++ .gitignore | 1 + package.json | 4 + src/js/bind.js | 2 +- src/js/step.js | 247 +++++++++++++++---------- src/js/tour.js | 141 +++++++------- src/js/utils.js | 10 +- yarn.lock | 476 +++++++++++++++++++++++++++++++++++++++++++++--- 8 files changed, 702 insertions(+), 192 deletions(-) create mode 100644 .esdoc.js diff --git a/.esdoc.js b/.esdoc.js new file mode 100644 index 000000000..d7fa2bf8e --- /dev/null +++ b/.esdoc.js @@ -0,0 +1,13 @@ +module.exports = { + source: './src', + destination: './esdoc', + plugins: [ + { + name: 'esdoc-standard-plugin' + }, + { + name: 'esdoc-ecmascript-proposal-plugin', + option: { all: true } + } + ] +}; \ No newline at end of file diff --git a/.gitignore b/.gitignore index 88d2264aa..c2d864114 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /coverage/ /cypress/ /dist/ +/esdoc/ /node_modules/ /test/unit/dist /.DS_Store diff --git a/package.json b/package.json index b5a4275cb..673c67985 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ ], "scripts": { "build": "yarn clean && webpack --mode production", + "esdoc": "esdoc", "postbuild": "rm -f dist/removable-*", "clean": "rm -rf dist", "cy:open": "./node_modules/.bin/cypress open", @@ -70,6 +71,9 @@ "css-loader": "^1.0.0", "cypress": "^3.0.3", "del": "^3.0.0", + "esdoc": "^1.1.0", + "esdoc-ecmascript-proposal-plugin": "^1.0.0", + "esdoc-standard-plugin": "^1.0.0", "eslint": "^5.1.0", "eslint-loader": "^2.1.0", "eslint-plugin-mocha": "^5.1.0", diff --git a/src/js/bind.js b/src/js/bind.js index 8ed233790..7e3656070 100644 --- a/src/js/bind.js +++ b/src/js/bind.js @@ -78,7 +78,7 @@ export function bindCancelLink(link) { /** * Take an array of strings and look up methods by name, then bind them to `this` - * @param {[String]} methods The names of methods to bind + * @param {String[]} methods The names of methods to bind */ export function bindMethods(methods) { methods.map((method) => { diff --git a/src/js/step.js b/src/js/step.js index 38e3707ae..f74b516b5 100644 --- a/src/js/step.js +++ b/src/js/step.js @@ -8,7 +8,7 @@ import { createFromHTML, parsePosition, setupPopper } from './utils.js'; * Creates incremented ID for each newly created step * * @private - * @returns {Number} + * @return {Number} The unique id for the step */ const uniqueId = (function() { let id = 0; @@ -17,7 +17,23 @@ const uniqueId = (function() { }; })(); +/** + * Class representing steps to be added to a tour + * @extends {Evented} + */ export class Step extends Evented { + /** + * Create a step + * @param {Tour} tour The tour for the step + * @param {Object} options The options for the step + * @param {function} options.beforeShowPromise A function that returns a promise. + * When the promise resolves, the rest of the `show` code for the step will execute. + * @param {Object[]} options.buttons An array of buttons to add to the step. By default + * we add a Next button which triggers `next()`, set this to `false` to disable. + * @param {Object} options.buttons.button.text The HTML text of the button + * @param {string} options.title The step's title. It becomes an `h3` at the top of the step. + * @return {Step} The newly created Step instance + */ constructor(tour, options) { super(tour, options); this.tour = tour; @@ -44,7 +60,7 @@ export class Step extends Evented { * Adds buttons to the step as passed into options * * @private - * @param {HTMLElement} + * @param {HTMLElement} content The element for the step, to append the footer with buttons to */ _addButtons(content) { if (this.options.buttons) { @@ -64,6 +80,8 @@ export class Step extends Evented { /** * Adds the "x" button to cancel the tour + * @param {HTMLElement} element The step element + * @param {HTMLElement} header The header element for the step * @private */ _addCancelLink(element, header) { @@ -80,7 +98,7 @@ export class Step extends Evented { * Adds text passed in as options * * @private - * @param {HTMLElement} + * @param {HTMLElement} content The content to append the text to */ _addContent(content) { const text = createFromHTML('
'); @@ -109,7 +127,7 @@ export class Step extends Evented { * Attaches final element to default or passed location * * @private - * @param {HTMLElement} + * @param {HTMLElement} element The element to attach */ _attach(element) { const { renderLocation } = this.options; @@ -129,7 +147,7 @@ export class Step extends Evented { * Creates Shepherd element for step based on options * * @private - * @returns {HTMLElement} element + * @return {HTMLElement} The DOM element for the step */ _createElement() { const content = document.createElement('div'); @@ -163,42 +181,18 @@ export class Step extends Evented { return element; } - /** - * Determines button options prior to rendering - * - * @private - */ - _setUpButtons() { - const { buttons } = this.options; - if (!buttons) { - return; - } - const buttonsAreDefault = _.isUndefined(buttons) || _.isEmpty(buttons); - if (buttonsAreDefault) { - return this.options.buttons = [{ - text: 'Next', - action: this.tour.next, - classes: 'btn' - }]; - } - - const buttonsAreObject = _.isPlainObject(buttons); - // Can pass in an object which will assume a single button - if (buttonsAreObject) { - return this.options.buttons = [this.options.buttons]; - } - - return buttons; - } - /** * Returns the tour for the step - * @returns {Tour} + * @return {Tour} The tour instance */ getTour() { return this.tour; } + /** + * Passes `options.attachTo` to `parsePosition` to get the correct `attachTo` format + * @returns {({} & {element, on}) | ({})} + */ getAttachTo() { const opts = parsePosition(this.options.attachTo) || {}; const returnOpts = Object.assign({}, opts); @@ -219,54 +213,45 @@ export class Step extends Evented { return returnOpts; } - setOptions(options = {}) { - this.options = options; - const { when } = this.options; - - this.destroy(); - this.id = this.options.id || `step-${uniqueId()}`; - - _.forOwn(when, (handler, event) => { - this.on(event, handler, this); - }); - - this._setUpButtons(); + /** + * Cancel the tour + * Triggers the `cancel` event + */ + cancel() { + this.tour.cancel(); + this.trigger('cancel'); } - show() { - if (_.isFunction(this.options.beforeShowPromise)) { - const beforeShowPromise = this.options.beforeShowPromise(); - if (!_.isUndefined(beforeShowPromise)) { - return beforeShowPromise.then(() => this._show()); - } - } - this._show(); + /** + * Complete the tour + * Triggers the `complete` event + */ + complete() { + this.tour.complete(); + this.trigger('complete'); } - _show() { - this.trigger('before-show'); - - if (!this.el) { - this.render(); + /** + * Remove the step, delete the step's element, and destroy the popper for the step + * Triggers `destroy` event + */ + destroy() { + if (_.isElement(this.el) && this.el.parentNode) { + this.el.parentNode.removeChild(this.el); + delete this.el; } - this.el.hidden = false; - // We need to manually set styles for < IE11 support - this.el.style.display = 'block'; - - document.body.setAttribute('data-shepherd-step', this.id); - - this.setupPopper(); - - if (this.options.scrollTo) { - setTimeout(() => { - this.scrollTo(); - }); + if (this.popper) { + this.popper.destroy(); } + this.popper = null; - this.trigger('show'); + this.trigger('destroy'); } + /** + * Hide the step and destroy the popper + */ hide() { this.trigger('before-hide'); @@ -290,24 +275,30 @@ export class Step extends Evented { this.trigger('hide'); } + /** + * Check if the step is open and visible + * @return {*|boolean} True if the step is open and visible + */ isOpen() { return this.el && !this.el.hidden; } /** - * Cancel the tour and fire the `cancel` event + * Create the element and set up the popper instance */ - cancel() { - this.tour.cancel(); - this.trigger('cancel'); - } + render() { + if (!_.isUndefined(this.el)) { + this.destroy(); + } + this.el = this._createElement(); - /** - * Complete the tour and fire the `complete` event - */ - complete() { - this.tour.complete(); - this.trigger('complete'); + if (this.options.advanceOn) { + this.bindAdvance(); + } + + this._attach(this.el); + + this.setupPopper(); } /** @@ -324,32 +315,88 @@ export class Step extends Evented { } } - destroy() { - if (_.isElement(this.el) && this.el.parentNode) { - this.el.parentNode.removeChild(this.el); - delete this.el; - } + /** + * Sets the options for the step, maps `when` to events, sets up buttons + * @param {Object} options The options for the step + */ + setOptions(options = {}) { + this.options = options; + const { when } = this.options; - if (this.popper) { - this.popper.destroy(); - } - this.popper = null; + this.destroy(); + this.id = this.options.id || `step-${uniqueId()}`; - this.trigger('destroy'); + _.forOwn(when, (handler, event) => { + this.on(event, handler, this); + }); + + this._setUpButtons(); } - render() { - if (!_.isUndefined(this.el)) { - this.destroy(); + /** + * Wraps `_show` and ensures `beforeShowPromise` resolves before calling show + * @return {*|Promise} + */ + show() { + if (_.isFunction(this.options.beforeShowPromise)) { + const beforeShowPromise = this.options.beforeShowPromise(); + if (!_.isUndefined(beforeShowPromise)) { + return beforeShowPromise.then(() => this._show()); + } } - this.el = this._createElement(); + this._show(); + } - if (this.options.advanceOn) { - this.bindAdvance(); + /** + * Determines button options prior to rendering + * + * @private + */ + _setUpButtons() { + const { buttons } = this.options; + if (buttons) { + const buttonsAreDefault = _.isUndefined(buttons) || _.isEmpty(buttons); + if (buttonsAreDefault) { + this.options.buttons = [{ + text: 'Next', + action: this.tour.next, + classes: 'btn' + }]; + } else { + const buttonsAreObject = _.isPlainObject(buttons); + // Can pass in an object which will assume a single button + if (buttonsAreObject) { + this.options.buttons = [this.options.buttons]; + } + } } + } - this._attach(this.el); + /** + * Triggers `before-show` then renders the element, shows it, sets up popper and triggers `show` + * @private + */ + _show() { + this.trigger('before-show'); + + if (!this.el) { + this.render(); + } + + this.el.hidden = false; + // We need to manually set styles for < IE11 support + this.el.style.display = 'block'; + + document.body.setAttribute('data-shepherd-step', this.id); this.setupPopper(); + + if (this.options.scrollTo) { + setTimeout(() => { + this.scrollTo(); + }); + } + + this.trigger('show'); } } diff --git a/src/js/tour.js b/src/js/tour.js index a298cd11f..7876e2ce8 100644 --- a/src/js/tour.js +++ b/src/js/tour.js @@ -5,7 +5,18 @@ import { bindMethods } from './bind.js'; const Shepherd = new Evented(); +/** + * Class representing the site tour + * @extends {Evented} + */ export class Tour extends Evented { + /** + * + * @param {Object} options The options for the tour + * @param {Object} options.defaults Default options for Steps created through `addStep` + * @param {Step[]} options.steps An array of Step instances to initialize the tour with + * @returns {Tour} + */ constructor(options = {}) { super(options); bindMethods.call(this, [ @@ -38,7 +49,7 @@ export class Tour extends Evented { * When arg2 is defined, arg1 can either be a string or number, to use for the `id` for the step * When arg2 is undefined, arg1 is either an object containing step options or a Step instance * @param {Object|Step} arg2 An object containing step options or a Step instance - * @returns {Step} The newly added step + * @return {Step} The newly added step */ addStep(arg1, arg2) { let name, step; @@ -61,64 +72,6 @@ export class Tour extends Evented { return step; } - /** - * Removes the step from the tour - * @param {String} name The id for the step to remove - */ - removeStep(name) { - const current = this.getCurrentStep(); - - // Find the step, destroy it and remove it from this.steps - this.steps.some((step, i) => { - if (step.id === name) { - if (step.isOpen()) { - step.hide(); - } - - step.destroy(); - this.steps.splice(i, 1); - - return true; - } - }); - - if (current && current.id === name) { - this.currentStep = undefined; - - // If we have steps left, show the first one, otherwise just cancel the tour - this.steps.length ? this.show(0) : this.cancel(); - } - } - - /** - * Setup a new step object - * @param {Object} stepOptions The object describing the options for the step - * @param {String|Number} name The string or number to use as the `id` for the step - * @returns {Step} - */ - setupStep(stepOptions, name) { - if (_.isString(name) || _.isNumber(name)) { - stepOptions.id = name.toString(); - } - - stepOptions = Object.assign({}, this.options.defaults, stepOptions); - - return new Step(this, stepOptions); - } - - getById(id) { - for (let i = 0; i < this.steps.length; ++i) { - const step = this.steps[i]; - if (step.id === id) { - return step; - } - } - } - - getCurrentStep() { - return this.currentStep; - } - /** * Go to the previous step in the tour */ @@ -128,14 +81,14 @@ export class Tour extends Evented { } /** - * Calls done() triggering the 'cancel' event + * Calls done() triggering the `cancel` event */ cancel() { this.done('cancel'); } /** - * Calls done() triggering the 'complete' event + * Calls done() triggering the `complete` event */ complete() { this.done('complete'); @@ -143,7 +96,7 @@ export class Tour extends Evented { /** * Called whenever the tour is cancelled or completed, basically anytime we exit the tour - * @param event + * @param {String} event The event name to trigger */ done(event) { if (this.currentStep) { @@ -163,6 +116,25 @@ export class Tour extends Evented { this.trigger('inactive', { tour: this }); } + /** + * Gets the step from a given id + * @param {Number|String} id The id of the step to retrieve + * @return {Step} The step corresponding to the `id` + */ + getById(id) { + return this.steps.find((step) => { + return step.id === id; + }); + } + + /** + * Gets the current step + * @returns {Step|null} + */ + getCurrentStep() { + return this.currentStep; + } + /** * Go to the next step in the tour * If we are at the end, call `complete` @@ -177,6 +149,51 @@ export class Tour extends Evented { } } + /** + * Removes the step from the tour + * @param {String} name The id for the step to remove + */ + removeStep(name) { + const current = this.getCurrentStep(); + + // Find the step, destroy it and remove it from this.steps + this.steps.some((step, i) => { + if (step.id === name) { + if (step.isOpen()) { + step.hide(); + } + + step.destroy(); + this.steps.splice(i, 1); + + return true; + } + }); + + if (current && current.id === name) { + this.currentStep = undefined; + + // If we have steps left, show the first one, otherwise just cancel the tour + this.steps.length ? this.show(0) : this.cancel(); + } + } + + /** + * Setup a new step object + * @param {Object} stepOptions The object describing the options for the step + * @param {String|Number} name The string or number to use as the `id` for the step + * @return {Step} The step instance + */ + setupStep(stepOptions, name) { + if (_.isString(name) || _.isNumber(name)) { + stepOptions.id = name.toString(); + } + + stepOptions = Object.assign({}, this.options.defaults, stepOptions); + + return new Step(this, stepOptions); + } + /** * Show a specific step in the tour * @param {Number|String} key The key to look up the step by diff --git a/src/js/utils.js b/src/js/utils.js index e0f43bbdf..7276fbede 100644 --- a/src/js/utils.js +++ b/src/js/utils.js @@ -4,7 +4,7 @@ import Popper from 'popper.js'; /** * TODO rewrite the way items are being added to use more performant documentFragment code * @param html - * @returns {HTMLElement} + * @return {HTMLElement} The element created from the passed HTML string */ export function createFromHTML(html) { const el = document.createElement('div'); @@ -15,7 +15,7 @@ export function createFromHTML(html) { /** * Parse the position object or string to return the attachment and element to attach to * @param {Object|String} position Either a string or object denoting the selector and position for attachment - * @returns {Object} + * @return {Object} The object with `element` and `on` for the step */ export function parsePosition(position) { if (_.isObjectLike(position)) { @@ -41,7 +41,7 @@ export function parsePosition(position) { /** * @param obj * @param {Array} props - * @returns {*} + * @return {*} */ export function parseShorthand(obj, props) { if (obj === null || _.isUndefined(obj)) { @@ -88,7 +88,7 @@ export function setupPopper() { * Merge the global popperOptions, and the local opts * @param {String} attachment The direction for attachment * @param {Object} opts The local options - * @returns {Object} The merged popperOpts object + * @return {Object} The merged popperOpts object * @private */ function _mergePopperOptions(attachment, opts) { @@ -103,7 +103,7 @@ function _mergePopperOptions(attachment, opts) { /** * Sets up a popper centered on the screen, when there is no attachTo element * @param {Object} opts The config object - * @returns {*} + * @return {*} * @private */ function _setupCenteredPopper(opts) { diff --git a/yarn.lock b/yarn.lock index d85398c6a..09b3bc178 100644 --- a/yarn.lock +++ b/yarn.lock @@ -247,6 +247,10 @@ version "2.2.44" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.44.tgz#1d4a798e53f35212fd5ad4d04050620171cd5b5e" +"@types/node@*": + version "10.9.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.9.3.tgz#85f288502503ade0b3bfc049fe1777b05d0327d5" + "@types/sinon-chai@2.7.29": version "2.7.29" resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-2.7.29.tgz#4db01497e2dd1908b2bd30d1782f456353f5f723" @@ -405,6 +409,10 @@ JSONStream@^0.8.4: jsonparse "0.0.5" through ">=2.2.7 <3" +abab@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -422,12 +430,22 @@ acorn-dynamic-import@^3.0.0: dependencies: acorn "^5.0.0" +acorn-globals@^1.0.4: + version "1.0.9" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" + dependencies: + acorn "^2.1.0" + acorn-jsx@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e" dependencies: acorn "^5.0.3" +acorn@^2.1.0, acorn@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" + acorn@^5.0.0, acorn@^5.0.3, acorn@^5.6.0, acorn@^5.6.2: version "5.7.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5" @@ -799,7 +817,18 @@ babel-eslint@^8.2.5: eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" -babel-generator@^6.18.0, babel-generator@^6.26.0: +babel-generator@6.11.4: + version "6.11.4" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.11.4.tgz#14f6933abb20c62666d27e3b7b9f5b9dc0712a9a" + dependencies: + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.10.2" + detect-indent "^3.0.1" + lodash "^4.2.0" + source-map "^0.5.0" + +babel-generator@6.26.1, babel-generator@^6.18.0, babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" dependencies: @@ -921,7 +950,7 @@ babel-loader@^7.1.4: loader-utils "^1.0.2" mkdirp "^0.5.1" -babel-messages@^6.23.0: +babel-messages@^6.23.0, babel-messages@^6.8.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" dependencies: @@ -1216,7 +1245,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -1233,7 +1262,7 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: +babel-traverse@6.26.0, babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" dependencies: @@ -1247,7 +1276,7 @@ babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: invariant "^2.2.2" lodash "^4.17.4" -babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: +babel-types@^6.10.2, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: @@ -1256,14 +1285,14 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26 lodash "^4.17.4" to-fast-properties "^1.0.3" +babylon@6.18.0, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + babylon@7.0.0-beta.44: version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -1376,6 +1405,10 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + boom@2.x.x: version "2.10.1" resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" @@ -1788,6 +1821,50 @@ check-more-types@2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" +cheerio@0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35" + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "~3.8.1" + lodash "^4.1.0" + optionalDependencies: + jsdom "^7.0.2" + +cheerio@0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash.assignin "^4.0.9" + lodash.bind "^4.1.4" + lodash.defaults "^4.0.1" + lodash.filter "^4.4.0" + lodash.flatten "^4.2.0" + lodash.foreach "^4.3.0" + lodash.map "^4.4.0" + lodash.merge "^4.4.0" + lodash.pick "^4.2.1" + lodash.reduce "^4.4.0" + lodash.reject "^4.4.0" + lodash.some "^4.4.0" + +cheerio@1.0.0-rc.2: + version "1.0.0-rc.2" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash "^4.15.0" + parse5 "^3.0.1" + chokidar@1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1961,6 +2038,14 @@ color-diff@^0.1.3: version "0.1.7" resolved "https://registry.yarnpkg.com/color-diff/-/color-diff-0.1.7.tgz#6db78cd9482a8e459d40821eaf4b503283dcb8e2" +color-logger@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/color-logger/-/color-logger-0.0.3.tgz#d9b22dd1d973e166b18bf313f9f481bba4df2018" + +color-logger@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/color-logger/-/color-logger-0.0.6.tgz#e56245ef29822657110c7cb75a9cd786cb69ed1b" + color-name@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" @@ -2313,6 +2398,15 @@ css-rule-stream@^1.1.0: ldjson-stream "^1.2.1" through2 "^0.6.3" +css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + css-selector-tokenizer@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" @@ -2328,10 +2422,24 @@ css-tokenize@^1.0.1: inherits "^2.0.1" readable-stream "^1.0.33" +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + cssesc@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" +cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" + +"cssstyle@>= 0.2.29 < 0.3.0": + version "0.2.37" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" + dependencies: + cssom "0.3.x" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2537,6 +2645,14 @@ destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" +detect-indent@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-3.0.1.tgz#9dc5e5ddbceef8325764b9451b02bc6d54084f75" + dependencies: + get-stdin "^4.0.1" + minimist "^1.1.0" + repeating "^1.1.0" + detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -2614,7 +2730,7 @@ doiuse@^2.4.1: through2 "^0.6.3" yargs "^3.5.4" -dom-serializer@0: +dom-serializer@0, dom-serializer@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" dependencies: @@ -2633,12 +2749,25 @@ domelementtype@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" +domhandler@2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + dependencies: + domelementtype "1" + domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" dependencies: domelementtype "1" +domutils@1.5, domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + domutils@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" @@ -2806,6 +2935,10 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" +entities@1.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" + entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -2832,7 +2965,7 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -escape-html@~1.0.3: +escape-html@1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -2840,6 +2973,109 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +escodegen@^1.6.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +esdoc-accessor-plugin@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esdoc-accessor-plugin/-/esdoc-accessor-plugin-1.0.0.tgz#791ba4872e6c403515ce749b1348d6f0293ad9eb" + +esdoc-brand-plugin@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esdoc-brand-plugin/-/esdoc-brand-plugin-1.0.1.tgz#7c0e1ae90e84c30b2d3369d3a6449f9dc9f8d511" + dependencies: + cheerio "0.22.0" + +esdoc-coverage-plugin@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/esdoc-coverage-plugin/-/esdoc-coverage-plugin-1.1.0.tgz#3869869cd7f87891f972625787695a299aece45c" + +esdoc-ecmascript-proposal-plugin@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esdoc-ecmascript-proposal-plugin/-/esdoc-ecmascript-proposal-plugin-1.0.0.tgz#390dc5656ba8a2830e39dba3570d79138df2ffd9" + +esdoc-external-ecmascript-plugin@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esdoc-external-ecmascript-plugin/-/esdoc-external-ecmascript-plugin-1.0.0.tgz#78f565d4a0c5185ac63152614dce1fe1a86688db" + dependencies: + fs-extra "1.0.0" + +esdoc-integrate-manual-plugin@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esdoc-integrate-manual-plugin/-/esdoc-integrate-manual-plugin-1.0.0.tgz#1854a6aa1c081035d7c8c51e3bdd4fb65aa4711c" + +esdoc-integrate-test-plugin@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esdoc-integrate-test-plugin/-/esdoc-integrate-test-plugin-1.0.0.tgz#e2d0d00090f7f0c35e5d2f2c033327a79e53e409" + +esdoc-lint-plugin@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/esdoc-lint-plugin/-/esdoc-lint-plugin-1.0.2.tgz#4962930c6dc5b25d80cf6eff1b0f3c24609077f7" + +esdoc-publish-html-plugin@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/esdoc-publish-html-plugin/-/esdoc-publish-html-plugin-1.1.2.tgz#bdece7bc7a0a3e419933503252db7a6772879dab" + dependencies: + babel-generator "6.11.4" + cheerio "0.22.0" + escape-html "1.0.3" + fs-extra "1.0.0" + ice-cap "0.0.4" + marked "0.3.19" + taffydb "2.7.2" + +esdoc-standard-plugin@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esdoc-standard-plugin/-/esdoc-standard-plugin-1.0.0.tgz#661201cac7ef868924902446fdac1527253c5d4d" + dependencies: + esdoc-accessor-plugin "^1.0.0" + esdoc-brand-plugin "^1.0.0" + esdoc-coverage-plugin "^1.0.0" + esdoc-external-ecmascript-plugin "^1.0.0" + esdoc-integrate-manual-plugin "^1.0.0" + esdoc-integrate-test-plugin "^1.0.0" + esdoc-lint-plugin "^1.0.0" + esdoc-publish-html-plugin "^1.0.0" + esdoc-type-inference-plugin "^1.0.0" + esdoc-undocumented-identifier-plugin "^1.0.0" + esdoc-unexported-identifier-plugin "^1.0.0" + +esdoc-type-inference-plugin@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/esdoc-type-inference-plugin/-/esdoc-type-inference-plugin-1.0.2.tgz#916e3f756de1d81d9c0dbe1c008e8dafd322cfaf" + +esdoc-undocumented-identifier-plugin@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esdoc-undocumented-identifier-plugin/-/esdoc-undocumented-identifier-plugin-1.0.0.tgz#82e05d371c32d12871140f1d5c81ec99fd9cc2c8" + +esdoc-unexported-identifier-plugin@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esdoc-unexported-identifier-plugin/-/esdoc-unexported-identifier-plugin-1.0.0.tgz#1f9874c6a7c2bebf9ad397c3ceb75c9c69dabab1" + +esdoc@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/esdoc/-/esdoc-1.1.0.tgz#07d40ebf791764cd537929c29111e20a857624f3" + dependencies: + babel-generator "6.26.1" + babel-traverse "6.26.0" + babylon "6.18.0" + cheerio "1.0.0-rc.2" + color-logger "0.0.6" + escape-html "1.0.3" + fs-extra "5.0.0" + ice-cap "0.0.4" + marked "0.3.19" + minimist "1.2.0" + taffydb "2.7.3" + eslint-loader@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.0.tgz#61334c548aeb0b8e20ec3a552fb7a88c47261c6a" @@ -2943,6 +3179,10 @@ espree@^4.0.0: acorn "^5.6.0" acorn-jsx "^4.1.1" +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -2959,7 +3199,7 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -3436,6 +3676,14 @@ from@~0: version "0.1.7" resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" +fs-extra@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + fs-extra@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" @@ -3452,6 +3700,14 @@ fs-extra@4.0.1: jsonfile "^3.0.0" universalify "^0.1.0" +fs-extra@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -3670,7 +3926,7 @@ gonzales-pe@^4.0.3: dependencies: minimist "1.1.x" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -3857,7 +4113,7 @@ html-tags@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" -htmlparser2@^3.9.2: +htmlparser2@^3.9.1, htmlparser2@^3.9.2: version "3.9.2" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" dependencies: @@ -3868,6 +4124,16 @@ htmlparser2@^3.9.2: inherits "^2.0.1" readable-stream "^2.0.2" +htmlparser2@~3.8.1: + version "3.8.3" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" + dependencies: + domelementtype "1" + domhandler "2.3" + domutils "1.5" + entities "1.0" + readable-stream "1.1" + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -3958,6 +4224,13 @@ https-proxy-agent@^2.2.1: agent-base "^4.1.0" debug "^3.1.0" +ice-cap@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/ice-cap/-/ice-cap-0.0.4.tgz#8a6d31ab4cac8d4b56de4fa946df3352561b6e18" + dependencies: + cheerio "0.20.0" + color-logger "0.0.3" + iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -4575,6 +4848,26 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" +jsdom@^7.0.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e" + dependencies: + abab "^1.0.0" + acorn "^2.4.0" + acorn-globals "^1.0.4" + cssom ">= 0.3.0 < 0.4.0" + cssstyle ">= 0.2.29 < 0.3.0" + escodegen "^1.6.1" + nwmatcher ">= 1.3.7 < 2.0.0" + parse5 "^1.5.1" + request "^2.55.0" + sax "^1.1.4" + symbol-tree ">= 3.1.0 < 4.0.0" + tough-cookie "^2.2.0" + webidl-conversions "^2.0.0" + whatwg-url-compat "~0.6.5" + xml-name-validator ">= 2.0.1 < 3.0.0" + jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -4619,12 +4912,24 @@ json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + optionalDependencies: + graceful-fs "^4.1.6" + jsonfilter@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/jsonfilter/-/jsonfilter-1.1.2.tgz#21ef7cedc75193813c75932e96a98be205ba5a11" @@ -4679,6 +4984,12 @@ kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + known-css-properties@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.2.0.tgz#899c94be368e55b42d7db8d5be7d73a4a4a41454" @@ -4845,6 +5156,14 @@ lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" +lodash.assignin@^4.0.9: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" + +lodash.bind@^4.1.4: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" + lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -4857,6 +5176,22 @@ lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" +lodash.defaults@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + +lodash.filter@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" + +lodash.flatten@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + +lodash.foreach@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -4865,6 +5200,14 @@ lodash.isfinite@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" +lodash.map@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + +lodash.merge@^4.4.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" + lodash.mergewith@^4.6.0: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" @@ -4873,11 +5216,27 @@ lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" +lodash.pick@^4.2.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + +lodash.reduce@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" + +lodash.reject@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" + +lodash.some@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" + lodash.tail@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" -lodash@4.17.10, lodash@^4, lodash@^4.0.0, lodash@^4.1.0, lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0, lodash@~4.17.10: +lodash@4.17.10, lodash@^4, lodash@^4.0.0, lodash@^4.1.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0, lodash@~4.17.10: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -4988,6 +5347,10 @@ markdown-table@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.2.tgz#c78db948fa879903a41bce522e3b96f801c63786" +marked@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" + math-random@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" @@ -5537,6 +5900,12 @@ npm-run-path@^2.0.0: gauge "~2.7.3" set-blocking "~2.0.0" +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" @@ -5545,6 +5914,10 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" +"nwmatcher@>= 1.3.7 < 2.0.0": + version "1.4.4" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" + nyc@^12.0.2: version "12.0.2" resolved "https://registry.yarnpkg.com/nyc/-/nyc-12.0.2.tgz#8a4a4ed690966c11ec587ff87eea0c12c974ba99" @@ -5683,7 +6056,7 @@ optimist@0.6.x, optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.2: +optionator@^0.8.1, optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" dependencies: @@ -5843,6 +6216,16 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse5@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" + +parse5@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + dependencies: + "@types/node" "*" + parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" @@ -6449,6 +6832,15 @@ read-pkg@^3.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@1.1: + version "1.1.13" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + "readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -6608,6 +7000,12 @@ repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" +repeating@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-1.1.3.tgz#3d4114218877537494f97f77f9785fab810fa4ac" + dependencies: + is-finite "^1.0.0" + repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" @@ -6657,7 +7055,7 @@ request@2.87.0: tunnel-agent "^0.6.0" uuid "^3.1.0" -request@^2.78.0, request@^2.87.0: +request@^2.55.0, request@^2.78.0, request@^2.87.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" dependencies: @@ -6882,7 +7280,7 @@ sass-loader@^7.1.0: pify "^3.0.0" semver "^5.5.0" -sax@^1.2.4: +sax@^1.1.4, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -7743,6 +8141,10 @@ symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" +"symbol-tree@>= 3.1.0 < 4.0.0": + version "3.2.2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + synesthesia@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/synesthesia/-/synesthesia-1.0.1.tgz#5ef95ea548c0d5c6e6f9bb4b0d0731dff864a777" @@ -7760,6 +8162,14 @@ table@^4.0.1, table@^4.0.3: slice-ansi "1.0.0" string-width "^2.1.1" +taffydb@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.7.2.tgz#7bf8106a5c1a48251b3e3bc0a0e1732489fd0dc8" + +taffydb@2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.7.3.tgz#2ad37169629498fca5bc84243096d3cde0ec3a34" + tapable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" @@ -7897,18 +8307,22 @@ topo@2.x.x: dependencies: hoek "4.x.x" +tough-cookie@^2.2.0, tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" dependencies: punycode "^1.4.1" -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - dependencies: - psl "^1.1.24" - punycode "^1.4.1" +tr46@~0.0.1: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" trim-newlines@^1.0.0: version "1.0.0" @@ -8260,6 +8674,10 @@ wbuf@^1.1.0, wbuf@^1.7.2: dependencies: minimalistic-assert "^1.0.0" +webidl-conversions@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" + webpack-cli@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.0.tgz#d71a83687dcfeb758fdceeb0fe042f96bcf62994" @@ -8375,6 +8793,12 @@ websocket-extensions@>=0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" +whatwg-url-compat@~0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf" + dependencies: + tr46 "~0.0.1" + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" @@ -8472,6 +8896,10 @@ x-is-string@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" +"xml-name-validator@>= 2.0.1 < 3.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" + xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e"